面试经验,实力和运气的并存。

先分享下我的面试经历:

拿到了金蝶的提前批次但是因为岗位不符合,我觉得一个岗位可能会影响以后的就业方向。所以我选择了放弃这个测试岗位。

到9月份校招开始了:

第一家360搜索:运气到来,通过了三面,却接来了offer候补,hr还是一个很好的人,告诉我他们部门大都是研究生,让我别停止,继续找工作,这让我顿时心里就明白了。

第二家腾讯到达2面,问道了gdb调试的一些比较偏门的参数,后来发现我自己在简历上写了自己懂gdb,这就是自己作死的一种结果。

第三家乐视,到达2面,二面面试官对gcc的参数有很浓厚的兴趣,-O这个参数是什么。。。原来是忧化。算是长见识了。通过这俩次都发现自己对这些常见命令的参数欠缺,于是开始恶补。还问了几个算法。答的不错。还写了俩个代码都得到面试官的认可。但是还是挂了。

第四家京东,一面挂,他问了我很多基础的东西,问我知不知道动态链接和静态链接的实现没有答上来,还有问了makefile的实现,其他都是c++的基础问题。没问算法,通过和同学交流干觉京东的面试和缘分更是挂钩。

5.。。。,去哪儿,一面挂,这家怪我没有弄清楚公司的招聘,我上去就和面试官说自己喜欢c++,结果面试官和我聊的到是很开心,但是挂的也很不留情。

4399  ,霸面,潜规则了。没有问什么,5分钟就出来了。

猎豹,到达hr面,面试主要了解操作系统方面的东西。ntfs和fat的区别,通过自己长期的装系统,在thoughtworks的老师那里讨来的github的开源文档,让我对这方面有了自己的一些见解。

经过这几次的面试,我觉得,实力+运气。。。

好吧,我觉得自己可能运气差了点,哈哈。

下面是我在其中遇到的问题,和我的看法,我也还在寻找,希望这些东西能够帮到大家。

C++的空类中默认的成员函数

      对于一个空类,编译器默认产生4个成员函数:

              默认构造函数,析构函数,拷贝构造函数,赋值函数

结构体中是否有构造函数,析构函数,成员函数。如果有结构体和类有什么区别。

Struct和class的区别:

      Struct默认的权限为public,class默认的权限是private

Struct继承的权限默认为public class为private;

Struct用来申明一个数据类型,class用来申明一个对象。

 

4种智能转化:

Static_cast:

1.用于类层次结构的转换

      这种智能转换上行转换是安全的,下行转换时是不能保证安全性的。

2.用于基本数据间的转换,

3.把空指针转换成目标类型的空指针

4.把任何数据类型转换成void

Reinpreter_cast

必须是指针,引用,可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针。(当从指针到整数再回到指针时所指向的值不变)

Const_cast:

可以修改const volatile类型修饰的变量的属性

Dynamic_cast

其他三个都是编译时转换,其实运行时转换

1.   上行转换时安全的

2.   多重上行转换是安全的

下行的智能转换:

转换成void*类型,必须包含虚函数,就说明她想让基类指针指向派生类的对象,运行时检测运行时类型信息,这个信息存在内的虚函数表中。

在下行转换时,检测原始类型是否真正指向一个目标类型如果是则转换,否则返回NULL,保证了其智能性和安全性。

指针和引用的区别:

1.   引用的非空性,任何情况下,都不能使用指向空值的引用

2.   引用必须在声明时初始化,指针在声明时可以先不初始化

3.   使用引用不需要测试他的合法性,指针总是要测试他的合法性

4.   引用从一而终,

5.   引用可以被当作左值使用

C++中的智能指针:

6.   shared_ptr,基于引用计数的智能指针。可随意赋值,直到内存的引用计数为0的时候这个内存会被释放。

循环引用:

Weak_ptr 弱引用解决循环引用问题;

循环引用为俩个智能指针成环互相指向,其要求都是计数为0时被释放,则都在等待对方先被释放。

Explicit:
       c+中的关键字,防止隐士转换

Memcpy和strcpy的区别:

       Strcpy是用来复制字符串使用已\0结束

      Memcpy是按照字节copy有指定长度,适合各种类型的复制。

Union的存储

      Union的存储问题

      Union{

           Chara[4];

           Int b;

}

a[0] = 1;

a[1] = 2;

a[3] = 3;

a[4] = 4;

b = 0x0005;

则a中的值被变为了什么

因为一般的操作系统都为小端字节序

低地址                                  高地址

栈中的分配:a[ 0,           1,            2,           3 ]

Int b:    0x5             0x0           0x0          0x0

这样的存储方式导致,a[0]的值被变成了0x5 。。。。。

虚继承是为了解决钻石问题。

排序                          时间复杂度

插入排序                      O(n2)

冒泡排序

选择排序

希尔排序

快速排序                                         nO(logn)

堆排序

归并排序

基数排序                                     O()d(n+r)

其中稳定的排序:

      冒泡,插入,归并,基数

 

 

 

 

 

 

 

 

你可能感兴趣的:(面试经验,实力和运气的并存。)