聊聊鹅厂及鹅厂出来的coder们的面试套路

来源:互联网 发布:有哪些数据库管理系统 编辑:程序博客网 时间:2024/05/17 02:03

前前后后,出于对鹅厂丰厚待遇的艳羡,前去深圳鹅厂总部面试了几次,最终都因自己有激情没准备疏于细节而被鄙视掉。当下,正好又开始了自己的求职生涯——漫漫求职路!
至今,离职2月有余,为了转行大数据,踏踏实实的把大半个hadoop家族都学习并操作了一遍,然,大数据的求职简历投出后,都石沉大海!终顿悟,没经验空有理论是无用武之地的。方是时,袋中存粮已所剩无几,自信满满的我开始焦躁起来。毕业8年,一直从事C++语言类的开发工作,始于语音行业的科大讯飞,途经电信解决方案的华为,转求移动企业业务的赛蓝科技,至于地铁WiFi行业的南方银谷。全然没有在一个领域进行深耕,渐感C++开发岗的食之无味,弃之可惜的尴尬之境。诚然手握C++,java,PHP,JavaScript,Python等众多开发语言之利器,却终无用武之地,现已至奔三而立之年,竞落魄如此,难免老泪纵横!遂决心转投java生态的怀抱,big data不成,就退而求其次,从java开发开始吧。
目标:一个能有自己发挥余地的平台,能有稳定收入解决当下财务危机,两年左右时间成为经验丰富的架构师及带开发职能的管理岗。
职业生涯所剩时日无多,务必紧张起来。
求职-ing。
在我大中国广袤的领土上,现如今雄踞着BAT三座大山,无论你身在何处,只要是稍微有点奔头的平台,始终绕不过BAT的锦衣卫们。我手握三尺利剑,意欲翻江倒海,神挡杀神,佛挡杀佛,志趣满满,然终归还是遇到了鹅厂的锦衣卫,把我杀得失魂落魄,丢盔弃甲,虽拼尽全力,奋力狙击锦衣卫放的各种疑难杂症,终还是铩羽而归。纵昔日鹅厂求职观今日之败绩,所以有感,欲聊聊鹅厂锦衣卫们的套路,以雍同是天涯沦落人等吾辈,勿使“后人”而复哀“后人”矣。
言归正传。
鹅厂锦衣卫们的面试特点:
(一)周期长
(二)问问题,偏向深度递归
对于特点一,如果手中余粮不多,急于工作或换岗的同僚们,则欲速则不达;
对于特点二,我的体会是:回答问题,言简意赅,言多必失,避免过渡的深度递归提问导致堆栈异常搞崩溃了自己,尽量避免提起那些自己知其一,不知其二的知识点。
为说明特点二,现举例说明(亲身感受):
为便于描述,现约定如下(伪代码):

setcaller<-锦衣卫set:callee<-我

舞台背景:笔一支,A4纸若干。
人物:caller,callee。
caller:先自我介绍一下。
callee:巴拉巴拉。
caller:你会web服务开发,是吧?
callee:嗯。
caller:get和post有什么区别?两者最本质的区别是什么?
callee:get的请求地址可见,post则不可见,比较安全。本质区别:伊犁哇啦啦,有点蒙。
caller:服务器如何判断一个请求是get还是post?
callee:开始有点蒙,提醒后,说根据http请求头判断。
caller:http请求头有哪些?
callee:Host,User-Agent,keep-alive(这个实际上是Connect字段的值)。
caller:keep-alive有什么作用?
callee:降低web服务器的负载,保持长连接。
caller:http协议是基于哪个协议实现的?
callee:http协议基于面向连接的tcp协议。
caller:keep-alive的实现,从tcp层来说,是如何实现的?
callee:使用心跳保持(心里也知道这个有问题,并不是你告诉服务器keep-alive,连接就能keep-alive的)。
caller:心跳的本质是什么?为什么能保持连接?
callee:懵逼。。。(大脑在思索,心跳都是业务服务器和客户端的约定实现呀)。
caller:心跳实际上是因为网络包,从客户端到服务端时,要经过很多网关,路由器等众多节点,发送心跳包时,可以更新各节点的缓存时间。
caller:你会套接字编程,是吧?
callee:嗯。
caller:套接字编程过程中,有遇到过什么坑吗?
callee:客户端连接到服务端时,如果服务端主动断开了客户端的连接,连接状态会变为time_wait,这种连接在高并发时,有很多(当时,我还没深入去理解为什么会有time_wait状态,属于自己知其一不知其二的知识点)。
caller:那应用层编程,如何处理这种time_wait过多的情况?
callee:懵逼。。。(脑里想,当时是改操作系统内核参数修改的,但是应用层不知道)
caller:套接字编程过程中,有遇到过粘包问题吗?
callee:懵逼。。。(只知道丢包,但是tcp会自己处理重传呀,粘包是何怪物??),伊利哇啦啦。。。
caller:粘包:简单讲就是接收端一次性收到了多个数据包,前一个数据包和后一个数据包同时到达接收端。怎样解决粘包问题?
callee:我们每一个数据包,在报文头都很明确的知道,这个数据包的报文头长度和数据报文长度,不会出现这种粘包的情况(这种其实就是解决粘包的一个办法),我们的二进制协议报文中会有报文长度,命令字,是否加密等字段(坑,马上又问加密解密的问题)。
caller:(不依不饶)粘包可能发生的场景是什么?如何在应用层编程控制?
callee:一般会设置SO_LINGER算法(误打误撞,粘包出现,主要就是tcp为了优化性能,发送数据缓冲区没有达到阈值时,会一直缓存,达到阈值后将数据一次性发送出去)。
caller:刚才聊到加密解密,那对称加密和非对称加密都有哪些?
callee:懵逼。。。(原先看过加密解密算法,但是一下子想不起来),我们项目中,使用的是tea加密。。。(当时根本不知道tea加密其实是属于对称加密,判断是否是对称加密,有个方法就是看解密方是否需要密钥才能解密,后来通过和一个朋友聊,知道了对称加密主要有des,des3,aes,非对称加密主要是RSA,非对称加密中,解密方使用公钥去解密,RSA的密钥长度可以为128,256,512,1024,密钥长度越长,加解密越耗时,越难破解)。
caller:在https通信中,用到了ssl,可以说说ssl的原理吗?
callee:懵逼。。。https加密后,安全但是性能不高(这当然不是caller要的答案)。
caller:用过CA证书吗?
callee:用过。
caller:能说说CA的原理吗?
callee:伊利哇啦啦粘。。。(脑里盘算着,我曾经去微软注册过证书,但是真不知道原理),忽乱的说些tocken,令牌。。。
caller:你用过数据库,是吧?
callee:用过mysql。
caller:知道mysql的存储引擎吗?
callee:myisam和Innodb引擎,一通说。。。(这个自己熟悉)
caller:数据库隔离有哪几种?
callee:按库隔离,按表隔离(不着边际实际是:可读取未确认,会导致脏读,可读取确认,可重复读,可能导致幻读,可串行华)
caller:了解什么是脏读吗?
callee:在缓存系统中,缓存过期后,会有脏读,可能导致缓存穿透,一般直接返回脏数据,然后服务自动去数据库加载新数据,清理脏数据(考察的其实是数据库的脏读)
caller:了解过什么是幻读吗?
callee:懵逼。。。不知道。
caller:知道字符集分哪几种吗?
callee:单字节字符集,多字节字符集Unicode,utf8,utf8又分好多种类型,。。。(又是坑,自己引入了utf8,自己对utf8的分类也是只知其一不知其二)
caller:utf8和Unicode是什么关系?
callee:utf8是字符编码,Unicode是字符集,如汉字编码,需要2个字节才能编码一个汉字,所以使用Unicode字符集。
caller:bom utf8和普通utf8有什么区别?
callee:蒙圈。。。,不知道bom(其实bom就是大端编码,小端编码的区别,在一个文件开头的2个字节,如果是FF FE则是小端编码,如果是FE FF则是大端编码,BOM只有Windows操作系统支持,Unix,Linux是不讲究这种魔法数的)
caller:好,面试就到这里,我去和hr说说。。。等待-ing,过了几分钟,caller过来,hr有事,要不你先回去,后面有消息,hr再联系你。
callee:哦,好的,谢谢!(心里大概知道了结局)

The End(省略若干提问)。
点评:
这种问答方式,是标准的鹅厂锦衣卫面试方式。个人认为,无论你多么牛逼,最后都会被问成SB(偷笑)。
仅以此献给那些有志于大厂的同僚们。

原创粉丝点击