记阿里校招实习一面
前两天导员发了几个阿里内推链接,我就联系了流量监控部门的学长,投了简历。学长很热情,耐心指导了我面试的要点,简历投了2天后今天早上接到了晚上电面的通知。赶紧复习了一天专业知识和算法。
面试流程
面试流程分为:自我介绍、提问环节、项目经历介绍、手撕代码、闲聊。
晚上7点,电话准时打过来(电话标记广告推销???)。说了下流程,直入主题,跳过了自我介绍的环节。
提问环节
差不多把专业课问了个遍,怪我没有好好复习,专业课知识全还给老师了,答的是稀烂
计网:TCP拥塞控制
上来第一个问题就把我问懵了,我只隐约记得个滑动窗口,三次握手,全程答非所问。
参考资料TCP协议有两个比较重要的控制算法,一个是流量控制,另一个就是阻塞控制。
TCP协议通过滑动窗口来进行流量控制,它是控制发送方的发送速度从而使接受者来得及接收并处理。而拥塞控制是作用于网络,它是防止过多的包被发送到网络中,避免出现网络负载过大,网络拥塞的情况。
拥塞控制四个算法为慢启动,拥塞避免,拥塞发生和快速恢复。
- 慢启动
- 初始化拥塞窗口cwnd大小为1
- 一个往返延迟时间RTT过后,cwnd翻倍(指数增长)
- cwnd超过 ssthresh(阈值)时,进入“拥塞避免“
- 拥塞避免
- 每经过RTT就把cwnd加一
- 拥塞发生
- 若发生拥塞,ssthresh设为cwnd/2
- 快重传
- 发送方收到三个重复确认,立即重传(不用等重传计时器到期)
- 快恢复(与快重传配合使用)
- 采用快恢复算法时,慢开始只在TCP连接建立时和网络出现超时时才使用。
- 当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半,将cwnd设置为ssthresh的大小,然后执行拥塞避免算法。(考虑到如果网络出现拥塞的话就不会收到好几个重复的确认,所以发送方现在认为网络可能没有出现拥塞。)
- 慢启动
操作系统:
fork()
,exec()
区别这题还好依稀记得fork是复制一份,exec是加载了新程序覆盖了原来的进程
参考资料对于fork():
1、子进程复制父进程的所有进程内存到其内存地址空间中。父、子进程的 “数据段”,“堆栈段”和“代码段”完全相同。
2、子进程的当前工作目录、umask掩码值和父进程相同,fork()之前父进程打开的文件描述符,在子进程中同样打开,并且都指向相同的文件表项。
3、子进程拥有自己的进程ID。对于exec():
1、进程调用exec()后,将在同一块进程内存里用一个新程序来代替调用 exec()的那个进程,新程序代替当前进程映像,当前进程的“数据段”, “堆栈段”和“代码段”背新程序改写。
2、新程序会保持调用exec()进程的ID不变。操作系统:内核态、用户态概念
内核态与用户态是操作系统的两种运行级别,操作系统为不同操作指令定义了不同特权级,特权指令比如IO只能在内核态下运行。
操作系统:应用程序使用系统调用有哪些优化空间
这问题没太理解,后来他补充说明把一段内存写入磁盘,瓶颈在哪我就答了磁盘IO,优化就说了用cache。。。
数据库查询优化,如何提高查询效率
有哪几种排序算法,复杂度怎样,挑一种算法讲解一下(我讲了快排)
| 排序算法 | 平均时间复杂度 | 最坏时间复杂度 | 最好时间复杂度 | 空间复杂度 | 稳定性(相同元素的相对位置) |
| ———————— | ————————— | ————————— | ————————— | ——————— | ———————————————— |
| 冒泡排序 | O(n²) | O(n²) | O(n) | O(1) | 稳定 |
| 直接选择排序 | O(n²) | O(n²) | O(n) | O(1) | 不稳定 |
| 直接插入排序 | O(n²) | O(n²) | O(n) | O(1) | 稳定 |
| 快速排序 | O(nlogn) | O(n²) | O(nlogn) | O(nlogn) | 不稳定 |
| 堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 不稳定 |
| 希尔排序 | O(nlogn) | O(ns) | O(n) | O(1) | 不稳定 |
| 归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 稳定 |
| 计数排序 | O(n+k) | O(n+k) | O(n+k) | O(n+k) | 稳定 |
| 基数排序 | O(NM) | O(NM) | O(N*M) | O(M) | 稳定 |讲一下队列和栈和他们的使用场景
除了先进先出和先进后出我也讲不出别的了/(ㄒoㄒ)/~~
c++的static的用途和使用场景
这个应用场景我也就讲了个实例计数。真的想不出来了。。。
项目经历介绍
这个环节主要挑了些你写在简历上的项目问你实现细节,问的还是挺细的。总之好好准备就行。
手撕代码
他会给你发邮件,链接点进去是个在线编辑器,当场出题,直接写代码,不能运行调试。
还好他只问了一个简单的二分查找。今天还刚看到了。
闲聊时间
最后就是闲聊时间,问我有没有关注过什么开源项目,他夸我博客做的挺好看😀,问了问怎么搭的。最后终于跟我说让我过了(感谢上帝),问我有没有想问他的,就结束了。
整个面了一个多小时,那么多问题答不出时还是很紧张的。