作者:赵无极

前言

首先说一下,笔者曾经也只是尘世间一个迷途小开发,二流程序员。可能这篇文章并不像其他面经一样金光闪闪,只是一个二流Android攻城狮在市场的大潮之下,耗时一个月时间面试+复习+总结,最终拿到了自己喜欢公司offer(字节跳动Android开发岗,薪资也涨了40%多),对我来说已经很满意了。

二流程序员逆袭字节跳动Android开发岗,薪资涨了40%多_安卓

出来社会摸爬滚打四年多,不得不承认人是分三六九等的。即便是专注度、努力这些颇为客观的因素,也是因人而异的。

说下我的个人背景吧

  • 双非本科,计算机应用专业。
  • 工作四年,都是小厂,小组最多没超过4个人
  • 算法基础一丢丢(翻书‘马冬梅’,合书‘什么梅’)
  • 英语水平半文盲
  • 有一个自己常年维护的博客,GitHub所有项目加起来有200多个star
  • 懂一点应用层方面的音视频编解码知识

面试过程

二流程序员逆袭字节跳动Android开发岗,薪资涨了40%多_面试_02

一面:

1、首先是自我介绍(需要注意的地方:说有亮点的、跳槽原因,从各个点尽力彰显自己优势、技术特长)

2、手写代码:计算View树上所有view的数量,参数ViewGroup(本质上就是数据结构多叉树递归层序遍历+Android View基本api调用)

Android相关

3、主线程Looper一直循环查消息为何没卡主线程?

4、RecyclerView相对ListView区别?

5、Bitmap resize相关,设置option,decode

6、用MultiDex解决何事?其根本原因在于?Dex如何优化?主Dex放哪些东西?主Dex和其他Dex调用、关联?Odex优化点在于什么?

7、Dalvik和Art虚拟机区别?

8、多渠道打包如何实现(Flavor、Dimension应用)?从母包生出渠道包实现方法?渠道标识替换原理?

9、Android打包哪些类型文件不能混淆?

10、Retrofit主要实现机制?Retrofit的作用、原理

11、动态代理静态代理区别?

12、模块化怎么做?怎么设计?接口发现暴漏怎么做?基于什么基本思想?

13、MVC、MVP、MVVM应用和彼此本质区别?

二面:

1、Glide缓存特点

2、问了擅长哪个方向?回答UI动画,所以就问UI相关的

(1)launcher应用抽屉,之前有个毛玻璃效果背景,从系统ROM角度说下怎么做?

(2)实时的睡眠水面倒影效果怎么做? 实时更新的UI性能如何保证?

(3)UI基础:Measure、Layout、draw大流程、绘制顺序,FlowLayout怎么实现?

3、算法题:两个线程分别持续打印奇数和偶数,实现两个线程的交替打印(从小到大)

4、模块化、工程化架构思想

三面:

1、设计个IM客户端以及数据库架构,类似微信,偏上层业务部分的会话、联系人、通知、

2、公众号如何存、分几张表,架构每一层都是什么,互相怎么交互工作?

hr面

大概问了下之前的面试体验,手上是否有其他offer,自我介绍等

总结

感觉问得不偏基础,有些感觉必考基础题没问,第一感觉还是不难的,之后hr就直接谈到了薪资问题。说到这里就觉得这个offer是稳了。

只有不断地努力,不停的学习,才能对你的工作和面试当中带来帮助,学习之路,犹如逆水行舟, 不进则退, 下面分享的正是我的学习方法

  • 准备

这是最辛苦的阶段,你不仅要把日常的工作做好,还要开始着手准备刷题、基础知识准备以及高阶知识的准备,除此之外我还对英语进行了一些准备,本来英语就是半文盲,由于不管是想去外企、出国以及看英文的文档,英语都是必不可少的,英语在我们的日常生活中也越来越重要,我们要,整个阶段大概持续了4个多月。

其实每一次跳槽,都是对这几年工作的一个梳理和总结,虽然大家都明白“面试造火箭、进去拧螺丝”的道理,对于公司而言,这是筛选人才的一个方式,毕竟人是第一生产力,只要有优秀的人才,那么造出的火箭才可能“一飞冲天”。对于个人而言,如果公司里同事优秀的人,那么你肯定也不会差,我们肯定更希望和优秀的人一起共事。

(一)调整自己的心态,正确面对得失

面试中常见的问题,主要是心态,面试调整心态是第一位的,如何调整成最佳心态呢?很多求职者在面试过程中自己思路不清晰,语言不流畅,说话毫无逻辑,会不断否定自己,归根结底都是面试心态问题,所以调整自己的心态,正确面对得失是非常重要的,我的方法是给自己足够的心理暗示。

(二)提升技术,扩宽知识

对于程序员来说,要想成长为一名行业内的大牛大神级别的人物,那么唯一的办法就是通过学习,来不断提升自己的技术,扩宽知识,达到一定的高度和深度。那么如何提升自己的技术,扩宽自己的知识储备呢?

以下是我个人的一些做法,希望可以给各位提供一些帮助:

  • 准备简历
    简历是门面,更是敲门砖,能否拿到大厂的面试机会,就要看自己的简历如何,抛开学历以外,大厂最看重简历是否有亮点,因此我们对简历内容要有准备,对自己的突出点,包括技术、个性上的亮点,要练习表达,避免临时组织语言。

优质简历范本:

二流程序员逆袭字节跳动Android开发岗,薪资涨了40%多_安卓_03