腾讯元宝客户端实习二面面经
前言
最近身体不太舒服(体测,一生之敌),感觉今天面试发挥一般般
正文
算法相关
这次不是手撕了,而是根据场景选择合适的数据结构来完成场景任务。
场景任务为选择一个合适的数据结构维护一个top10的热搜词,还有千亿级的搜索词
因为之前从来没有接触过这类问题,前半段答得牛头不对马嘴😭
后面经过面试官持续描述,加上说到O(1)的时间复杂度,才想起哈希表qwq
然后关于top10热搜词,我想到了二叉树,然后就是堆,但是我之前堆接触的比较少,凭着记忆以为是最大堆,后面面试官说应该是最小堆()
项目相关
提问:MVC、MVP、MVVM、MVI是什么,有什么区别
这个问题我会,属于是八股内容了,然而接下来问题让我懵了
那MVVM有哪些缺点?如果一个简单的应用,不考虑activity生命周期以及屏幕旋转,是用MVVM好还是MVC好?
说实话我之前还真没觉得MVVM这种架构有什么缺点,它基本上解决了Android APP MVC架构下各种耦合、引用持有问题,而且平常也没有那种极致渲染要求场景,确实是没考虑到。
面试官的回答是MVC架构更简单,MVVM有一层封装,会有额外的性能开销。确实,对于这种人为限定场景来说,MVC确实比MVVM合适。
提问:协程和线程有什么区别
这个问题属于八股内容,八股答法+结合自己的理解
提问:协程是否能实现真正的并发,再加上额外限制例如单核CPU。
当时脑子不在状态,答得不是很好。这个具体看实现,而且并发和并行是两个概念,想要实现真正的并行那确实是需要多核CPU,但是并发只需要多个任务同时执行,通过切分CPU时间片达到并发任务执行。而协程是建立在线程之上的,如果按照并发设计是可以实现真正的并发的。
提问:协程和线程哪个是用户态,哪个是内核态
这个没什么异议,协程底层就是一个线程池,本质是一个状态机,没有系统调用等开销,运行在用户态。而线程需要通过系统调用和系统进行交互,开销大。
提问:activity生命周期,activity跳转的生命周期
依旧是八股问题,第一个答对了,第二个之前看过但是忘记了qwq,面试官叫我面试完自己试试😭
提问:Compose重组发生在什么时候,如何避免无效的重组(终于有compose的内容了qwq)
直接秒了
提问:http中1.x,2.x,3.x有什么区别。分别优化了什么
秒了
追问:http2.x相较于http1.x,内容传输上有什么不同
这个确实是忘了,主要是变成了二进制传输来连接复用
提问:询问项目缓存机制
秒了
提问:列表如何进行缓存设计
答得不是很好,一个是语言组织上,另一个是没回答完全,只说到了本地缓存,后面面试官说可以做二级缓存,使用内存进行缓存才恍然大悟。
提问:平常哪些场景使用了AI Coding
劈里啪啦说了一大堆,过
最后反问
后记
这次发挥的不是很好,希望能过吧qwq
Use this card to join MyBlog and participate in a pleasant discussion together .
Welcome to GoodBoyboy 's Blog,wish you a nice day .
