阿里蚂蚁金服二面凉经
先谢谢面试的小哥哥,很耐心的指导和等待...
电话面(50分钟) 视频面试(40分钟)共2小时,没错,就是从10:30分面试到12:30分,面完之后我哥也很吃惊的和我说,“你要想想看,你是凭什么让别人面试你一个多小时的,还是吃饭的时候!”
所以感谢面试官给我这次机会,谢谢。
好了,入下题吧:
1. 自我介绍,基本都一样,不多说
2. 最让你印象深刻的比赛经历(因为我简历上有差不多6个奖,所以面试官才会问吧)
3.实习经历,实习做了什么,学到了什么
4. 类的三大特性(封装,继承,多态,解释一下)
5. cpp如何实现多态(从虚指针,虚函数,虚函数表的内存分布位置,虚函数的运行过程介绍了一遍)
6. 析构函数为什么一般为虚(基类指针指向子类,析构基类的问题)
7,. 构造析构函数可否抛出异常(不知道)
8. 内存分配的方式(new,malloc,栈分配)
9. new/malloc的区别
10. 函数参数指针和引用的区别,引用和普通参数的区别(引用实际上就是常量指针,引用是将参数的地址传入,而普通参数需要调用一次复制函数。。。)
11. 指针的大小,64位和32位的区别,int指针和char指针的区别
12. stl vector在插入元素的时候需要考虑什么(大小会成倍增大,如果知道大小可以预先设定,如果原来已有数据,有需要插入数据,有可能内存不连续导致重新分配全部内存)
13. stl map,set的底层实现,使用场景
14. string a=b c有什么优缺点,可以怎么优化
15. tcp和udp的区别
16. tcp三次握手和四次挥手具体是怎么样的
17. 为什么需要第三次握手和time_wait状态
18. 应用层协议有些(ftp,telnet,http)
19. telnet的端口号是多少?
20. 进程和线程的区别
21. 死锁的理解,如何避免
22. 线程切换开销大还是进程
23. ***了解吗?(页面置换?)***算法有哪些,说几个听一听(刚才才知道原来就是页面置换算法)
24. 逆置链表
25. 判断链表是否有环
26. 编程题
给你一堆字符串,将这些字符串分类,含有相同字母,且每一个字母的数量都是相同的为一类,每一个字符串只含有小写字母,要求时间复杂度为om*n(我现在还是不怎么能理解面试官的思路,我的做法需要Om*nlogn*m,桶排就Om*n)
举个例子:
abb,aba,bba,aab
输出:
[abb,bba],[aba,aab]
27. 你还有什么需要了解的
然后面试官先问了我一些大致的情况,然后才是我问问题
有一些可能忘记了,总之,谢谢这位面试官给的机会