TME Android一面 9/ 7 45min

10分钟后状态变为复试。

开局聊实习,聊了大概5分钟。

操作系统:
1、进程线程区别(基本上都讲了)
1)定义上看:进程是系统资源分配与调度的基本单位,线程是CPU运行调度的基本单位
2)进程拥有资源,线程只拥有自身运行时必须资源,如PC寄存器、线程ID等等
3)进程创建、销毁、切换开销大(需要分配系统资源),线程创建、销毁、切换开销小(无需分配系统资源)
2、进程通信方式(7种都讲了以及原理)
1)管道通信:基于有亲缘关系的进程间的通信,其原因是文件描述符有继承关系才能继承,才能通信,本质上是利用在内存中开辟一个文件来进行通信,文件的一端用来写、一端用来读。缺点是需要双方同时在线才能够进行通信。
2)命名管道:通过给定一个文件描述符来实现无亲缘关系的管道间通信。其余与管道一致
3)消息队列:消息队列是保存在内核中的消息链表,本质是通过操作系统的消息发送指令,将数据按照一定格式进行发送,先发送到PCB中缓存,在发送到内存中进行缓存,最后对方就可以在读取消息。打破了管道需要在双方同时在线的情况下才能读取的弊端。同时也支持多进程同时发送。
4)共享内存:是一种效率最高的IPC方式,通过在一个进程中开辟一个共享空间,双方通过这个共享区域来进行消息通信。(进程间的数据是隔离的)
5)信号量:通过一个计数器,双方进程来通过这个计数器来实现同步。也是一种IPC方式
6):操作系统指令,主要用于异常情况下进程间通信,如进程死亡、阻塞。是通信机制中唯一的异步通信机制。
7)Socket:可以用来实现跨主机间的进程通信,也就是网络通信。

计算机网络:
1、访问域名全过程(老八股了)
太多了,不说了
2、访问域名建立连接过程(实际上就是TCP建立阶段,把发送报文的所有seq值啥的都讲了)
TCP三次握手:
第1:客户端发送SYN报文,包括2个字段:SYN = 1 ,seq = n
第2:服务器发送SYN报文,包括4个字段:SYN = 1 ,seq = y,ack = n + 1 ,ACK = 1
第3:客户端发送ACK报文,包括3个字段:ACK = 1, seq = n + 1, ack = k + 1
3、TCP拥塞控制阶段发生在什么时候?快重传呢?
1)拥塞控制发生在滑动窗口值达到窗口阈值后,将窗口增长速度由2n讲到n + 1
2)快重传发生在连续收到三个相同的ack信号后,将窗口值降为窗口阈值(快恢复)
4、TCP、UDP有什么区别
1)连接的角度看:TCP建立了解、UDP无连接
2)可靠性的角度看:TCP提供可靠的服务,UDP提供不可靠的服务
3)传输的单位上看:TCP使用字节传输,UDP以报文为单位传输
4、头部长度看:TCP长度较长,UDP长度较短
Android:
1、讲一下Binder机制
Binder机制是Android特有的一种IPC方式,其实现类似共享内存。
Binder机制主要有两个特点:
1)效率高:是一种类似共享内存的方式,在空间中,双方在此区域建立数据映射,然后再此空间中进行通信。总共只需要进行两次复制。
2)安全:双方在通信时,进入该区域需要检验ID,ID生成是由内核生成,外部难以破解。
Binder机制缺点:
主动权掌握在发送方,接收方无法确认发送过来的数据是多大,应该用多大的空间来存储。
2、讲一讲Handler(知道的全讲了)
Handler是Android的一种异步信息通信机制。其有几个角***r />
1)Message:传递数据的载体
2)MessageQueue:消息队列,用来存放消息,其数据结构是一个按照时间排序的链表
3)Looper:事件分发器,内部不断循环来获取Message并发送给对应的Handler
4)Handler:事件的发送者和处理者,将Message发送给Message,将Looper发送过来的Message进行处理。
此外还有几点:
1)Message按照时间排序,其中若插入一个掩饰任务,则会按照事件顺序放到MessageQueue中
2):消息屏障本质上也是一个消息,只不过是用来屏蔽消息屏障后面的所有同步消息不执行,以确保异步消息能够先执行。
3)数量关系:1个Handler只能绑定1个Looper、1个MessageQueue,1个Looper对应一个Message。

3、讲一下View的时间分发过程
大体流程:
Activity -> window -> phoneWindow -> ViewGroup -> View。
详细流程:
Activity.dispatchEvent() -> PhoneView.dispatchEvent() -> DecorVide.disPatchEvent() -> ViewGroup.disPatchEvent() -> ViewGroup.OnInterceptorEvent()判断是否拦截若拦截,执行 -> onTouchEvent() ,若不拦截执行:- > View.dispatchEvent() -> view.onTouchEvent();
若此过程事件都没有被消费,则一路返回到Activity的dispatchEvent()执行,结束。

若此时有一个DOWN事件被拦截,其他的事件都会直接到该onTouchEvent()。
若此时只有DOWN事件被拦截且不消费,该事件会返回父级处理。
若此时DOWN事件被拦截且消费,事件不再传递,后续全部消费掉。

Java:
1、讲一讲HashMap的数据结构
2、HashMap怎么处理数据冲突问题
3、还有什么处理冲突的方法

算法:
1、如何用2个栈实现队列
2、如何用2个队列实现栈(这里卡了大概几分钟,原来就是队列出列出到剩下最后一个,然后当成栈顶出去)
3、快排讲一下

代码:
写一下用栈实现队列

到这里大概30min。
反问环节 :
Q: 表现怎么样?
A: 在我这边算是还好,基础扎实,对自己实习做的事也有条理,就是参与项目开发比较少,比较可惜。
整体觉得你的学习能力比较强。要不我们聊聊项目把。(然后聊了5分钟项目)
Q:什么时候出结果?
A:校招我不太清楚,社招的话大概7天内出结果。还是比较快的。

结束。

#Android面试##面经##腾讯音乐娱乐#
全部评论
居然没过吗 唉
点赞 回复 分享
发布于 2022-04-08 15:43

相关推荐

程序员鼓励师阿欢:哈哈哈哈哈笑死我了😂
点赞 评论 收藏
分享
咦哟,从去年八月份开始长跑,两处实习转正都失败了,风雨飘摇,终于拿到offer了更新一下面试记录:秋招:多部门反复面试然后挂掉然后复活,具体问了啥已经忘了,只是被反复煎炸,直至焦香😋春招:base北京抖音hr打来电话说再次复活,准备面试,gogogo北京抖音一面:六道笔试题:1.promise顺序2.定义域问题3.flat展开4.并发请求5.岛屿数量算法(力扣)深度,广度都写6.忘记了,好像也是算法,难度中等其他问题多是框架底层设计,实习项目重难点~~~秒过😇北京抖音二面:三道笔试题:(为什么只有三道是因为第三道没做出来,卡住了)1.中等难度算法(忘记啥题了,应该是个数组的)2.认识js的继承本质(手写继承模式,深入js的面相对象开发)3.手写vue的响应式(卡在了watch,导致挂掉)---后知后觉是我的注册副作用函数写得有问题,有点紧张了其他题目多是项目拷打,项目亮点,对实习项目的贡献~~~第二天,挂,but立马复活转战深圳客服当天约面深圳客服一面:六道笔试题,由于面过太多次字节,面试官叫我直接写,不用讲,快些写完😋,具体都是些继承,深拷贝(注意对数组对象分开处理,深层次对象,循环引用),加中等难度算法题~~~秒过深圳客服二面:口诉八股大战:大概囊括网络,浏览器渲染原理,动画优化,时间循环,任务队列等等(你能想到的简单八股通通拉出来鞭尸😋)算法题:笔试题6道:1:找出数组内重复的数,arr[0]-arr[n]内的数大小为[1-n],例如[1,2,2,3,3]返回[2,3],要求o(n),且不使用任何额外空间(做到了o(n),空间方面欠佳,给面试官说进入下一题,做不来了)2:原滋原味的继承(所以继承真滴很重要)3:力扣股票购买时机难度中等其他滴也忘记了,因为拿到offer后鼠鼠一下子就落地了,脑子自动过滤掉可能会攻击鼠鼠的记忆😷~~~秒过深圳客服三面:项目大战参与战斗的人员有:成员1:表单封装及其底层原理,使用成本的优化,声明式表单成员2:公司内部库生命周期管理成员3:第三方库和内部库冲突如何源码断点调试并打补丁解决成员4:埋点的艺术成员5:线上项目捷报频传如何查出内鬼成员6:大文件分片的风流趣事成员7:设计模式对对碰成员8:我构建hooks应对经理的新增的小需求的故事可能项目回答的比较流利,笔试题3道,都很简单,相信大家应该都可以手拿把掐😇~~~过过过无hr面后续煎熬等待几天直接hr打电话发offer了,希望大家也可以拿到自己心仪的offer
法力无边年:牛哇,你真是准备得充分,我对你没有嫉妒,都是实打实付出
查看19道真题和解析
点赞 评论 收藏
分享
评论
13
34
分享

创作者周榜

更多
牛客网
牛客企业服务