前言


大家应该看过不少人分享的面试成功的面经,是不是觉得自己“说不定也可以”呢?

这里重提一个理论:幸存者偏差。当取得资讯的渠道,仅来自于幸存者时(因为死人不会说话),此资讯可能会存在与实际情况不同的偏差。

所以,今天要分享的是凉经。

那些年凉掉的面筋
这些面筋来自经常跟我沟通的网友,在此公开也是得到了他们的许可的。今天只分析其中的一个。

这位是二面字节挂掉的朋友
三次面试失败全过程(总结、分享)——经验之谈_面试题

下面是他的面经
投的是抖音,感觉抖音的需求量大些,面上的可能性更高一些吧,但是我忘了一点供应量也是一样的大。。。

一面二面的时候感觉自己表现还不错,所以后面就有点飘,结果第三面准备不足,多人面试直接懵逼…(啊啊啊啊啊)

面试题主要问的有以下这些:

一面
(因为过程比较顺利,题目没有好好记下来,大概就是下面这些吧)

  • 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 了解的就不多,总之,我的表现我自己都看不下去了。

后面……没有后面了。性能优化真的是难到我了。

总结


字节跳动的面试难吗?
我觉得字节跳动的面试并不难,虽然字节跳动考的有些东西与其他家的有点不一样,但是同样道理,都是看基础。就比如其他朋友反映的,面试中有时候会问到的子网掩码的问题。

那些大厂问来问去,还是那些换汤不换药的问题。
三次面试失败全过程(总结、分享)——经验之谈_面试_02
图:Android 知识点总结

性能优化这个问题难吗?
其实,性能优化这个问题并不难,我当时在听完这位朋友的诉苦后整理了一份APP全方位性能优化的资料,顺便把他不熟悉的音视频开发模块的知识也进行了整理。
三次面试失败全过程(总结、分享)——经验之谈_面试题_03
图:性能优化部分大纲
三次面试失败全过程(总结、分享)——经验之谈_面试题_04
图:NDK模块开发目录

在这里,我附上当时发给这位朋友的这份资料的获取方式群:785128166

最后


Android学习是一条漫长的道路,我们要学习的东西不仅仅只有表面的 技术,还要深入底层,弄明白下面的 原理,只有这样,我们才能够提高自己的竞争力,在当今这个竞争激烈的世界里立足。

常言:种一棵树最好的时间有两个,一个是十年前,另一个就是现在。

千里之行始于足下,愿你我共勉。

如果你觉得本文对你有帮助,请不要吝啬的给我一个免费的关注和赞吧。