字节跳动Android开发校招果经
---- update 收到白菜包 -_- -----
今天收到HR微信联系说三轮面试通过,报一下Timeline和面经
国内时间周五面的三轮视频面
第一轮:
问了大量的Android和Java相关的技术问题,大部分都不太难
Activity启动模式
Service讲一下有哪些实现方式,区别是啥
Service生命周期
IntentService原理
RecyclerView熟悉吗,讲一下底层如何实现Item复用
比较一下ListView和RecyclerView
两个RecyclerView嵌套会有什么问题
TaskAffinity干啥用的
Android跨进程通信机制
讲一下ContentProvider
Java 比较一下set、list和map. HashMap原理
HashMap有哪些遍历的方法,是不是线程安全的,哪些是线程安全的,讲一下rehash
TCP三次握手 四次挥手 以及为什么是三次和四次
TCP UDP区别
Coding:
1. 两个链表求和,返回结果也用链表表示 1 -> 2 -> 3 + 2 -> 3 -> 4 = 3 -> 5 -> 7 秒了
2. 反转链表
第二轮:
这轮技术问题少了很多
讲一下Android的消息机制
Android点击事件分发机制
还有一些不太记得了,都还比较基础
coding:
在数组中查找target第一次出现的位置(数组含重复元素) 秒了
结果答完题才花了二十分钟左右,面试官让问问题,我就问了一下头条的日常工作是如何进行分工的,然后扯了十多分钟
第三轮:
leader面。这轮本来感觉要崩,问了一堆开发中用的一些工具,好多我名字都没听过,汗。。。
记得的还有
讲一下Android的持久化方案
如何实现缓存,结合持久化方案讲一下
coding:
这轮没有coding,面试官说看你前面的算法题都答得不错,编码能力应该没啥问题,然后问了几个问题就愉快的结束了,还加了一波微信。
总体来说面试感觉比较常规,没想象中的难。重点是我觉得就我的面试感觉来看。客户端开发这一块,我觉得头条着重考察的是你的基础知识是不是过关,然后coding的能力如何。最后一轮的面试官也是说,好多开发常用的工具,不在实际的开发环境中,只是自己做些个人项目是很难涉及到的,新人只要基础知识过关,coding能力过关,进来学就行了。
所以除了基础知识部分外,觉得算法题这块是比较重要的,尽量做到bug free,时空间复杂度最优,代码整洁规范,然后写完主动给面试官跑一下test case,会给面试官留下比较好的印象,毕竟客户端开发一版面的算法题都不难。
最后问一下头条HR面一般问些啥啊,求经验