阿里云后台开发 166分钟的一面
面了接近三个小时,面完脑壳痛,问的比较全面,基本上计算机基础都问了一遍
- 先收集一些基础信息,论文,专利,成绩(本科和硕士),实习时间
- OSI七层模型,分别介绍一下
- 应用层协议举几个例子
- TCP三次握手,四次挥手
- time_wait 和 close_wait 状态分别出现在什么时候以及作用
- TCP怎么保证可靠传输
- 网关相关,好像是 net, snet,dnet?
- 对称加密和非对称加密?
- 非对称加密用到哪些场景下(说了https和GitHub)
- https认证过程
- CPU架构,控制器,寄存器,运算器,高速缓存?
- 计算机组成原理相关的了解哪些,偏底层的?
- 二叉树先序,中序,后序遍历描述一下(递归实现,非递归)
- DFS和BFS算法描述一下
- 让你写伪代码的话是否能很快写出来先中后序遍历以及bfs和dfs?(回答可以,最后没让写。。。)
- 链表中是否存在环,有哪些检测方式?这题问了很久,让说了好几种方法(让海阔天空的想一想)
- 方法1:说了快慢指针,然后让证明为什么快慢指针一定能相遇,什么原理,说了数学推导,没证明出来。。。
- 方法2:可以用智能指针(C++),环的入口节点count计数为2,有两个指针指向它
- 方法3:用map<node指针,计数>
- 方法4:暴力法双层遍历O(n2)的算法
17. 反转链表,也让说了好几种方法
- 头插法,语言详细描述一下
- 用三个指针一直往后遍历,面试官说跟头插法思想一样,有没有不同思想的方法?
- 递归法
18. 你知道哪些排序算法,10大排序算法说了9种,忘了堆排序
19. 描述一下堆排序(前边没说堆排序,下边就让说堆排序),如何构造大顶堆
20. 描述快排
21. 描述归并排序,详细问了merge的过程
22. 面试官说他主要做java,c++了解少,让自己说一些C++中一些重要的点
23. 数组和链表
24. map和unordered_map
25. deque内存是否连续
26. 容器适配器,stack,queue
27. 不写析构函数会怎样
28. 线程池工作原理
24. map和unordered_map
25. deque内存是否连续
26. 容器适配器,stack,queue
27. 不写析构函数会怎样
28. 线程池工作原理
29. 线程池任务队列满了之后,如何拒绝一个提交的任务(面试官说java中有,不太清楚C++线程池中怎么拒绝一些任务)
30. 线程和进程的区别
31. 数据库索引,B+树(数据库没怎么用过,也不懂,所以没问什么)
32. 描述一下二叉搜索树
33. 二叉搜索树可以做一些什么事情
34. 面向对象的思想,封装,继承,多态,分别描述一下,举例说一下运行时多态
35. 跳出面向对象概念,面向对象在工程中的作用是什么?
36. 设计模式 单例模式,工厂模式,用在什么场景
37. 设计模式还了解其他什么模式?
38. web想过的了解吗?(不了解)
39. 分布式了解吗?(不了解)
40. 项目经历:挑一个项目,说一下难点,改进等
41. 看简历比较是对算法比较熟,为什么不找算法,要找开发的工作呢?
42. 三个算法题:
1、N+1 大小的数组里面有 N+1 个数,数的范围是[1, N],N 为正整数,假设这里面只有一个重复的数字但有可能不止重复一次,怎么找到这个数字? 2、若要求 要求空间复杂度为O(1)且时间复杂度小于O(N²),如何实现? 3、实现一个二叉树的数据结构,并编写一个算法判断是不是二叉排序树面试官特别好,每回答完一个问题他就会总结一下,感觉这个面试能学到很多东西。
算法题先说一下思路,面试官感觉没问题了再开始写