阿里巴巴C++面经

1、先做个自我介绍
2、你本科参加过那些比赛印象最深的是哪一个,担任的角色,做了哪些工作
3、看你简历上项目就写了现在的毕设,你做过其他的项目吗?
4、说说对c++面向对象的理解?封装继承多态的存在是为了什么、有什么优点吗?
5、说说多态实现原理
6、纯虚函数的作用、为什么要有纯虚函数(他又问,虚函数也可以重定义呀,纯虚函数出现到底是为了什么,他又讲到java的接口)
7、C++类型转换方式有哪些?分别说说。dynatic_cast失败会怎么样?什么时候返回空,什么时候抛出异常
8、空类。编译器会为之生成什么成员?(中间还讨论到:我说默认构造函数只有在编译器需要的时候才会产生。
他问我你什么意思默认函数就是编译器会自动生成的啊?)【难道默认构造函数不是只有编译器需要时才产生吗,哼】
9、说说对虚析构函数的理解?什么时候要把析构函数声明为virtual
10、平常用什么容器?说说常用的容器。vector的底层实现、扩容原理、size、capacity、resize、reserve四个函数
11、map底层实现、unordered_map底层实现?哪个写(插入、删除)快?
各个容器迭代器失效的情况。
12、程序运行出错,抛出异常,怎么调试?用过什么调试工具?gdb调试?(程序运行出错,会生成一个什么call(音译)文件???
面试官说的什么call(音译)文件是什么?)
13、知道什么智能指针?说说shared_ptr实现原理、线程安全不?
14、说说你理解的进程、线程?进程的内存分布?孤儿进程?
15、怎么理解物理内存、逻辑内存?如果中国每个人都有e-mail,把所有人e-mail都存到内存中,存得下吗?(13亿人,每人20字节,估算共多少内存)
16、多线程
17、数组与链表
18、给一个无序数组,求排好序后得每个元素在有序序列中的下标,要求原数组元素顺序不变?
给一个有序数组,从中拿出一个子序列(无序),求其排好序后在原数组的下标
19、一条记录有十个字段,一个文件***十亿条记录,要求把每个字段放到一个文件中,怎么办?

1、照例自我介绍;
2、项目;
3、做项目途中遇到的困难;
4、值传递和地址传递;
5、指针和引用;
6、const int *p和int * const p的区别;
7、C里内存的五个分区,着重讲一下堆和栈的区别(趁势又讲了一波为啥值传递swap函数传不成功,因为在栈区,结束会销毁);
8、C语言局部变量在堆区还是栈;
9、C++中类里static成员变量与普通的成员变量有什么不同;
10、静态函数呢?
11、静态函数访问普通成员变量和静态成员变量/普通成员函数访问普通成员变量和静态成员变量;(我自己这块也是糊的,就被绕晕了)
12、知道STL吗?讲一下STL里的list;
13、TCP跟UDP(区别,TCP的三次握手,为啥要三次没问,但是我抢答了)

1、定义一个链表;
2、在他给定的链表内实现删除某个指定值的节点(一紧张就直接背剑指上的写法了,写完小哥哥说我并没有定义要被删除的节点,定义的是要被删除的值,然后请大家注意各种边界条件啊!被小哥哥批评不考虑整个链表只有一个指针的情况)
3、定义一个二叉树;
4、二叉树的前序遍历;(写代码的规范性啊,缩进没注意也被批评了)
5、二叉树的深度优先遍历;
6、两个栈实现一个队列;
7、找1000个数里最大的K个数(惨兮兮的用最大最小堆在做,写了一半小哥说你直接用map不就完了,我说没成想能用STL的函数)
Q:sizeof和strlen的区别?
A:你们都懂得
Q:一个int大概多大?
A:32位4个字节,64位8个字节
Q:int在内存中字节排布?
A:小端序
Q:虚函数指针什么时候会出现?
A:在有虚函数的时候~
Q:static的作用?
A:都懂得,这里不展开了
Q:多个进程同时监听一个UDP端口会怎么样?
A:不懂……
Q:你可以了解一下这方面。进程的内存结构?
A:内核、栈、动态链接库、堆、静态区、代码段、保留区
Q:静态变量和全局变量在哪个区?
A:静态区……
Q:++i和i++的区别?
A:++i效率比较高。
Q:虚基类和普通基类的区别?
A:菱形继承问题
Q:空类的大小?
A:1byte
Q:为啥?
A:不懂…
Q:引用和指针的区别?
A:都是用指针实现的。
Q:进程间通信?
A:socket, 管道,消息队列,共享内存
Q:TCP三次握手?
A:讲了讲(忘了讲状态转移)

发表评论

电子邮件地址不会被公开。 必填项已用*标注