前言
大家应该看过不少人分享的面试成功的面经,是不是觉得自己“说不定也可以”呢?
这里重提一个理论:幸存者偏差。当取得资讯的渠道,仅来自于幸存者时(因为死人不会说话),此资讯可能会存在与实际情况不同的偏差。
所以,今天要分享的是凉经。
那些年凉掉的面筋
这些面筋来自经常跟我沟通的学弟学妹以及部分网友,在此公开也是得到了他们的许可的。今天只分析其中的一个。
这位是二面字节挂掉的朋友
下面是他的面经
投的是抖音,感觉抖音的需求量大些,面上的可能性更高一些吧,但是我忘了一点供应量也是一样的大。。。
一面二面的时候感觉自己表现还不错,所以后面就有点飘,结果第三面准备不足,多人面试直接懵逼…(啊啊啊啊啊)
面试题主要问的有以下这些:
一面
(因为过程比较顺利,题目没有好好记下来,大概就是下面这些吧)
1.项目相关
2.hashmap
3.线程a 等b,b等c的实现
4.类的equals重写
5.线程安全是什么 如何保证多线程安全
6.public private protected
7.简单工厂 抽象工厂 是什么
8.判断一个数组是不是后序遍历(代码 )
二面
(二面一开始的时候我还是有些紧张的,但是我没想到居然挺简单,这也直接导致我三面轻敌了)
1.项目(10min)
2.算法题:判断一个字符串是否是一个ipv4
3.算法题:连续子数组的最大和(剑指offer上的题)
4.java异常体系(运行时与非运行时异常的区别)
5.hashcode与equals的区别
6.jvm内存区域划分(程序计数器,虚拟机栈,本地方法栈,堆,方法区,运行时常量池)
7.jvm内存回收方法(判断对象是否已死<1面那个问题>,新生代老年代的垃圾回收算法
8.哪些对象可以作为gc roots
9.数据库中delete和drop的区别
10.数据库事务的使用场景
11.数据库三大范式
12.数据库索引的创建原则
13.数据库索引底层实现(b 树)
14.线程,进程,程序的区别
15.死锁的产生条件
16.继承与***模式的优劣势
想不到吧,居然就这些。就这?我开始飘了。
三面
1.项目
2.三次握手四次挥手
3.tcp核心机制(滑动窗口,快速重传机制,拥塞控制...可以参考我以前的博客)
4.http和https及其区别
5.若建立连接时间比较长,http是怎么优化的(注意是http不是tcp)
( 网络怼到我哑口无言,问了三个问题都答不上来,这才换了一个方面,也是从这里我开始慌了)
6.接着问了我【性能优化的相关问题】(我答不上来,后面就又问了性能优化的方面的其他,我还是说不会)
7.性能优化完全答不上之后又问了音视频开发。大致就是为什么编码,常见的音视频格式,ffmpeg,opengl,egl,android怎么往ndk通信与调用的
大概就是这些吧,当时有些自乱阵脚,加上本身ndk 了解的就不多,总之,我的表现我自己都看不下去了。
后面……没有后面了。性能优化真的是难到我了。
总结
字节跳动的面试难吗?
我觉得字节跳动的面试并不难,虽然字节跳动考的有些东西与其他家的有点不一样,但是同样道理,都是看基础。就比如其他朋友反映的,面试中有时候会问到的子网掩码的问题。
那些大厂问来问去,还是那些换汤不换药的问题。
性能优化这个问题难吗?
其实,性能优化这个问题并不难,我当时在听完这位朋友的诉苦后整理了一份app全方位性能优化的资料,顺便把他不熟悉的音视频开发模块的知识也进行了整理。