阿里面经分享
9月下旬收到了意向书,分享下还记得的被问的一些问题,有些问题我也不太会,所以有的题目可能记的不是很准确。
一面(105分钟)
1 自我介绍,工作地选择
2 针对简历,实验室的项目和实习的项目分别进行具体介绍,详细介绍使用了什么技术,介绍完后针对其中几个点深入问了一下
3 操作系统进程的内存分配,工作方式,malloc使用的注意点,和new有什么区别
4 写时复制技术,具体的数据是如何在存储之间传递的,内存分页分段
5 操作系统的内存,如何提高分配和释放内存块的效率,操作系统里是如何管理的
6 C++里面的内存是如何划分的,不同区域用于存放什么,堆和栈的增长方式,在哪些情况使用
7 C++和C的区别,C++的继承方式,类对象的内存占用大小的问题,多态原理(虚函数表的实现)
8 C++的野指针和内存泄露,如何避免,shared_ptr工作方式,如何实现智能指针引用计数,使用时可能出现什么问题,如何避免循环引用
9 C++里面的vector,map,list的实现方式,复杂度等,排序算法有哪些,复杂度
10 进程和线程的区别,切换方式,具体切换过程,涉及到哪些操作,多线程共享哪些资源,哪些是独立的
11 线程切换涉及到用户态和内核态,为什么需要切换,用户态如何手动切换到内核态,程序如何执行需要内核权限的功能
12 线程通信方式,进程通信方式,为什么加锁,如何加锁,什么时候用读写锁,c++中创建线程和锁的调用API是什么
13 服务器多个线程切换如何减少创建的开销,线程池如何实现
14 单例模式实现,链表如何找环的入口节点
15 网络中的3次握手,4次挥手,为什么是这个次数,close_wait状态必须存在吗,如何优化握手的过程
16 五层网络模型,每层有哪些协议
17 浏览器搜索淘宝,具体的调用流程,具体用到了什么协议
18 搜索一个IP地址,路由器是如何找到这个地址的,路由表的转发和更新策略,网关如何工作的
19 如果网络并发量很大,而计算机网卡本身支持的速率有限,如何进行优化
20 HTTP和HTTPS的区别,HTTPS的具体握手步骤,建立连接完成以后通信过程用什么加密方式
在线编程面(100分钟)
使用纯C语言实现一个简易的内存池,支持内存池的创建和销毁,以及内存块的申请和释放
二面(50分钟)
1 亚马逊实习项目介绍,遇到的困难,如何解决
2 实验室项目介绍,项目中有什么难点,项目里面用到的一些技术细节
3 linux中常用什么命令,如何查询某个文件被哪些进程占用,如何查询当前系统的cpu和内存占用
4 tcpdump命令,是否尝试抓过tcp三次握手包
5 平时如何调试,调试方法,gdb介绍,多线程编程如何使用,如何查看线程堆栈,如何查找死锁
6 Socket的系统API有什么,TCP和UDP调用流程分别是什么
7 TCP是如何保证消息可靠,滑动窗口工作方式,慢启动,拥塞避免,快重传
8 tcp如何给消息定义不同的优先级,如何保证高优先级的先发送
9 通信过程,哪些情况些会出现返回reset
10 C++的sizeof工作方式,内存对齐原则,虚函数原理
11 数据库索引,B和B+树的区别
12 有什么问题想问的
三面(35分钟)
1 自我介绍
2 继续问实习项目,实验室项目,问细节,问原理
3 平时都看了哪些书,学习途径有哪些
4 项目中如何保证稳定和并发量,为什么这么设计
5 多路复用,select和epoll的区别,epoll为什么效率高,实现原理,看过代码吗,epoll的两种工作方式
6 如何设计一个高并发HTTP服务器,如何一步步优化
7 对分布式技术的了解,了解阿里的开源技术吗
8 论文发的什么级别会议,主要内容介绍以及创新点
9 对自己从事行业的兴趣方向,开发语言主要用什么,公司的选择,base地考虑,北京还是杭州?
10 有什么问题想问的
交叉面(30分钟)
1 自我介绍,挑一个觉得比较好的项目进行介绍,几个队友完成的,如何分工的
2 有没有针对项目考虑过优化,如何进行扩展
3 论文详细介绍,
4 云计算的难点有哪些,觉得该如何实现
5 对业界开源技术的了解程度,知道哪些,有看过吗
6 是否了解docker和k8s,介绍一下
7 论文内容如何具体实现,如何进一步扩展
8 有什么问题想问的
HR面(30分钟)
1 自我介绍,实习感受
2 介绍一个项目从开始到结束的整个过程,包括如何和队友协作,和老师、合作方之间的沟通协调
3 前面几轮的师兄面试,有什么感受?
4 个人未来的职业规划,公司如何选择
5 平时有什么兴趣爱好
6 如何学习一个新技术,学习途径是哪些
7 简历上的校园比赛介绍一下
8 有什么问题想问的