基本情况
先说明一下本人的情况,我是一名 双非非科班 的大二学生,有不到一年的实习经验(大一下在一家小厂实习),上周投了字节跳动的简历,昨天面完试啦,就在这里分享一下面经和面试的感受吧。
本人平时除了安卓外,还自学了 Python、Java 后端等技术,有一定的技术广度,并且能够独立完成较完整的项目,下面先分享一下这轮面试遇到的题目:
字节跳动Android实习生一面题目
- 自我介绍
- Java的四种引用
- HTTPS的原理、握手过程
- 多线程如何同步
- synchronized和ReentrantLock的区别,你认为哪一种比较好,为什么
- 有用过哪些设计模式
- 如何理解依赖反转
- 如何理解多态(这个翻车了)
- 运行时多态/编译时多态(没看这部分…让面试官举了个例子,自己猜测了一下)
- MVC MVP MVVM的区别
- RxJava如何切换线程
- 3个View:A B C,A包含B,B包含C,在onTouchEvent中,对于ACTION_DOWN,A C返回false,B返回ture,对于ACTION_UP,A C返回true,B返回false,问谁消费了ACTION_UP事件…(好像答得是A,面试官说答错了,不过分析流程的时候把事件分发机制讲明白了,蒙混过关)
- 算法题:找出2个链表的第一个公共节点,要求空间复杂度O(1)
一面结束告诉我不要走,十五分钟之后二面开始
- 上来就是算法题:两个线程如何让线程A等待线程B的运行结果:一开始想用join,后来尝试synchronized,但都存在问题,最后想到了自旋
- 算法题:确定一个数组是不是二叉搜索树的后序遍历
- 聊项目
- Retrofit的实现原理
- Retrofit所使用到的设计模式
- 说一说观察者模式
- 对LiveData监听的的onChange方法什么时候会被调用(这个一开始答偏了,说内部的引用改变才会调用,后来经过提示是生命周期相关)
- 弹出一个Dialog,Activity中LiveData的onchange是否会调用
- 不用第三方库,自己尝试读取Bitmap,需要注意哪些问题(内存溢出和LRUCache)
二面结束告诉我可以休息半小时,等会直接三面(此时脑子已经一片浆糊了…)
- 聊项目
- 为什么学Android
- 怎么学Android
- 怎么重构项目
- 怎么提升自己
- 算法题:36进制加法
- 以后怎么打算的
- 能实习多久
连续三轮面试,真的好累啊…
面试感受
大家可以看到,面经上的题都是比较常见的问题。在准备面试之前,我可能对这些知识只是有简单的了解,但是在准备面经的这几天,我刷了很多字节的面经,自己尝试着去回答一些问题,我觉得这几天刷面经的这个过程对我来说还是效率比较高的,刷面经也可以帮我快速明确自身有哪些不足的点。
本来还是挺自信的,结果最后,面试官却对我说:你的基础还是挺好的,但是算法不行。
雀氏是酱紫啊,我本身是没去系统地学习过数据结构和算法的。。。。。
除此之外,面试官还说:虽然你学了 Python、Java、Android,知识很丰富。但是你现在最好找一个方向,并且让自己在这个方向上学得更有深度。
最后
最后,想给大家一些值得参考的小建议,我们可以通过刷面经、准备面试的过程中发现自己不足的点,从而帮助自己高效学习,而不是一直闭门造羹、不敢去尝试。在我大一的时候,就投简历到了京东,那次面试简直被面试官虐残惨了,一问三不知,其实就是当时自己的技术比较菜,当时可以说是磨灭了我一部分信心吧。通过这次面试,却让我重拾信心,让我看到了自己和大厂之间的距离正在渐渐缩小,也看到了一丝丝胜利的曙光,但是还是需要坚持不懈的努力 💪
![](https://i-blog.csdnimg.cn/blog_migrate/84087cf515ef4158d3d0fa5f356a8d44.jpeg)
在这里给大家分享我面试之前刷的面试题,希望对大家有帮助!
最后的最后,祝大家都能进入大厂,实现自己的目标,让我们一起加油努力!需要以上资料的扫码免费领取(
承诺100%免费
)
![](https://i-blog.csdnimg.cn/blog_migrate/84087cf515ef4158d3d0fa5f356a8d44.jpeg)