字节提前批一面(客户端开发(Android))
2. 面向对象的特性?
3. Java类修饰符
4. 不同修饰符的区别
5. 多线程了解吗?线程与进程说一下
6. 进程之间通信的方式(其中我答了一个socket,接着就往下深入了)
7. TCP和UDP的区别?应用场景(我答了浏览网页和QQ发消息)
8. TCP是哪一层的协议?IP呢?
9. TCP三次握手,四次挥手,握手最后一次能传数据吗?(答能传)又问那为什么会第三次握手,直接开始传数据不就行吗?四次挥手为什么不是三次?
10. QQ发消息用UDP怎么实现不丢消息的(面试官问我我会怎么解决,我答了TCP传送少量消息加UDP传送大量消息)为什么不直接用TCP?(我答,TCP慢,UDP快无需差错检测,大量消息用UDP会快些,TCP辅助验证消息确认消息发到,好像大致是这样的,哎……)
11. Https数据包的结构?
12. 产生死锁的条件
13. Synchronized与ReentrantLock讲一下
14. 现在有一个类A,里面有两个方法(打印一句话),一个静态方法,一个普通方法,都用synchronized修饰,现在生成一个对象,在两个线程里面分别调用这两个方法,两个方法里面的内容能正常打印出来吗?(我觉得能打印出来,后来试了一下确实能,但面试官一直问,似乎他觉得不可以,可能是我听错了?)
15. 比如微信发朋友圈,要上传完九张图片,最后才能发朋友圈?多线程是怎样实现的?(面试官引导了一下,C线程要在A线程和B线程执行完成之后执行,怎么实现,当时想着用锁,没想出怎么弄,最后答了一个用信号,类似于广播),面试官又问,信号会不会太多了,怎么解决?(最后确实答不上来,就过了)
16. 熟悉JVM吗?类装载过程是什么?
一直很奇怪,没问Android的问题,来了……
17. Activity的启动模?SingleTask的应用场景?(一时没想到怎么解释,面试官说了一个注册流程的的例子……说了好半天)
18. Handler机制?两个子线程能通过Handler通信吗?一个线程能有多个looper吗?在线程里面构建多个looper会怎么样?为什么只能有一个looper?(没答上来就结束了)
做题:大数相加,做完之后讲思路(面试官看我用C++写,就问我对C++熟悉吗?我说只刷题,不太熟,又问熟悉STL吗?我答只会用一些常用的,如vector、Map啥的)。
反问环节:问了一下它们是不是每个工作周期都是开发一个新的APP?所有定制组件都是自己重构的吗?Github上的代码能直接改了用吗?随便扯了一下
#字节跳动安卓工程师面经##字节跳动##面经##校招#