`
mx19841031
  • 浏览: 76112 次
  • 性别: Icon_minigender_2
  • 来自: 西安
社区版块
存档分类
最新评论
阅读更多

班里一同学总结的,呵呵。虽然还是不够全面,但是还是可以用来对付一些笔试面试的。

一.基本数据类型(WINDOWS32位机下)

Char 1个字节
Short 2
Int   4
Long 4
Float 4
Double 8
Long double 10
指针: 32位机. 4个字节.
浮点数双精度的比较;
   Float f;
   判断F是否为0
      If( f>=-0.00001&&f<=0.00001){ =0} else {!=0};
------------------------------------------------------------------------------
-----------------------------------
二.修饰保留字.
Const:
Const char*p//p 指向的内容不能被修改
Char const *p; // p指针不能修改
Const type fun(); // 返回值类型为一个const type类型,不能修改
Fun( const char *p); fun( const A &a) //保护指针,引用传递的值不被修改.
类成员函数:中 fun() const; //表明FUN不能修改成员变量,不调用非const 成员函数.


Volatile:

修饰变量时,确保变修改后保存在内存中,每次取数从内存中取.

Static:

静态变量: 保存于数据段中., 只初始化一次.
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就
是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同
。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文
件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作
用域, 即只在定义该
变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作
用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中
引起错误。
  从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了
它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。

  static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该
说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文
件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文
件。

static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其
他文件单元中被引用;作用域限于本文件!

  static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一
次调用函数时依据上一次结果值进行改变;
如: fun()
{
Static int m=0;
M++;
Cout<<m<<endl;
}
     调用:
Fun();
Fun();
输出: 1
       2

  static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个
被调用中维持一份拷贝。作用域限于本文件

 

------------------------------------------------------------------------------
---------------------------------------
三.内存使用:

程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 即数据段)中,动态申请数
据存在于( 堆)中。
   分配方式有三种,请记住:
-1- 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局
变量、常量,静态变量.
-2- 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。
-3- 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的
内存。

--------动态申请内存:---------------

Malloc/free 与 new/delete 的区别;

前者: 是C的库函数. 在C++中创建对像时,不会调用构造函数,FREE时也不会调用析构函数
.
后者: 是C++中运算符, 创建析构对象都会调用构造函数,与析构函数.

注意:
      Free(p)或delete p后, P成为野指针, 并非为空, (P所指地址不变,只是所指内存已
释放)
      两次释放P会出错.
      最好,释放后加个P=NULL. 空指针多次释放不会出错.
------------------------------------------------------------------------------
---------------------------------------
四.运算符:
++,--操作:
      A++ :   A加一后, 表达式返回A加一前的附本,(非左值)
      ++A:    A加一后,表达式返回加一后的A.(左值)

位运算.
     使用异或交换数据: 交换A与B的值
                       A^=B;        即: A=A^B;
                       B^=A;           B=B^A;
                       A^=B;           A=A^B;
------------------------------------------------------------------------------
---------------------------------------
五.语句:
       For(A;B;C)   C语句是在每次循环后才执行.
       如: y=10;
for( i=0;i<10;y=++i)
{
   Cout<<y<<endl;// 第一次输出是10.
}
     循环语句设计:

             尽量小循环放外面,大循环放里面.-----原因减少循环之间的切换.

------------------------------------------------------------------------------
---------------------------------------
六.函数设计:
参数传递选择--------
   作为输入参数的,应该用CONST作保护 如:strcpy(char*str1,const char*str2)
      要修改函数外面的变量时可用 :
              1, 指针传递: 即把变量地址传入函数; 如: FUN( int**m);
                  调用时: int m=0;
                           FUN(&m);
              2. 引用传递: FUN(int &m),调用时:int m=0; fun(m);
              3. 如果只要修改一个外面的变量,也可以用返回值解决,但是多个的话就要
用上面两种方法中的一种.
内部变量:
       Static 变量;(注意);
        FUN()
         {
            Static int m=0;
               ……..
         }
     其中M 只初始化一次. 每次调用FUN()后,都会在前一次调用的基础上进行修改M 值

函数指针:
     如: void (*pFun)(int); 则pFun 为一个函数指,函数参数必须为一个INT参数.


                     调用:
                            pFun=FUN;
                            pFun(b); 或 (*pFun)(b); //一定要加个括号;
              (主要用于回调函数设计)

              另一种定义:
                 Typedef void (*pFun)(int a);
                 则pFun成为一个函数参数为一个INT的函数指针类型.
                 定义: pFun p=FUN;
   函数返回:
           不要返回栈内存指针;
            如: char* fun()
                  {
                       Char a[]=”kdkdk”;///栈中的一块内存
                       Return a;///返回栈中内存地址。
                  }
(面向对象的函数设在后面);
------------------------------------------------------------------------------
----------------------------------------
七.指针与数组;
     指针++,--;
            Int *p;
             如果p++后,则P的值应该是增加4
             指针的累加与它自己的类型有关.
     Char str[]=”akakak”;
Strlen(str) 是求串的长度, 所以一定要小心那个’\0’结束符;
Strcpy(str1,str2);, ///一定要小心’\0’

 

------------------------------------------------------------------------------
----------------------------------------
                     面向对象:
一. 类
默认四个函数: 无参数构造函数, 拷贝构造函数(浅拷贝), 赋值函数(浅), 析构函数.

重写赋值函数时,注意要避免自赋值.(参考高质量C++,string类的编写)
--------------------------------------------------------------------------
函数重载: 同一区域内,函数名相同,参数列表不同.(略)---实现编译时多态

函数覆盖: 在子类与父类之间. 由虚函数产生.--------------运行时多态
            Class A
            {
               Virtual void fun(){}
             };
             Class B: public A
             {
                  Void fun(){}
             }
          则子类中的fun()覆盖了父类中的fun();

函数隐藏: 在子类与父类之间, 不是虚函数,但是函数名相同,参数列表不一定相同.
           子类函数会隐藏父类的同名函数.
          Class A
          {
               Void Fun 1();
               Void Fun2();
           }
           Class b : pubic A
           {
               Void Fun1();
               Void Fun2(int);
           }
           则fun1,fun2都隐藏了父类的同名函数.

基类指针与子类指针的使用:
       假设A为父类,B为子类;
定义: B b;
       A*pA=&b;/// pA只能调用A类中的函数,和B中继承了A中的虚函数.
                /// 但是不能调用,A中被覆盖的函数与B类中的其它函数.


       B*pB=&b;//// pB只能调用B类中的所有可访问函数,和A中继承下来的所有
/////// 公有函数. 但是不能调用A中被B隐藏或覆盖的函数.
--------------------------------------------------------
带virtual 的析构函数:
      Class A
      {
           Virtual ~A(){   cout<<”in A”<<endl; }
      }
      Class B: public A
      {
           Virtual ~B(){ cout<<”in B”<<endl;}
      }
定义:
     A*Pa=new B;
     Delete pa;
   输出:in A
         In B
但是如果,A中的析构函数没有virtual, 则结果只是:in A
原因: 不明!

类中回调函数设计:
        使用友元函数,或 static 函数。
        原因:两者不存在this指针。
        如果要修改对象成员,则可以把对象指针或引用传入函数。
        如: static void fun(A*Pa),,,or   static void fun(A&a);
面向对象函数设计:
      Void fun(A a) -----------------//出现临时对象
       {
           -----------其它代码;
           A aa;
           Return (aa);--------------//出现临时对象;
       }
优化后:
      Void fun(A&a)
      {
           ---------其它代码
           RETURN (A());
      }

 

类大小计算:
空类,大小不为0;
static成员变量,当sizeof()求类对象大小时,static变量不会计入其中。
其它参考sizeof()专题
解决头文件重复包含:
1.#pragma once.
2. ifndef/define/endif

------------------------------------------------------------------------------
----------------------------------------
二.运算符重载。
       赋值: A& operator=(A&other) //返回引用。
              {
                  避免自赋值;
                   ---------其它代码---------
                  Return *this;
               }
        前++:A& operator++()///////自加后返回本身。返回值为引用。
              {
                 This->value+=1;
                 Return *this;
               }
         后++:A operator++(int)/////int 用于区另前加加,还是后加加。//值返回

               {
                  A temp(*this);          /////自加后,返回一个自加前的附本。

                  *this->value+=1;
                  Return temp;
                }
非类成员函数++,定义(友元)
       A& operator++(A&a)//前加加
       A operator++(A&a,int)//后加加。
       函数实现同上。
(其中减减的与++类似)

多继承有待补充;?/???????

 


模板

 

 


------------------------------------------------------------------------------
----------------------------------------
                                 数据结构与算法
(最好这里能做到于老师的标准:看到题目就能写出算法)
---------------------------------------------------------------------
链表操作:(不带头结点,书上的都是带头结点的)
主要是不带头结点的操作,记住可能要修改头指针,所以注意函数参数与返回值设计。(
细心);(华为面试)
静态链表
栈队列的使用:
          二叉树遍历,图遍历,非递归实现。(华为,三G门户面试);
串操作:
          KMP算法(模式匹配) (深信服笔试);
二叉树:
          三种遍历—递归与非递归。(华为面试);
          计算叶子数,计算结点数。(华为笔试,迅雷笔试);
          哈夫曼树--------(不知什么公司的面试题了);
图:
       十字链表结构
       两种遍历---深度(非递归与递归),广度-----队列。
查找:
       二分查找-----递归与非递归。(普信笔试)
        二叉排序树
       红黑树(了解,深信服面试)set ,map内部使用。
       B-,B+树,了解。
       键树-----用二叉对表示,键的匹配。
       哈希表------哈希函数编写,解决冲突的方法4个(深信服面试);
内部排序:
        插入排序
        快排
        堆排序,堆操作。
        归并排序------------各种形式的归并(QQ笔试);
        基数排序。
        (记住各种排序的复杂度,最好会自己计算.)


其它算法:
       Strcpy, strcmp, strcat, memcpy, string类的编写。

最大公约数,最小公倍数,素数,PI计算。

       链表环判断,链表交点判断。找链表中间结点,链表反序。(华为面试)
       八皇后------深信服笔试,(一个朋友的QQ面试)

STL:
      Vertor List set map, 使用与内部实现。
------------------------------------------------------------------------------
----------------------------------------

 

 

--------------------系统编程(windows or unix)------------------------------

(可以在windows 与UNIX中选择一个,如果两个都行就更好)

多进程
多线程
进程/线程间同步与通信.-------这个也很重要.
       CriticalSection, mutex, event, semaphore.区别与使用
       Unix下不懂.
网络编程-------select()与setsockopt(),多播,广播.问得最多.
         最好能写出所有常的SOCKET函数,和基本流程.

TCP/IP协议, TCP, IP ,UDP 头的组成.各个控制位的作用.
地址分类,子网,子网掩码,多播地址,广播地址,网络号,主机号.
MFC下的 SendMessage()与PostMessage()区别.
-----------------------------------------------------------------
数据库:
        多个关系表设计,
        基本SQL语句的编写,嵌套查询,多表查询
操作系统:
        P---V操作。生产者与消费者。用代码实现。(华为面试);
         (A一天生产3个饼,B一天生产4个饼,C一天吃10个,现有100个饼,用PV操作

             编程,问多少天可以吃完)

    ------------------------项目----------------------------

如果你没有项目,那你就把自己的课程设计也搬出来,不要怕别人笑你.千万不要说大话,什
么东西我很牛B,面试官几句话可以试出你来.自己有料的地方一定要突出给他看.

项目分析:
系统功能-》整体架构-》自己负责的模块-》遇到的困难-》有待改进的地方-》存在的瓶颈
,与解决方案。
     (个人认为按上面的顺序分析项目,面试前一定要先自己对自己介绍下项目)


------------------------------面试细节-----------------------------------
1---面试进门后,一定要向面试官问好,等面试官示意坐下时才坐下. 面试完后, 要道谢,
如果对方和你握手,一定要站起来
   握手要有力,表达自己的诚意.(可以说:希望我有机会为公司效力…等等之类的话);

2---当问及工资问题时,(书面形式写期望工资) 一定要说按公司薪水制度.
    原因: 刚从学校出对公司没有贡献,工资应该和贡献成正比,按公司的薪水制度比较合
理.

3-----描术自己的强项??弱点???职业目标??,性格??自我介绍??为什么要选择做这个职位
/公司?? 用英语描术学校,家乡(华为面试)
   (最好中英文都会表达,一定要作好这些准备)
4---你有什么问题要问吗????不要关涉工资和培训.,要表明自己加入公司的决心.
(中大一学生的回答:是否进入公司就可以接手项目,个人觉得不错)

6---越简单的题目越是考你的细心.所以要注意细节,小心再小心.

7---说话要表现自我,千万不能说自己
什么很了不起….绝不可说大话,错了就是错了,要承认.
   不会的,也要直接说不会(也可请教),会的就直接说出来.,不要吞吞吐吐,不要不懂装懂
.
   如果面试官说自己错了,但自己发现不了,可以请教下面试官(能不能指点下我哪里错了
,我真看不出来),虑心学习,并改正.即使BS了,也要抵住压力,不要就起身走人,要请教面试
官,错在哪,应该怎么做.??要顺着面试官的意思,不要与其争执.一定要抗压力,抵住.
8—成绩问题:
       主要是针对和我一样成绩很差的同学。当面试官问到怎么你的成绩那么差。你一定
要想到好的解围方法。他不是看不起你而是给你施加压力,看你在压力面前怎么样解决问
题,能不能抵住压力。
9---自信,一定要自信,但不是自认清高。
    当问到你是哪个学校的,“汕头大学”这四个字要说响亮点。
    不要怕周围的人是什么大的,而我们是汕大的,再不说扇死你。


--
    有一个目标,我要在毕业后两年内完成

    无论结果怎么样,我都会一直坚持下去

分享到:
评论

相关推荐

    联发科 MTK 笔试面试准备

    给准备联发科公司的童鞋准备,希望对大家有所帮助。

    中国电信笔试面试必知的资料

    中国电信作为中国三大主要电信运营商之一,其笔试...总之,中国电信笔试面试准备需要全面涵盖行业知识、企业理解、技术实践、沟通技巧等多个方面。通过深入学习和实践,不断提升自我,才能在激烈的求职竞争中占据优势。

    C++笔试面试宝典2009版与C++ String深入详解2.0版

    综上所述,这五个文档涵盖的范围从C++的笔试面试准备,到字符串处理,再到标准库的使用,再到C语言难点的攻克,以及高质量编程指南的书写,全面覆盖了C和C++的基础、进阶和实战应用。这些资料对于初学者和有经验的...

    各大公司笔试面试题目以及一些经验

    本资源包含各大公司的笔试题目和面试经验分享,旨在帮助求职者更好地准备这些挑战。 首先,关于笔试部分,通常IT公司的笔试会涵盖以下几个方面的知识: 1. **编程基础**:包括但不限于C、C++、Java、Python等主流...

    Java笔试面试及简历相关

    Java作为一门广泛应用于企业级应用开发的编程语言,其笔试和面试环节对于求职者来说至关重要...总结,Java笔试面试准备不仅需要扎实的理论基础,还需要实践经验的积累。结合简历的完善,将有助于在求职竞争中脱颖而出。

    c#笔试面试题 c#笔试面试题

    下面,我们将深入探讨一些可能出现在C#笔试面试中的关键知识点。 一、基础语法 1. 变量与数据类型:理解C#中的基本数据类型(如int、string、bool等)以及引用类型,了解变量声明和初始化的规则。 2. 控制流:包括...

    嵌入式软件笔试面试题目大汇总.zip

    本资料包“嵌入式软件笔试面试题目大汇总.zip”包含了丰富的面试和笔试资源,旨在帮助求职者更好地准备相关面试。 首先,我们要关注的是“进程与线程”的概念。进程是操作系统中运行程序的实例,而线程则是进程中...

    南瑞继保笔试面试题及面经分析

    总的来说,这份《南瑞继保笔试面试题及面经分析》为应聘者提供了全面的准备指南。不仅有理论知识的复习,还有面试技巧的学习,以及对企业文化的理解。通过充分准备,相信每一位有志于加入南瑞继保的同学都能在竞争中...

    C++笔试面试题库

    这份题库源自何海涛和《剑指Offer——名企面试官精讲典型编程题》一书,是面试准备的重要参考资料。 在C++的笔试面试中,通常会涉及以下几个关键知识点: 1. **基础语法**:这是C++学习的起点,包括变量、数据类型...

    JAVA笔试面试宝典--JAVA笔试面试必看

    本“JAVA笔试面试宝典”旨在为准备Java面试的开发者提供详尽的指导,帮助你充分准备,增加成功的机会。 一、Java基础 1. Java语法:理解基本的类、对象、接口、继承和多态等概念,熟悉构造器、方法重载和重写、...

    历年华为笔试面试题目及面试经历汇总

    本资源“历年华为笔试面试题目及面试经历汇总”显然是一个集大成者,包含了华为招聘过程中可能遇到的各种问题和面试者的亲身经验,这对于有意加入华为的求职者来说是一份宝贵的参考资料。 首先,我们要了解华为笔试...

    Java常见笔试、面试题目深度剖析

    这份资源"Java常见笔试、面试题目深度剖析"显然是为了帮助求职者更好地准备相关考试而设计的。以下将对Java笔试和面试的一些核心知识点进行详细的阐述: 1. **基础语法**:Java的基础包括变量、数据类型、运算符、...

    最新各互联网BAT等笔试面试真题复习资料

    "最新各互联网BAT等笔试面试真题复习资料"这一标题明确指出了这份资源的内容核心,即互联网行业内知名企业,特别是BAT(百度、阿里巴巴、腾讯)的笔试和面试真题集,用于考生的复习准备。这些资料通常包含了各种技术...

    各大银行及国企笔试面试

    本资料集合了各大银行及国企在历年招聘过程中的笔试面试真题,为求职者提供了宝贵的参考资源。 笔试部分通常包括以下几个方面: 1. **专业知识测试**:针对应聘岗位,如银行业务会涉及金融知识、经济政策、会计...

    中国移动公司笔试面试参考

    中国移动公司笔试面试参考 中国移动公司笔试面试参考 中国移动公司笔试面试参考 中国移动公司笔试面试参考 中国移动公司笔试面试参考

    100个大学毕业生求职笔试面试真题大全

    《100个大学毕业生求职笔试面试真题大全》是一个为即将步入职场的大学生们精心准备的资源集合,旨在帮助他们在求职过程中顺利通过笔试和面试的挑战。这份压缩包文件包含了一个173页的“下载地址目录单”文档以及一个...

    2017互联网笔试面试

    在2017年的互联网笔试面试中,求职者们面临了一系列具有挑战性的考核,其中网易作为知名的互联网公司,其笔试面试环节尤其引人关注。在这个过程中,应聘者不仅需要具备扎实的技术基础,还需要对互联网行业有深入的...

    java笔试面试题 (汇总)

    Java笔试面试题是Java开发者在求职过程中必须面对的重要环节,涵盖了基础语法、数据结构、算法、JVM、多线程、网络、设计模式等多个方面。以下是对这些知识点的详细解析: 1. **Java基础语法**:这是Java学习的起点...

    JAVA笔试面试题库

    以上只是Java笔试面试题库中可能涉及的部分关键知识点,实际题目会更加丰富和深入,涵盖JVM原理、数据库操作、网络编程、Spring框架等。准备面试时,不仅要熟悉这些概念,还要能够通过实践来加深理解,解决实际问题...

    IT面试之腾讯笔试面试大礼包.zip

    "IT面试之腾讯笔试面试大礼包.zip"显然是一个专门为准备腾讯面试的求职者提供的资源集合。这个压缩包可能包含了大量的面试技巧、常见问题、笔试题库以及相关领域的专业知识,旨在帮助应聘者更好地应对腾讯的选拔过程...

Global site tag (gtag.js) - Google Analytics