实习经验分享:阿里-腾讯-网易-华为
魔鬼四月基本一直在面试,现在offer基本都下来了,简单记录一下面试题目,希望能对有的同学有所帮助,攒个人品。
以下按照时间线和公司分享一下我的面试经验,中间还有我妹子同时期其他的一些面试经验,基本没带答案,重点问题会标注一下。
我和我妹子都是 985 本硕 ,计算机专业,硕士研究方向是 高性能并行计算;
2019.3.15 阿里-蚂蚁金服-C/C++研发部 一面 未通过
1、进程和线程的区别?
2、堆内存和栈内存的区别?
3、递归的分类和相关的实现方法?(coding了一个斐波那契数列递归)
4、设计模式和相关的实现?
方向不对口,没有继续面了。
2019.3.16 腾讯TEG事业群 后台开发 一面 未通过
1、进程和线程的区别
2、一个程序从编译到执行的过程?
3、自己实现一个atoi函数;
4、解释一下虚拟内存;
5、如何判断一个二叉树是不是平衡二叉树?coding-后序遍历
6、解释一下C++虚函数;
7、声明和定义的区别?
8、static关键字的作用?修饰变量时呢?修饰函数时呢?
9、解释关键字作用:extern,volatile
10、new和malloc的区别?
11、静态函数和虚函数调用时的区别;
12、解释生产者消费者模型;
13、解释信号量,条件变量,锁及相关;
14、解释C++指针;
15、sizeof()函数;(比如sizeof一个指针)
16、实现一个线程安全的queue的方法;(加锁,CAS队列,lock-free queue,mutex等)
17、解释一下.so文件;
3.27 阿里云 一面 通过
1、CPU的峰值性能如何计算?
2、解释X86的Cache机制?什么映射模式?
3、项目中的数学库函数重写如何实现?(汇编+泰勒展开)
4、MPI的并行模式?
5、MPI的阻塞和非阻塞,同步和非同步?
6、MPI中的Isend和send的区别?分别如何实现?
7、openMP中的single master critical atomic的区别?
8、int a[10],求sizeof(a)和sizeof(a*);
9、int (*a)[10] 解释;(指针数组)
10、输出当前数组数据中前两位大的数,提供优化方案和并行方案;coding 优化和并行使用了openMP
11、如何判断两个单向链表是否重叠?(使用快慢指针)
3.30 阿里云 二面 通过
详细讲了项目,问的比较多的是Cache机制、向量化、流水、数学库、通信优化、MPI模式等,还问到其他一些性格相关的问题,
比如 如何迅速接触一个新的技术并开始学习,结合项目举例描述一下自己的学习能力;
等等;
4.3 阿里云 三面 未通过
1、如何使用泰勒展开进行多项式逼近?
2、并行计算时如何解决读写冲突,提供方案;(数据备份和规约)
3、针对一个具体的应用和架构,给出一套移植和优化的流程和方案;
4、整数p和q,p<q,且都小于10000,求p/q的小数部分?coding 写一下除法计算流程就懂了
5、静态编译和动态编译;
6、静态库和动态库;
4.13 腾讯PCG事业群 后台开发 一面 通过
1、介绍GDB和常用调试命令;
2、说出LINUX命令:磁盘存储查询、内存使用查询、CPU信息查询
3、解释TOP命令中各个数据的属性;
4、解释僵尸进程,孤儿进程;
5、内存泄漏如何查询?
6、C++多态,虚函数,智能指针(包括底层方式和适用场景以及不适用场景)
7、CACHE一致性如何解决;(MEIS状态机转移机制)
8、***淘汰策略?可以用什么数据结构存储?为什么?优缺点是?(LRU 链表)
9、海量整形数据,1~10000范围,如何排序?复杂度是?(桶排序/基数排序,O(N))
10、上一题换成浮点数呢?(按照浮点数二进制的阶码和尾数 基数排序)
11、进程的几个状态?
12、TCP三次握手和四次挥手,为什么是3次和4次?(全双工通信)
13、TCP数据传输过程中如何确认数据包未发送成功?有什么机制?(超时快重传)
14、数据库索引的数据结构?(B树)
15、IO模型有哪些?
16、堆内存和栈内存区别与联系?
4.16 腾讯PCG事业群 后台开发 二面 通过
1、进程和线程的区别,开销大小有别的原因?所拥有的资源都是什么?线程的栈内存是怎么分配和排布的?
2、长连接和短连接?
3、三次握手和四次挥手?滑动窗口?三次握手里的序列号是从什么起?滑动窗口为什么是字节为单位滑动的?
4、TCP里多大的数据量传输要进行封装?
5、数据包从网卡到网卡要经历那些内存拷贝?
6、C++的虚函数?怎么实现的?
7、内存泄漏怎么查找?怎么处理?
8、如何调整多线程的负载均衡?
9、程序挂掉了,怎么调试?有什么工具?怎么做?
10、valitle关键字是什么作用?
11、百万千万数据量,查找某个数是不是在其中?(可以多次hasp)
12、有什么兴趣爱好?
13、职业规划是什么?
14、感兴趣的职位偏好是什么?
15、解释base理论和CAP原则吗?(分布式系统应用基本原则)
16、解释一下Nginx?(反向***)
17、分布式系统和超算的区别和联系?(有无虚拟化)
4.26 腾讯PCG事业群 后台开发 三面 通过
1、解释C++多态?
2、解释虚函数?
3、项目中的性能优化流程?
4、网络除FIN以外的异常中断还有那些?
5、进程间通信方式有哪些?(MPI,消息队列,管道等)
6、线程级并行方式有哪些?(openmp pthread等)
7、用过的调试工具有哪些?(GDB等)
4.21 百度 测试开发 一面 未通过
1、Web页面的请求过程;
2、链表、堆、栈、数组的相关特性和复杂度以及相关操作有什么;
3、常用的LINUX命令有什么;
4、常用的shell Python脚本命令有什么;
5、针对搜索框设计相关测试用例?包括输入输出;
6、Web状态码有哪些,什么意思?
1xx:指示信息--表示请求已接收,继续处理。
2xx:成功--表示请求已被成功接收、理解、接受。
3xx:重定向--要完成请求必须进行更进一步的操作。
4xx:客户端错误--请求有语法错误或请求无法实现。
5xx:服务器端错误--服务器未能实现合法的请求。
7、Python或者PHP上手大概要多快?
8、C++大概都知道什么?
9、HTTP协议中的一些基本操作?
部门偏向测试,问了岗位意向,我表示不接受测试岗位,没有继续面。
4.23 华为 编译器开发工程师 一面 通过
1、引用和指针的区别与联系?
2、字节序的概念?(LINUX大端小端的概念,字节存储的顺序高低位)
3、枚举类型的大小?
4、union和结构体的区别与联系?
5、结构体的对齐方式?判断一个结构体的大小?如何强制不对齐?(加编译指令可以强制不对齐)
6、堆内存和栈内存?
7、new和malloc的区别?
8、内存泄漏?
9、***原理和设计?
4.26 网易游戏 基础架构工程师 一面 通过
1、进程间通信方式?
2、如何查看进程负载和内存泄漏?
3、top中的相关属性?load average?
4、Linux写时复制技术?
5、客户端和服务器端创建socket链接流程?
6、fork会有什么操作?
6、***一致性?
7、buffer和***的区别?
8、可能导致segmentation fault可能的操作?
9、DNS协议的类型?
10、vim开发的相关工具?
11、shell脚本中0,1,2的意思?
12、write和read操作中涉及的用户态的缓冲机制?
13、快速排序的时间复杂度和空间复杂度?
14、稳定的排序和不稳定的排序的概念?比如?
15、静态链接和动态链接的优缺点?
16、Linux共享库的概念和意义?
17、引用声明为null的空指针会触发什么操作?
18、ARP协议和相关操作?
19、Linux中的map操作?
20、锁、进程同步和相关操作?
21、为什么要设置***?硬件设备上是如何实现?
22、用户调用write和read后操作系统会发生什么?
23、IP包头中的TTL是什么意思?
24、堆内存和栈内存?
25、用户虚拟地址空间意义?
26、管道通信相关操作和实现?
26、内存泄漏排查手段和可能的实现?
27、调试手段和流程?
28、数据处理工具用过哪些?
29、父进程和子进程在内存上的关系?
30、进程拥有的资源有那些?
4.30 网易游戏 基础架构工程师 二面 通过
围绕项目展开讨论,针对项目中的优化和并行,方向性比较强,不赘述。
coding 了一道算法题,比较简单,判断当前输入的数据能否经过一定的交换次数使得任意相同的数据不相邻。
拿到offer:腾讯,华为,网易;
总结:
简历上的东西很重要,技能熟练还是一般一定要说明一下;
项目经验很重要,会被刨根问底,讲述时要流畅;
思维很重要,对当前最新的相关技术有所了解也很重要。
基础的东西我还是准备了很多的,中间参考了
https://hit-alibaba.github.io/interview/ 和 https://github.com/CyC2018/CS-Notes/tree/master/docs
祝好,希望都能拿到心仪的offer
#阿里巴巴##腾讯##百度##华为##C++工程师##面经##实习#