深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
字节跳动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,知识很丰富。但是你现在最好找一个方向,并且让自己在这个方向上学得更有深度。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!