字节跳动秋招一二三面凉经(android客户端)
我面试字节也是三顾茅庐了属于,每次都有新体验,现在面试已经很佛系了,只希望记录下来能对自己有所提高。
- Activity的生命周期?什么时候调用onResume方法,onSaveInstance怎么使用?
- Activity的启动模式?举例singleTask的使用场景,singleTask复用时都调用什么方法?
- fragment的生命周期,onAttach和onDetach的调用时机。
- 假如有一个Activity中有两个fragment,它们怎么进行通信?(答了可以往fragment中传入回调方法,面试官说也行)
- Handler内存泄漏的原理(为什么Handler的生命周期会比Activity长)
- 简单介绍一下Service以及它的用途,Service怎么和Activity进行通信?
- 简单介绍一下广播以及它的用途。
- android序列化有哪几种方式?为什么Parcelable的效率要比Serializable高?(这个真不知道)
- android事件分发机制?
- 场景题:有一个ViewGroup中有若干个View,此时想让左右滑动交给View处理,上下滑动交给ViewGroup处理,怎么做?(答了外部拦截法,重写ViewGroup的onInterceptTouchEvent方法,重写View的onTouch方法)
- 如果此时上下滑动结束后,未抬起继续左右滑动,则事件交给谁处理(此时ViewGroup将不再执行onInterceptTouchEvent方法,所以ViewGroup继续处理事件)
- Java线程同步机制?synchroized的原理?锁计数器是否可能大于1?(答了可重入锁可以大于1,不知道对不对)
- 场景题:使用synchoized手写一个阻塞队列(类似生产者消费者模型)
- tcp和udp的区别?tcp怎么保证可靠性?
- 介绍一下拥塞控制和流量控制?
- http和https的区别?为什么需要证书?
- https的请求过程?
- 用过什么设计模式?场景题:写一个常见的设计模式(写了动态代理)
- 算法题:判断链表是否是回文链表?
总结:有的知识只是了解个大概,对于细节部分需要自己亲自试验并进行记录。许愿二面
二面
总体感觉没有一面难,问了一些项目的问题
- 项目中的难点,如何解决?
- java的集合体系?HashMap,LinkedHashMap,HashTable,ConCurrentHashMap的区别
- synchronized和volatile的区别?
- 垃圾回收机制?
- Tcp可靠性原理?
- RecyclerView的复用机制?
- 自定义view流程?有没有做过一些比较复杂的自定义view?
- 有没有了解过kotlin,和java的区别在哪里?
- 算法题:二叉树的右视图
反问:java选手如何转kotlin?部门有没有跨平台的需求?
三面(好凉凉)
- 算法题:手写堆排序?
- 判断是否是完全二叉树?(有思路但是用例不对,有没有大佬给我解答一下)
- Tcp的拥塞控制?
- 说一下java的反射机制?项目中有没有用到过?
反问:新人培养机制?应届生怎么才能快速适应企业的实际开发?
总结:兄弟萌,算法很重要!算法很重要!算法很重要!