首页 > 其他分享 >历时2个月喜提2字节安卓岗offer面试经验分享

历时2个月喜提2字节安卓岗offer面试经验分享

时间:2023-06-22 14:34:38浏览次数:41  
标签:怎么 字节 喜提 offer 安卓岗 面试 源码 内存 优化


前言

从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,安卓岗,面试,源码,内存,优化
From: https://blog.51cto.com/u_16163480/6534865

相关文章

  • 6轮面试辛苦拿到阿里Android开发offer,却从22k降到15k,在逗我?
    一小伙工作快3年了,拿到了阿里云Android开发岗位P6的offer,算HR面一起,加起来有6轮面试了,将近3个月的时间,1轮同级+1轮Android用人部门leader+1轮Android组leader+1轮项目CTO+1轮HR+1轮HRBP。一路上各种事件分发机制、自定义View、handler原理、多线程、hashmap、手写算法、......
  • Android面试技巧总结,这下offer稳啦
    最近有很多朋友给我后台留言:自己投了不少简历,但是收到的面试邀请却特别少;好不容易收到了大厂的面试邀请,但是面试官问得太深了,结果也挂了;对于面试官的问题,明明知道该怎么做,但是却说不清楚。这些问题不是个例,很多人都有这样的困扰。很大一部分是技术层面的问题。薪资比较高的前端岗位......
  • 【剑指Offer】35、数组中的逆序对
    【剑指Offer】35、数组中的逆序对题目描述:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。即输出P%1000000007。输入描述:题目保证输入的数组中没有的相同的数......
  • 一起被裁,朋友背着我拿了5个大厂offer,我坐不住了……
    前言同样在去年年底被裁,为什么我的一个朋友拿到华为、阿里巴巴、字节跳动、拼多多、百度等5家大厂的offer,而我连一个面试的机会都没有。在这之后我又尝试投了不下于十几次的简历,结果都是了无音讯。我实在是坐不住了,就去咨询了下我这个朋友,他说除了硬实力,软技巧也同样重要。下面就是......
  • 【剑指 Offer】数组中重复的数字(C++_Easy_遍历/哈希/快排/原地)
    题目在一个长度为n的数组nums里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。测试样例输入:[2,3,1,0,2,5,3]输出:2或3限制2<=n<=100000题解题解一:遍历对vector容器......
  • 【剑指 Offer】用两个栈实现队列(C++_Easy_栈/队列)
    1.题目用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回-1)2.示例2.1示例1输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”......
  • Android大厂面试题以及答案整理(2022年2月份更新),助你轻松拿下高薪offer
    前言想必现在有许多朋友,都在为即将到来的金三银四做准备,不知道各位朋友是否十足的把握能拿到自己心仪的Offer呢?下面无偿分享一份包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目,熟悉本文中列出的知识点会大大增加通过前两轮......
  • Android面试官问的一些问题,看完这一篇就没有拿不到的offer
    背景我是2020年毕业于中南大学的计算机学院的,我毕业之后在华为工作了差不多两年多,一直都从事着Android开发。然后去年年底的时候因为我自己的一些原因打算离职到外面看看,那个时候我是投了超级多简历,然后去面试了小红书啊、快手啊,爱奇艺啊,微信,小米…等等很多的大厂,小厂,然后下面这......
  • 掌握这些技术,大厂offer随你拿
    背景先说一下个人基本情况,计算机科学与技术专业。主要学的Android开发,所以投的岗位都是Android开发工程师。投了知乎,内推了阿里蘑菇街腾讯百度网易。腾讯百度都没有收到面试,知乎Skype面试,蘑菇街阿里电话面试,网易现场面。知乎二面被拒,蘑菇街阿里一面被拒,网易三面,然后备胎了,前几天被......
  • 【Android面试】2023年Android中高级最全面试题,轻松拿offer
    前言2023年的金三银四来了,不知道大家准备好了没?对于程序员而言,无论是想加快个人技能成长速度,或是想要升职涨薪,都需要不断进阶,跳槽到规模与业务更大、并且有成熟的技术成长体系的公司当中去。而想要跳槽成功,面试可以说是决定性因素。这里给大家整理了一份935页的《2023年Android中高......