快捷搜索:  汽车  科技

顺利拿到互联网大厂研发岗offer(熬夜2个月喜提26k字节安卓岗offer面经分享)

顺利拿到互联网大厂研发岗offer(熬夜2个月喜提26k字节安卓岗offer面经分享)1.聊简历。2.性能优化,展开讲了卡顿,内存。3.数据结构的题,hashCode的扰动算法,涉及到一个数字,31,这个31是怎么来的?4.类的static属性字段,比如 public static int a = 1,被赋值几次?(这个需要对类的加载机制有了解。)5.多个Activity共同bind一个service,一个Activity destory,问service的情况。(这里就是问service的生命周期,考察bind跟start的区别。)6.装饰器模式,跟代理模式的区别。(考察对常用的设计模式)7.okhttp的缓存逻辑实现。(我以为是问的 链接缓存跟io缓存,我回答的是连接池复用跟 okio的io复用。后来提醒是cache 就回答CacheInterceptor,及其源码实现。)8.SharedPreference的commit ,apply区别。9.SharedPrefer

前言

从2020年11月开始面试准备到2020年最后一天31号晚上7点收到短信offer,历时两个月,在熬夜猝死边缘疯狂试探的我,终于等来我梦寐以求的“跨年礼物”。

“日尼玛,退钱”,《温暖的抱抱》电影前10分钟的开场剧情,让我不禁想着该如何说服朋友一起离场,却被自己短信铃声拉回了思绪,“应该调成静音的”。无聊的剧情本就让整个电影院变得十分寂静,赶紧把手机调成静音,翻阅短信一看抬头是“字节跳动”的短信offer。至此,电影剧情也开始笑点频出,“嗯,是一部不错的爆米花喜剧电影”电影结束后和朋友议论道。

对于这部电影的看法,仅是个人观点,不喜勿喷。闲话好像说的有点多了,不过希望朋友们理解下我想跟大家分享这份喜悦的心情。回归正题,面经分享!希望对大家有借鉴意义和帮助。2个月的时间总共是面试了9家,(2小,4中,3大厂),小的都拿下了(压根儿没想去,主要是面试练练手,检验下自己的水平),4中里3个一轮游,1个三轮游,3个大厂最后拿到了字节的offer,阿里的一面就挂了,腾讯的到了三面。

大小厂的面试要点简要
  • 小公司会比较偏重于业务,面试上也偏重业务(但也少不了算法题,字节就每轮必问),比如做了什么,大概方案,用了哪些库,库的原理。这些基本上会集中在图片处理,网络封装,自定义view这几个部分。
  • 大厂会从业务入手,递进深入到原理及相关知识点,尤其集中在原理部分,这里对平时源码阅读有一定要求。或者直接问对xxx源码有没有了解。比如一个handler机制,因其涉及的地方特别多而且很容易展开,想完美答好,真的不是一次两次就能行的。

建议每次面试完,都及时对面试内容进行回忆记录,当前这里不是为了泄题漏题,以后吹牛逼,这个没有任何意义。目的是进行复盘,打磨自己的回答。这也是我为什么在面试大厂之前会先去小、中场先去试水以及写下这篇面经分享的原因。其实在前半个月我就已经面完了6个小、中场,也正是在中厂这环节的挫败,让我余下的一个多月都在做复盘、查漏补缺,为面试大厂做准备。

简历书写

强烈建议,把自己的强项,亮点加粗注明放在简历前面,大家都很忙,也很烦躁,让人一眼就看到优点,对双方都友好。因为我对Android性能优化方面感兴趣,平时工作也花了很多时间在这里,所以我会在简历上突出说明,我做了内存优化,熟练掌握使用xxx,内存性能提升xxx(因为这里的内容是可控的,如果面试官对你感兴趣,这里的回答你也是能提早准备好的)。

项目经历如何写?建议按照是什么,做了啥,有啥数据指标佐证的方式去写。比如,我做了xx项目,负责xx模块,使用了xxx框架,可配合xx做xxx,效率提高xxx%这样子。

以上仅为自己的个人经验,仅供参考,接下来给大家分享下我的字节三面技术面和腾讯三面的面试题分享(阿里一面就挂了,就不献丑了)。

字节一面

1.先聊简历。
2.聊性能优化方面的问题,我这边体系化展开讲卡顿,瘦身,内存,crash等方面的优化经验。
3.sychronized,volatile区别?
(这里可以体系化的回答,主要从JMM角度去回答,最后深入到字节码层面的区别。因为提到了修饰的范围有差别,就有了下一题。)
4.对于锁的对象的不同,效果会有什么差别。
5.讲一下Handler机制。
(这个问题问得太多了,一定要去看一回源码。重点答的是MessageQueue这块,包括什么时候空闲,阻塞。发散讲了线程相关的ThreadLocal,还有IdleHandler)
6.出了一个设计题,当你的服务商出现问题,设计一个网络请求可用性的兜底方案。
(大概从HttpDNS,域名容灾等方面回答吧。)
7.设计一个方案,apk已经发出去了,java代码是最新,但是分包下发的so文件是旧版本,如何做一个兼容方案,保证兼容可用。
(这里没答好,我也忘了怎么答的了。)
8.Java类加载机制。
(这是个基础概念题,没答好,回答的双亲加载机制。
然后引出PathClassLoader,DexClassLoader的区别,一个dex的加载到一个java类的加载过程。)
9.一道算法题。

字节二面

1.聊简历。
2.性能优化,展开讲了卡顿,内存。
3.数据结构的题,hashCode的扰动算法,涉及到一个数字,31,这个31是怎么来的?
4.类的static属性字段,比如 public static int a = 1,被赋值几次?
(这个需要对类的加载机制有了解。)
5.多个Activity共同bind一个service,一个Activity destory,问service的情况。
(这里就是问service的生命周期,考察bind跟start的区别。)
6.装饰器模式,跟代理模式的区别。
(考察对常用的设计模式)
7.okhttp的缓存逻辑实现。
(我以为是问的 链接缓存跟io缓存,我回答的是连接池复用跟 okio的io复用。后来提醒是cache 就回答CacheInterceptor,及其源码实现。)
8.SharedPreference的commit ,apply区别。
9.SharedPreference的其性能问题。
(apply的anr是有一个字段,会block住主线程,需要清理queuedWork队列。)
10.SharedPreference线程安全性,还有是否进程安全,SharedPreference锁的对象是谁?
11.synchornized锁对象,汇编实现。volatile的汇编实现。
12.volatile 修饰 boolean能保证原子性么?
13.Android有哪几种动画。
14.设计题,设计一个埋点数据上报库,需要哪几个模块,提供哪样的接口。
15.算法题,生产消费者模型。
16.ConcurrentHashMap的相关。
(包括实现原理,put方法,树化,扩容,继承了谁,扩容的时候,其余桶怎么感知。)
17.安卓打包签名v1,v2,v3的区别。

字节三面

1.装饰器模式,适配器模式区别。举个Android或java里的应用例子。
2.单例的优缺点。
3.架构有做过么。
4.说一下项目,项目中最能体现你能力的事情。
5.平时怎么学习的。
6.以后的职业规划
7.离职原因
8.插件化,做过插件化么,了解的主流方案?
9.算法题。

腾讯一面

1.mmap native 日志优化?
2.广播和 EventBus 的区别?
3.常用设计模式你了解哪些?
4.跨进程通信有哪些?
5.简单讲讲 binder 驱动吧?
6.跨进程传递大内存数据如何做?
7.说说 ConcurrentHashMap 的实现原理说下,初始化大小是多少?
8.启动优化怎么优化?
9.你写的 rxpay 和 rxlogin 具体怎么实现的?
10.kotlin fullter 方面的

腾讯二面

1.单例设计模式都写写,静态内部类是怎么保证线程安全的?
2.synchronized 底层实现原理,ReentrantLock 公平锁与非公平锁。
3.主线程等待所有线程执行完毕,再执行某个特定任务怎么实现?原理和源码看过没?
4.自定义 view 的一般流程,要注意些什么如何优化,点击事件和长按时间分别是怎么实现的?
5.四种启动模式,在源码分析中的原理是怎样的?
6.讲讲 bindService 的过程,你当初是怎么优化后台服务进程的?
7.开发中你都用到了哪些设计模式?说说当时具体的场景。为什么你要用方法工厂,另外两种呢?
8.RxJava 在使用过程中碰到了某些不友好的错误一般怎么解决?发现了内存泄露一般怎么解决分析,有没有9.碰到过系统服务内存泄露的问题?
10.你们用的 okhttp ?那你有没有做过一些网络优化呢?比如弱网环境。
11.给你个数 1 吧,比如 1000011 里面有几个 1 ?
12.快排了解不?最坏的情况是怎样?如果有大量重复数据怎么优化?

腾讯三面

1.讲讲 handler 的底层实现原理?
2.说说你做的日志记录优化?
3.你看过 binder 驱动的源码,说说他的内存映射过程,说说客户端等待服务端处理返回的流程,如果要跨进程传递大内存数据你具体会怎么做?简单写一写吧。
4.在公司做过哪些优化?
5.开发过程中遇到的一些最难解决的问题?
6.提到了动态修复替换加载 so ,那你知道怎么修复 class 吗?怎么修复资源呢?
7.还有什么要问我的?

最后

写下这篇文章一是分享自己入职大厂的喜悦,真正意义上靠着自己的努力完成了人生的第一个“梦”。二是为这个过程做一个复盘和记录,以此激励自己“更上一层楼”。我觉得这样的一次经历,一次“追梦”的经历,给了我相信自己的勇气,我不知道要是这次的“跳槽”要是没有拿到大厂offer会怎么样?但我庆幸迈出了这一步,将这一变成了“已知数”,而只是心中的喃喃自语“我应该做不到”。

我想我可能是幸运的,同时未来也还有很长一段路要走,毕竟996的福报也是要拿“命”来换的(最近猝死新闻太多,不禁寒颤,各位朋友保重身体)。另外最后的最后,我觉得这次经历中最为重要,最具有分享意义的一个阶段,就是中厂的面经的挫败,从而复盘、查漏补缺的一个过程。我将2个月期间所有面试真题做了归纳整理并收集资料做了参考解析,还包括一些学习笔记分享,做成了一个复习手册。如果有需要的朋友,整理不易,请随手点赞 任意评论后,后台私信我获取哦!

顺利拿到互联网大厂研发岗offer(熬夜2个月喜提26k字节安卓岗offer面经分享)(1)

Android复习手册目录截图

顺利拿到互联网大厂研发岗offer(熬夜2个月喜提26k字节安卓岗offer面经分享)(2)

Android中高级面试题部分内容截图

整理不易,随手点赞 任意评论后,后台私信我获取哦!

最后请收下我这迟来的新年祝福,祝大家在新的一年里都能拿到自己理想的offer,身体倍儿棒!万事如意,心想事成!

猜您喜欢: