记⼀次腾讯社招Android⾯试(已拿到offer⼊职)
前段时间收到了腾讯的Offer,做的准备⼯作也是刷题和不断的充实⾃⼰的技术,其实⽬前腾讯的⾯试题并不是现在流传的那样,不过还算好顺利拿到了offer,下⾯来跟⼤家分享⼀下我遇到的⾯试题,主要是技术⾯试问题。
腾讯⼀⾯
2.⼴播和 EventBus 的区别?
3.常⽤设计模式你了解哪些?
4.跨进程通信有哪些?
5.简单讲讲 binder 驱动吧?
6.跨进程传递⼤内存数据如何做?
7.说说 ConcurrentHashMap 的实现原理说下,初始化⼤⼩是多少?
8.启动优化怎么优化?
9.你写的 rxpay 和 rxlogin 具体怎么实现的?
10.kotlin + fullter ⽅⾯的
android11适配机型腾讯⼆⾯
1.单例设计模式都写写,静态内部类是怎么保证线程安全的?
2.synchronized 底层实现原理,ReentrantLock 公平锁与⾮公平锁。
3.主线程等待所有线程执⾏完毕,再执⾏某个特定任务怎么实现?原理和源码看过没?
4.⾃定义 view 的⼀般流程,要注意些什么如何优化,点击事件和长按时间分别是怎么实现的?
5.四种启动模式,在源码分析中的原理是怎样的?
6.讲讲 bindService 的过程,你当初是怎么优化后台服务进程的?
7.开发中你都⽤到了哪些设计模式?说说当时具体的场景。为什么你要⽤⽅法⼯⼚,另外两种呢?
腾讯三⾯
1.讲讲 handler 的底层实现原理?
2.说说你做的⽇志记录优化?
3.你看过 binder 驱动的源码,说说他的内存映射过程,说说客户端等待服务端处理返回的流程,如果要跨进程传递⼤内存数据你具体会怎么做?简单写⼀写吧。
4.在公司做过哪些优化?
5.过程中遇到的⼀些最难解决的问题?
6.提到了动态修复替换加载 so ,那你知道怎么修复 class 吗?怎么修复资源呢?
7.还有什么要问的?
总的来说,⼀⾯的⾯试官⽐较亲切,⼆⾯⾯试官要严肃些,说话⽐较有⽓场(应该是个leader),三⾯的话压⼒就有点⼤了。幸运的是最后顺利拿到了Offer。
下⾯分享⼀下⾯试前的准备技巧和⼀些Android⾯试要点:
引⼈注⽬的简历
准备简历有两点是绝对要记住的:不要等到真正开始⼯作前⼏天才开始准备你的简历,越早准备越有优势!
简历⼀定要⽤ PDF 格式,⼀定要⽤ PDF 格式,⼀定要⽤ PDF 格式!
简历真的很重要很重要,招聘系统或者是邮箱⾥⼀天可能会收到⼏⼗万份甚⾄更多的简历,HR可能打开10秒都不够就决定这份简历是不通过还是进⼊下⼀阶段了。
简历的⽬的:让企业的⼈从整体上了解你是⼀个具备什么能⼒的⼈。
常见的⾯试⼩技巧
⾯试有很多⼩技巧的,特别是和 HR 对线的时候(HR看到不要我呀,害怕.jpg)
不懂不要说不懂:⾯试官在知识深度上超出我们的掌握范围,如果问到不懂可以参考下⾯的做法:
可以结合⾃⼰的理解去回答,⽆论正确与否,虚⼼请教
若是有标准答案的问题但不懂,可以说:“⽬前还没有接触到这部分知识,⾯试完以后会去学习,加强理
解!”
引导⾯试官:⾯试官抛出⼀个问题时,围绕该点展开回答,可以串联⼀些其它知识,但不要说太多,引导⾯试官:
提到 ArrayList 时,提⼀下 LinkedList,引出 LinkedList
提到 HTTP 时,提⼀下 HTTPS,引出 HTTPS
⼿撕代码:切忌抬⼿就写,要确定题意,对有不理解的地⽅要敢于提问。解题时跟⾯试官说⾃⼰的思路,以及每⼀步⼲什么,⼀边写⼀边向⾯试官解释。
不要⼀开始就追求最优解,⾯试官不会太反感粗糙的代码,但他希望你是⼀个有逻辑、思路严谨的⼈。
⾯试官会引导你优化你现有的代码,不必因为⼀开始写不出最优解⽽苦恼。
反问环节:要从⾯试官那⼉获得对⾃⼰的反馈,⽐如:
当前企业最主要的技术栈是什么?
公司⽬前的主要业务是什么?该岗位主要负责什么内容?
Android ⾯试要点
下⾯分享⼀份我之前整理的Android⾯试资料,希望能帮助到有⼼在技术这条道路上⼀路⾛到⿊的朋友!
⼀、Android基础+进阶
1.Activity启动模式
2.Activity的启动过程
3.进程通讯
4.Android Binder之应⽤层总结与分析
5.进程保活⽅法
6.从源码了解handler looper ,messageQueue思路
7.handler如何实现延时发消息postdelay()
8.Android中为什么主线程不会因为Looper.loop()⾥的死循环卡死?
9.RxJava原理及如何封装使⽤
10.okhttp源码分析
…
12.LeakCanary核⼼原理源码浅析
13.LruCache 使⽤及原理
14.ARouter原理
15.注解框架实现原理
16.Android 如何编写基于编译时注解的项⽬
17.RxJava2+Retrofit2+OkHttp3的基础、封装和项⽬中的使⽤
18.Rxjava2.0+Retrofit+Okhttp(封装使⽤)+MVP框架搭建
19.Android 插件化和热修复知识梳理
20.Android开发中⽐较常见的内存泄漏问题及解决办法
21.如何检测和定位Android内存泄漏
22.图⽚占据的内存算法
23.为什么图⽚需要⽤软引⽤,MVP模式中的view接⼝⽤弱引⽤
24.基于DataBinding与LiveData的MVVM实践
25.App稳定性优化
26.App启动速度优化
27.App内存优化
28.App绘制优化
29.App瘦⾝
30.⽹络优化
31.App电量优化
32.安卓的安全优化
33.为什么WebView加载会慢呢?
34.如何优化⾃定义View
⼆、Java基础+进阶
1.HashMap
2.ArrayList
3.LinkedList
4.Hashset源码分析
5.内存模型
6.垃圾回收算法(JVM)
7.垃圾回收机制和调⽤ ()的区别?
8.类加载过程
9.反射
10.多线程和线程池
11.创建多线程⽅式、线程池⼯作原理
12.设计模式(六⼤基本原则、项⽬中常⽤的设计模式、⼿写单例等)
13.断点续传
14.Java 四⼤引⽤
15.Java 的泛型
16.接⼝、抽象类的区别
17.从 java 容器类的设计讨论抽象类和接⼝的应⽤
三、数据结构与算法⾯试题
1.常⽤的数据结构有哪些?
2.数组
(1).如何在⼀个1到100的整数数组中到丢失的数字
(2).如何在给定的整数数组中到重复的数字? (⼩⽶)
(3).如何在未排序整数数组中到最⼤值和最⼩值?(字节跳动)
(4).在Java中如何从给定数组中删除多重复制?
(5).⼤数相加(今⽇头条)
3.链表
(1).那查询第⼀个跟倒数第⼆个呢?(这就不⼀样了,第⼀个直接给了头结点,倒数第⼆个需要从倒数第⼀个开始查询,⾛两步) (腾讯)
(2).arrayList底层原理 (滴滴)
(3).如何在⼀次遍历中到单个链表的中值?(中国平安)
(4).如何证明给定的链表是否包含循环?如何到循环的头节点?(优酷)
(5).两个有交叉的单链表,求交叉点 (华为)
(6).如何得到单链表的长度?(360)
(7).如何在不使⽤递归的情况下逆转单链表?(⼩⽶/美团)
(8).怎么判断链表有环? (滴滴)
4.队列&堆栈
(1).如何使⽤栈实现队列的功能(⼴州荔枝FM)
(2).两个栈实现⼀个队列(蘑菇街)
(3).两个队列实现⼀个栈 (腾讯)
(4).对⽐⼀下队列和栈,以及它们底部实现 (腾讯)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论