腾娱-C++ 服务器开发实习

一面

上来直接没自我介绍,开始八股

八股部分:

C++语法部分:

1.const关键字和#define,它们的作用时机在什么时候,以及如何取消#define?

2.static关键字的作用?

3.explicit关键字的作用?

4.虚析构函数的作用?为了防止什么问题?

5.虚函数表是如何继承的?派生类重写前后和基类的虚函数表是否相同?

6.new和delete与malloc和free的区别?

C++STL部分:

1.array和vector的区别?vector的增长机制?vector的扩容是否会对性能造成影响?在知道大致数量的情况下,如何减少扩容的情况或影响?

2.map和set丶unordered_map和unordered_set的区别?如果让你来实现某业务,你会如何选择这两类数据结构呢?它们两类,哪一部分的节点会更占用内存呢?

3.容器的迭代器失效出现在哪些容器中?失效了如何操作?

算法部分:

1.了解到的排序算法?

答出了堆排序 快排 归并 插入。

堆排序和快排的平均时间复杂度?

空间复杂度谁更低一些?

哪个排序算法是稳定的?

2.计算了一个结构体对齐。对齐方式是?如何指定对齐数?后面两个答的不太好。

Linux系统和网络部分:

1.什么会导致core文件?数据越界,除零会吗?内存泄露会吗?是否调试过core文件?

2.查看进程的命令?ps的咋使用的?显示出来的信息都有哪些?命令附加选项的含义?top咋使用的?如果使用top显示指定进程的id呢?如何切换一个文件的大小的单位显示?

3.grep命令咋使用的?筛选的规则是什么?

4.ls的使用?文件大小的变更,kb变成mb或者gb?

5.读写权限位的修改命令?更换用户的命令?

6.mv和cp的区别?

7.软连接会创建吗?ln命令用过吗?

8.gdb用过吗?平时开发用什么调试的?gdb的熟练程度,一些调试命令?常用的编译软件是什么?

9.IPC通信的方式?System V共享内存的接口?是否映射文件?什么情况下使用System V共享内存呢?如何解决System V线程不安全的问题呢?共享内存的原理?

10.互斥锁?原子类型的使用的场景?

11.了解过哪些管道?两个管道有什么区别?

12.套接字是否可以作为IPC,常见套接字协议?两者有啥区别?两者的开销有什么不同?什么情况下比较使用TCP呢?

13.UDP,TCP服务器端的套接字建立流程?大概的步骤?

14.TCP的三次握手为什么不是两次?四次挥手中TIME_WAIT状态的作用?

15.阻塞IO与非阻塞IO的区别?

16.IO多路复用概念?epoll的优点?epoll的时间复杂度比前面两者高吗?epoll的咋减少拷贝的或者更高效的,通过什么机制?

项目拷打:仿muduo的并发服务器

反问。

二面

面试时间:1h。前半小时扣题,后半小时八股和信息询问。

1.自我介绍

2.手撕部分

面试给了一道手撕题,思路+本地IDE。乱序链表升序成有序链表的。要求用归并排序解决。

3.项目部分

项目是啥途径写的。

4.八股部分:

1.New,delete和malloc,free的相同和不同;

2.const修饰指针时,*在const左右都是什么含义;

3.通过方式什么方式来管理指针?

4.你刚刚提到的RAII是什么?具体怎么做的?

5.深拷贝和浅拷贝的区别?

6.大小端是什么?网络字节序是什么端?在网络编程中,你用过哪些字节序转换的接口;

7.服务器是如何测试的?最大并发是多少?

8.有没有遇到过CoreDump?如何定位?如何调试的?有没有设置过Core的文件生成路径?

9.有没有用过GDB?如何利用GBD来调试CoreFail,GDB如何打印出堆栈?

10.Linux相关的命令有没有什么了解的?如何动态地查看文件的文件流?

11.容器里面erase会发生什么?有什么方法可以正确地获取到erase后的迭代器?都有哪些进行erase不会失效的迭代器?

12.map和unordered_map有什么不一样的?自定义个类型作为它们的key,它们分别需要重载什么方法或者做什么操作来用确保正确地排序?

13.进程线程和携程它们的区别?

14.OSI七层模型?

15.介绍一下超时重传?

5.信息询问:

1.平时啥爱好,喜欢打游戏吗?

2.对投递的工作有没有什么了解?工作期望是什么?

3.可以接受加班吗?

4.可以实习多久?当前在哪?工作base在哪?

6.反问

全部评论
二面笔试没写出来,来的佬给分析一下二面是不是凉了,二面后多久有结果通知
点赞 回复 分享
发布于 昨天 17:40 江西

相关推荐

评论
6
10
分享

创作者周榜

更多
牛客网
牛客企业服务