腾讯新闻 Android 暑期实习 一二面 凉经
- 在字节今日头条有10个月的实习经历,腾讯新闻和今日头条有很多类似的地方,面试官会结合实习经历问一些业务中的场景题,部分问题没想出来会一步步引导,体验不错;
- 最后挂的原因,我觉得是二面算法题想到了思路但是没写出来,八股和业务聊得还不错;
- 记录的是能想起来的一些问题,答案仅供参考,建议自己查一下,一般都会问的比较深入。
一面 55mins
实习经历聊的比较多,没有问java基础了,问了一些android相关的内容。
- 实习经历聊了半个小时左右,头条和腾讯新闻比较贴
- 自己介绍:主要业务需求
- 发布面板同构详细问了下:做了什么?无用资源如何清理?图片压缩怎么做?线上大图怎么监控?
- 预览功能:如果要求发布后的预览内容展示在个人中心,数据存在哪?(由于是审核中版本,需要存在本地。SqLite数据库,比文件快,版本更新时不需额外兼容处理)
- 第三方组件用的什么:Airbnb的Lottie、头条的Router
- 一般用什么架构? MVP、MVVM
- Android
- 线程池参数:最大核心数,最大线程数,一个新的线程来了怎么办;线程是如何复用的,一个执行完run方法的线程怎么保证不会回收?(线程池当未调用 shutdown 方法时,是通过队列的 take 方法阻塞核心线程(Worker)的 run 方法从而保证核心线程不被销)
- Handler 如果没有消息了,messagequeue怎么办?(Looper不会一直消耗系统资源,当Looper的MessageQueue中没有消息时,或者定时消息没到执行时间时,当前持有Looper的线程就会进入阻塞状态。)
- 主线程为什么搞一个死循环?
- HashMap,failfast机制(使用迭代器遍历过程中集合结构改变):ConcurrentModificationException 第一次听Failfast,幸好遇到过
- 垃圾回收机制,回收的是哪些文件,引用计数法缺点(循环引用 无法释放资源)
- Fragment的生命周期
- 计算机网络:Https如何加密?对称和非对称结合的方式,对称加密用来加密传输的内容,非对称加密用来加密密钥。客户端拿到的是公钥还是私钥?私钥
coding:有序数组第一个小于n的下标,不存在返回-1(二分,注意边界)
二面 60mins
- 实习经历
- 发布面板同构做了什么?如何实现代码隔离?
- 插件是怎么依赖的?
- router 是怎么实现的?好处在哪?(其他业务方调用可以直接使用路由,而不是依赖于intent。简单便捷)
- .dex比.class好在哪(Android特有的,提高性能)
- 有处理过OOM的bug么?(没有,都是偏功能性的bug)
- 网络框架用的什么?(头条自己封的Retrofit)
- Android
- fragment生命周期,detach之后再恢复,会经历哪些阶段?(onPause()→onStop()→onDestroyView()→onCreateView())
- handler是如何工作的,包括哪些内容?主线程创建的子线程可以注册handler么?(不可以,必须先创建looper,主线程的looper是系统自动创建的)
- RecyclerView如何避免滑动时候卡顿?缓存机制?(四级,mAttachedScrap + mCacheViews + mViewCacheExtension + mRecyclerPool,缓存RecyclerView.ViewHolder,新数据无需重新bindView)对图片加载有没有什么特殊的策略?
- Java
- GC:
- 如何判定一个对象可回收?(引用分析、可达性分析)
- 引用类型包括哪些?(强、弱、软、虚,回收激进策略分析)
- 弱引用在什么时候使用?(Activity或者Fragment上,方式内存泄漏)
- volatile关键字的作用 (保证变量的内存可见性,禁止指令重排序即有序性)
- GC:
Coding:[3, 31, 26, 45, 33, 120] 排列生成最大的整数(转换成字符串, 判断a+b和b+a谁大, 可以用冒泡直接排)
- 反问:主要问了些业务问题
- 发版节奏,多久更新一次?
- 业务包括哪些体裁?
- PGC和UGC,腾讯新闻主打PGC,头条兼顾PUGC