小赢科技电话面:
1、linux进程的内存模型
上来就是这么一道题,我直接懵逼了。只能随口一说:代码区、数据区、堆区、栈区、未使用区。再问就是直接回答不知道。
2、对10亿数据进行去重
hash分割,位图,稀疏数组。实现方式各有优劣。
3、redis的ZSet底层数据结构实现原理,跳跃表如何确定插入数据的层级
这个问题,我开始并不知道。但是,我猜死了也不知道,是随机生成的,有个权值概率来决定的,数值越大生成的概率越低。
4、HTTP是如何实现协议的?头和体怎么区分?
我说的是key-value区分的,头部和body位置不一样。不知道具体想问什么。
5、TCP进行连接的时候,linux中需要实现多少种方法?关联的方法有哪些?
只能说,客户端创建socket、建立连接connect、服务端创建socket、绑定bind、 监听listen、接收信息accept、发送send和接收recv,最后关闭close。
遗憾的是,并不满意,我也不知道面试官想要什么。
6、谈谈微服务
没做过,简历上写的也很清楚,经过上一次的腾讯面试,我还特意标注了,没有使用过微服务。结果还是问,说明,这面试官是来闹着玩的。
7、服务治理中做了些什么?
这是我特别想吐槽的地方,我只能说我知道一点概念,服务发现和熔断,以及服务注册和雪崩处理等等都是属于这个的范畴。然后就打算了我,直接问下一个。
8、HTTP的状态有哪些分别代表什么?302 403 404 502
这个问题是唯一值得满心欢喜的,估计是看前面都不满意,问个low点的问题试探一下。
9、创建一个大内存,是堆还是栈?
堆。栈的默认大小只有2M,存储一些函数变量,用完就释放,GC的操作主要是堆里面进行。接着问了为什么这么设计,我表示我从没想过为什么。就连为什么取名为堆栈,我也没想过。
不知道大家注意到没有,全程没有问Go的任何一个问题。我表示,后端的开发都是不问语言的吗?我怕不是面了个假的面试。
深信服电话面试:
这个面试官就让我有点不明觉厉了,开始以为很牛逼,等你自己去寻找答案的时候,才发现,原来面试官连自己问的问题都不知道,说的答案也是错的。也就可以理解,为什么面试官不当场说答案,非要让你自己回去搜索了。
1、链表有环的判断,写伪代码
既然是电话面试,那就不是写伪代码,是说伪代码了。但是,链表不能用for循环吗?我说for和while都可以循环处理链表,我一度以为我傻逼了。
2、GPM调度模型
这个除了背诵,没有别的法子,我说的他的一直说嗯嗯的,标识认同。说明,基本概念理论,大家一个水平线。
3、浏览器的前进后退使用的数据结构
这个,我开始有点懵逼,我说任何数据结构够可以实现,就是麻烦和简单的区别。然后说了栈,发现行不通,他提示说可以用两个栈。嗯,很认同这方法。
4、TCP的三次握手,第一次握手的ack包含哪些信息,什么时候会有Time_Wait
这个问题,让我彻底颠覆这个面试官了。开始我并不知道ack,包含什么,我只知道需要消费掉一个序列号。他说里面包含了ip地址,我不明觉厉了。首先建立连接的第一次握手的,根本不是ACK,而是SYN。其次,ACK是服务端返回给客户端的确认号,根本没有什么IP地址或者其他的什么信息。IP只是在建立连接的开始使用,虽然全程都在,但是握手的时候我没找到说需要IP,更没找到ACK还会含有IP信息。Time_Wait,只有在主动释放连接的时候才会有。
5、栈保存的是什么,堆呢?地址生长方向是什么?为什么这么设计?
栈的空间是由编译器进行开辟和释放,主要存放局部变量和函数参数。栈的地址方向,我不知道,我是推理的,我之前做过单片机,引脚的都是高位往低位处理。堆刚好和栈相反。至于为什么这么设计,这是由于大小端来决定的。开始我不知道,后面看资料才知道的。
6、Go的栈大小是多少?最大值是多少?
这个我是真没注意过,一直以为是2M,结果发现,不是网上说的32M,而是一开始的2K,后面会进行栈分裂,扩展栈的大小,换句话说,栈的大小是会变化的,最新版本的栈大小是从2K-1G变化的。
7、队列实现最优路径
不知道问什么,原来是迷宫地图,唉。
8、两个链表像拉链一样相交,获取这些交点
真不知道,到现在还没搜到答案。一个交点的可以知道,拉链一样的多个交点的,还真不知道。
9、后顺遍历树结构,如何释放树结构的内存信息
这个是我觉得唯一有水平的面试题,前面的后顺遍历已经铺垫好了,后面释放树结构内存也只能按照后顺遍历的方式来释放。
10、Linux的网络拥堵如何排查,过程花多长时间
这个主要是想要花的时间。我表示,时间无法确定,我们也接触不到服务器,无法确定,只能协助。
11、TCP连接,服务端发现丢包之后是怎么处理的?
我说重传。然后问了是立即重传还是做了其他什么处理再重传?经过上面的题,我很确定,这哥们肯定也不知道_
12、贪心算法
我就不信有几个人能写出来的,如果不是专业搞算法的。
13、队列如何保证先进先出,栈呢?
数组,索引,完全不知道怎么回答,最后说我回答跑题了。。。我想说,我连出题意图都没搞明白。
14、linux权限控制是如何区分的?
不知道,不同的区域还是?唉。
最后问还有什么问题问他的。我就问了一个问题,你说的这些问题我要全部回答上来才行吗?他说,算法是加分项。然后我回顾了一下,嗯,他问的全是加分项。
平安的面试:
这个面试官问题不多,是针对做过的项目问细节,从细节里面知道你有没参与,有没有真正的知道项目的方方面面。然后就是问了几个Go的考察点,很简单,但是你不一定会的那种。知识点很简单。这是我这四场面试之中最符合我们正常人的流程和问题。唯一在意你处理问题的能力,脑子是不是灵活的。
总结一下:面试能不电话面试就不电话面试,能见面交流就见面交流。毕竟,情急之下,我们还能揍一顿面试官。
针对面试的八股文,我们已经很习惯了。要进大厂,必须背诵那些看起来很高深,但是可能一辈子都用不上的知识点。我们需要知道栈地址为什么从高到低的生长方向吗?面试Go开发,全程没有问Go的相关的。今日头条甚至直接说,我们招聘的是Go岗位,但是不需要有go 的开发经验。但是,我们为了找到一份看似高大上的工作,浪费了大量的时间去背书,忽略了我们业务本身的东西,不知道值不值得。这样子的面试,写简历的意义又在哪里呢?还有那些非要带纸质简历上门面试的公司,这得有多抠门?目前只有平安的这面试官是正常的,针对简历来提问,而不是看着天来问。都是打工的,何苦为难打工的。针对面试的八股文,我们该怎么应对的?太多的知识点无从下手。