20春招深信服一二面面经(已收oc)
20春招深信服一二面面经
一面:10分钟,快得令我震惊,我看牛客网上好多小伙伴被怼了40分钟,就感觉我是不是凉了。。。
-
自我介绍
-
有n个串,给你一个串,判断是否出现过?如果只是前缀出现过呢?如果字符集很大呢?AC自动机的复杂度。
-
进程间通信方式有哪些?
-
TCP的三次握手,TCP的API,listen,connect,accept,recv,send,多说几个拖延时间
-
c++的extern那一套
-
c++new和malloc的区别,new和malloc失败分别会发生什么(bad_alloc和NULL)
-
c++内存泄漏,内存管理,内存碎片
-
常用的几个stl,介绍一下(set,map,unordered_map,vector,queue)
-
c++11的新特性,智能指针,右值引用,auto ,lambda表达式(能多扯一点就多扯一点23333)
-
常用的排序算法,介绍一下stl的sort。
-
线程之间的同步方式。
应该还有一两个计网和操作系统的东西,我忘了。。。
晚上就收到了二面通知。。。我还以为我凉了。。。
二面:二面面试官人巨好,如果答错了会一点一点引导,告诉你如何去分析问题,面试体验满分!
-
自我介绍
-
一面面试官应该把c++和算法都问完了吧?问完了问完了(屁都没问)
-
怼项目,先从项目入手,一个一个问题的剖析。
-
为什么考虑用UDP?TCP和UDP的区别?如何实现一个可靠地UDP?
-
TCP的端口问题:如果一个客户端,在同一端口上与两个服务端进行连接,这样做可以吗?
这个问题我答得不好,应该是可以的,因为TCP报文段中包含源端口和目的端口,目的端口不同就是不同的报文。TIME_WAIT状态只是防止在上一个端口上建立一个完全一样的连接。
-
TCP端口最大连接数?65536,因为16位的端口号
-
第二个项目为什么要用进程池?有没有考虑过线程池?
-
进程池大小如何确定?网络连接,大规模I/O的情况下(高并发短连接)
-
epoll,介绍一下,为什么用epoll?epoll的ET工作模式,详细说说,epoll_ctl_mod是用来干嘛的
-
epoll的惊群效应,如何解决
-
介绍一下reactor模型,主进程负责epoll_wait监听连接,给子进程派发任务,由子进程accept连接。
-
父子进程文件描述符如何共享的?可不可以父进程accept连接,然后通信传输给子进程?你有考虑过这样的模型吗?有什么弊端?
-
两个电脑之间传输文件,如何判断这个文件从哪里来的?(思考了好久,不会)。
-
这个项目如果连接中断,下次这个连接再来,你要怎么处理?连接池的逻辑是怎么样的。
-
如何关闭一个TCP连接?close与shutdown的区别
-
说几个常用的linux指令
-
好的,来写个题,没搞动态规划,写了个字符串题
给定一个字符串s,一个短字符串t在s中出现多次,你需要把多个t中间的字符按顺序打印出来
比如:s=xxxxxabcjjjjjoooooabcooookkkkkabcppppp,t=abc打印:jjjjjooooooooookkkkk
巨简单,我写了个kmp秒了。中午看牛客上各位小伙伴几个动态规划我还有点紧张233333 -
你在团队中工作,给你一个需求,说一下你去完成这个需求的步骤(一通乱吹)
-
经典你还有什么想问的吗?
总体来说都不难,但是二面一定要对项目很熟悉,对项目里面用到的技术很熟悉,才能防止被怼得说不出话。