怀着沉重的心情写下这篇面经,怎么说呢,面完我整个人都不好了,可能是自己真的太菜了吧,真的蚌埠住了啊兄弟们,谁和我说客户端比后端简单的?
2021/10/18
字节跳动后端+客户端大大小小也一共面了6次(后端三次,客户端三次)了,这次面试体验最差,一度让我自我怀疑,
从下午两点面完之后快四点了,快两个小时你敢信?被折磨两个小时,反正指定是无了
4.序列化知道吗?
答:序列化操作的本质是将对象中的字节组织成(顺序的)字节流的过程。在java中implements Serializable接口可以实现
追问:好,那你自己实现一个序列化算法
我:????
5.浏览器请求到响应的过程,越详细越好
记住这个越详细越好
我说先是DNS解析(本地浏览器缓存-->hosts文件-->DNS运营商发起递归解析请求,并详细说了过程)-->对称加密非对称加密详细过程,怎么交换密钥的,被打断了说加密了就安全了吗
我说中间人攻击,预防的话有CA证书,权威机构,信任机制这些
追问:中间人怎么劫取报文的
我:知道的有ARP欺骗...
还有呢?
我:??我来面黑客吗
这些还是简单,接下来才是折磨开始
在得知我们学校没教过这些课程之后,狂问OSI七层模型,一层一层的问
http请求头有哪些内容 ?
我答了Accept-Charset字符集,connection长链接,Content-Type,cookie这些常用的
追问:就这?那tcp头部呢?
.jpg)
没记住的给我记住了,详细问到每一个bit是干啥的,反正我是记不住这么细
又问:IP协议呢?
.jpg)
都记住了,每个bit是干什么的面试要问!
我一直认为我们做开发的,这些协议的内容知道个大概意思,主体内容,有哪些重要参数知道就行了,没想到居然问个每一个bit的作用,就是让我再看一遍书我也记不住啊..
后面又说了ARP协议到MAC地址的转换这些,反正人已经麻了
6.你这网络自学的不是很好啊,你说你之前是后端(服务端)开发是吧,那你给我写一个http服务器吧
我:当场尬住,想了一想说能用HttpServer这个类吗?
不能
我:我是废物
7.问了Synchornized原理
我说:1.6之前的重锁和现在的锁升级过程,对象头信息,锁标志位,无锁-->偏向锁-->轻量级锁-->重锁的整个过程,因为轻量级锁我说有一个自旋的过程,他让我手写一个轻量级锁,带自旋的,能给别人用的那种,不能用synchornized和volatile和ReentrantLock
好吧,我硬着头皮写了,写完被说不能用
这些各种各样的锁,目前更多是停留在都知道是什么东西,使用场景及一些原理,还没到真正自己手写实现的地步...
#反正后面问了很多问题,跟在面经上看的完全不一样,全部是自己实现怎么怎么样,我能记住的别人怎么实现的就很不错了,代码不就是学习别人怎么写的吗,难道上来就自己撸轮子吗
最后算法题想着扳回一局,什么动态规划,并查集的来吧,没想到出了一道单链表排序的题
我一看这简单啊,面试官看我上来就写,又加了一句只能用快排的思想实现,不能自己new Node(),其实单链表排序的题我在leetcode上也做过但是用归并做的,用快排感觉怪怪的,反正最后没有全AC,
我又挣扎了一下说八大排序算法我都会手写,只不过一般是用数组实现的,可能平时没用链表写过所以有些指针细节没做好
面试官:八大排序背也能背住啊
我:谢谢,有感到被侮辱...
总结:就客观上来讲,面试运气还是挺重要的,当然实力更重要,如果我能自创一个序列化算法,能手写http服务器,能手写自旋锁,能把TCP/IP协议的每一位bit含义都记住的话。。。
总而言之,这次面试也让我知道了自己的短板,知识不能仅仅掌握在理论阶段,必须自己去实现它才算懂
更惨的是,为了字节这六面,我秋招九月份仅仅拿到的两个14k左右的中型公司的意向书也过期了,让我七天内把三方寄过去,但是违约要8000块,我想把字节面了再说吧,万一过了呢,就没有寄过去,现在又成零offer的状态了,害...