腾讯PCGAndroid一面面经

0、扯项目
说一下我想表达的重点吧:我做了AndroidQ的适配;我在项目中使用了新的技术:LiveData、BiometricPrompt;我使用到了设计模式:工厂、简单工厂、单例;我在不断优化我的代码;我关注Google开发者大会
1、扯实习
抓着实习中的技术点问了一通,然后后面问题的切入点就从这里来的。
2、EventBus和回调的对比。有没有其他办法可以解决类之间的耦合性。
说了LivaData,但其实和EventBus相同。就老老实实说不知道了……现在想了想应该讲一下设计模式相关的解决问题的思路。
3、Service和AsyncTask对比。
老老实实说因为AsyncTask由于不使用匿名内部类方式很可能出现内存泄露问题,所以自己不使用,基本都是开线程池。然后面试官问AsyncTask底层,也就说了一下handler+线程池。
现在回想,有这么几个点:生命周期方面;消息传递方面;底层实现方面。
4、ListView和RecyclerView的比较,ListView一无是处了吗?
说了实现效果,代码、缓存方面、ViewHolder的差异,讲了一下RecyclerView在多个Fragment中有相同Item时的优越性。
ListView这个问题问到我时我差点没笑出来……我看了微信团队对于卡包界面是否要更新为RecyclerView的一篇文章,建议背诵全文……
5、线程通信机制。
handler、信号量、互斥量、临界区管理synchronized之类的、共享变量volatile。
6、Android进程通信机制。
AIDL、Binder、共享文件。
前两个没啥说的了,老特长了。
说一下共享文件,这个我本来觉得很low,但是最近研究SharedPreference的时候,发现如果APP签名一样的话,可以使用同一个SharedPreference,所以也就说了共享文件。我不是想表达我用共享文件作为进程通信方式,我只是想说我了解SharedPreference。
7、ArrayList和Vector对比……不会Vector,那么ArrayList和LinkedList对比。
底层,数组,链表。扩容问题,我概括了一下所有的集合类的扩容方式都是装载因子+当前容量+需要扩容容量。
我说线程安全的List有CopyOnWriteArrayList,但是面试官没有往下问。
8、为什么扩容很多情况下都是扩容为两倍?
这个不会,但是说底层代码很多情况下扩容都是移位操作进行的。可能和查询相关?
9、HashMap和HashTable对比,ConcurrentHashMap。
HashTable不是Map,HashTable是Dictionary,而且锁的时候是锁数组,并发的粒度很大。
ConcurrentHashMap用的是分段锁而且有一个:判空+判相等+CAS+synchronized的一个锁的过程,所以很强大。
如果愿意可以看一下我的博客:https://blog.csdn.net/qq_43652500/article/details/104905294
10、CAS相关。
11、知道优先级反转吗?
不知道……回去研究去……
12、TCP三次握手四次挥手。
主要思路是通过SACK和全双工来整体讲解。
13、代码,如何判断两个链表是否相交
我最开始想成了找到第一个相交结点,然后说了思路,面试官说有没有更好的。然后直接判断最后一个结点是否相等。面试官说如果有环呢,那只能用HashSet存一下了。
14、反问。
小哥哥是什么事业群的呀。
小哥哥是PCG平台的,看来被PCG捞了。
小哥哥推荐一下Android学习的途径或者网站吧。
小哥哥是IOS工程师……
小哥哥觉得像操作系统、网络这些基础课程在未来工作中的作用大不大呀。
小哥哥觉得说如果不是封网络对应的基础操作,其实操作系统和网络在实际工作中用的很少。但是也有从底层构建上去的情况。

总结一下:整体答得还可以,就是以为是2点面试,结果3点30才面上,可能是我记错时间了。状态没有调整到最好。

约了31号晚上二面,诸位可以蹲一波面经。
#腾讯##面经##安卓工程师##校招#
全部评论
“微信团队对于卡包界面是否要更新为RecyclerView的一篇文章,建议背诵全文……”老哥,贴个链接呗
点赞 回复 分享
发布于 2020-04-07 16:54

相关推荐

想按时下班的大菠萝在...:隔壁学校的,加油多投, 实在不好找可以下个学期开学找,把算法八股准备好,项目有空再换换
投了多少份简历才上岸
点赞 评论 收藏
分享
人间雪:简历最好只要一页,除非你牛逼到一页都写不下了
点赞 评论 收藏
分享
评论
3
14
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务