从字节跳动离职后,拿到探探、趣头条、爱奇艺、小红书、15家公司的offer

前言

我这篇文章并非简单的描述一些面试中的题,或者总结一些Android的知识,而是想记录我整个的想法和准备的过程,以及一些心得体会,让你们更加全面的去看待工做、跳槽和生活(从个人角度,固然确定有不合理的地方,你们借鉴就好)前端

抖音两年

在字节跳动的两年时间中见证了抖音从百万日活到2.5亿、团队从10人到100多人的过程,技术上不一样时期的选型以及迭代、沉淀和更替。项目上经历了一个工程到模块化再到组件化最后插件化,深入理解项目不一样阶段和不一样体量的时候技术框架的选型。流程上不一样阶段不一样的方案,一直在探索最大的效率的协同开发。产品上从不断试错到稳步发展的过程,也就是数据驱动业务的过程。java

字节跳动是一个伟大的公司,优秀的同事真是数不胜数,我在其中只是一个菜鸟,仰望各类大佬,无论是从技术方面仍是作人作事的方面都学到了不少、成长了不少。在抖音的两年十分感谢个人同事、领导对个人帮助和提携,尤为是亨惠、火火老师、马老师、江老师、夏老师、将军、若雷、乐华、龙博等等一群大牛,还有漂亮的pm小姐姐佳鑫,和帅气的设计师冬冬,只能说我是何其的幸运,可以和一群优秀的同事一块儿共事、见证一款伟大app的崛起。android

此次面试了如下几个公司(不是面试顺序):
Airbnb、快陪练、探探、猿辅导、趣头条、脉脉、动动、瓜子二手车、伴鱼、最右、BIGO、音娱、快手、小红书、美菜网、微软、亚马逊、Ihandy、饿了吗、爱奇艺、右划c++

其中面试没经过的是:脉脉(一面挂),其余的公司都到了hr面谈薪资,美菜网、音娱、动动、猿题库等公司hr开诚布公的跟我说给不了我要的价钱,虽然技术面评价不错,我也明白,因为拿到一些offer后,我对不太想去的公司会要的比较高,我本身都以为确定不会给。微软和亚马逊有另外的状况,由于当时已经基本肯定拿到Airbnb的offer加上眼睛由于上火长了针眼,特别疼,就直接拒绝了。可能有同窗发现了,为何此次我没有去BAT去试试(百度、阿里、腾讯),百度的确没有投递,阿里腾讯不是我不想去,实在是太慢了(多是我没有走内推,而是在boss投递的缘由),基本上是投递后一个月后才告诉我简历经过去面试。
git

这些面试题是今年去Airbnb、快手、小红书、猿辅导等15家公司面试后整理的面试题,还借鉴了网友去百度、小米、乐视、美团、5八、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。而且大多数都整理了答案,熟悉这些知识点会大大增长经过前两轮技术面试的概率。程序员

我去面试的全部公司问到的题目基本上全都包含在这些面试题里。对于要找工做的朋友们来讲很值得短时间快速突击一下。须要的朋友留下邮箱,我会一一发送的。github

为何要跳槽

为何要跳槽,这个问题必定要思考清楚,由于跳槽的成本实际上是挺大的,在一家公司积累的不只仅是人脉还有对当前行业以及业务的熟悉度,新进入一家公司,一切须要从头再来,须要快速的证实本身,尤为是技术人员,还有就是对新环境和代码的熟悉,这些都是成本,因此在跳槽前,必定要想好,为何要跳槽。其实马爸爸有一句经典的话“要么钱没给到位,要么心委屈了”,说的很形象,我这里再细说一下:web

  1. 钱没给到位,其实全部的人对本身的评价都是比本身真实的水平要高一些,这就致使,大部分人认为本身如今贡献很大,老板应该加薪,尤为是看到一些同事作的不如本身(多是本身认为),工资拿的和本身同样,甚至比本身高,那就更加有钱给的少了的感受。
  2. 作的事情是否有价值或者说是否有持续盈利的趋势,这个很重要,一个公司的产品不盈利没前景,就算给你开不错的工资,做为一个不想混吃等死的人来讲,都不想继续再待下去。
  3. 机会,做为一个已经有3年工做经验的人来讲,这个时候更加须要的是一个机会,可以证实本身,给公司带来更大的价值,完成进一步的突破,若是当前的公司并不能给你这个机会,那么你就须要考虑跳槽了。

那么跳槽的核心就是利益最大化,固然这里说的利益,不只仅是薪资福利,还有本身的职业规划。面试

职业规划

做为技术人员,我大概总结了下面三个方向,其实哪一个方向都是大有可为,关键仍是要看本身。算法

  1. 技术经理
  2. 架构师
  3. 专项领域的专家

薪资福利

做为一个再也不年轻的程序员来讲,已经不能忽略薪资和福利,再也不像刚毕业的同窗,只要能成长、只要平台好,薪资什么的不重要。其实每一个阶段都有本身的侧重点,我大概对薪资、平台、成长排了个序(本身的观点)

  1. 1~3年,平台>=成长>薪资
  2. 3~5年,平台>=薪资>=成长
  3. 5~10年,平台=薪资>成长(这个阶段也可叫作规划)

上面是本身不成熟的见解,从自身的一些经验出发的,仅供参考。

准备

这是最辛苦的阶段,你不只要把平常的工做作好,还要开始着手准备刷题、基础知识准备以及高阶知识的准备,除此以外我还对英语进行了一些准备,因为无论是想去外企、出国以及看英文的文档,英语都是必不可少的,英语在咱们的平常生活中也愈来愈重要,咱们要,整个阶段大概持续了4个多月。其实每一次跳槽,都是对这几年工做的一个梳理和总结,虽然你们都明白“面试造火箭、进去拧螺丝”的道理,对于公司而言,这是筛选人才的一个方式,毕竟人是第一辈子产力,只要有优秀的人才,那么造出的火箭才可能“一飞冲天”。对于我的而言,若是公司里同事优秀的人,那么你确定也不会差,咱们确定更但愿和优秀的人一块儿共事。

刷题

个人方式仍是以前的老套路LeetCode +《剑指offer》,虽然老,可是效果很是不错。这个过程不只是个脑力活仍是体力活,因为不能再公司刷题,我通常的选择方式是在晚上回到家后,因为公司常常加班,我一般到家是10:00-11:00期间,先锻炼半个小时(一会再聊这个事情),而后刷题半个小时到一个小时。固然也能够在上下班的路上抽时间看看题。

  • LeetCode,刷了300+的题,这里的刷并非指仅仅只刷一遍,我来回刷了四遍,手写了一遍(写了200多道),保证我看到题目或者相似的题目,我能第一时间想出最优的解题思路。
  • 《剑指offer》,这本书真的很棒,总结的很到位,以及每一个阶段的思路写的都很详细,我是百看不厌,大概50+题,多看几遍,这能作到触类旁通。

基础知识

因为面的Android岗位,须要准备一些Java和Android方面的知识,有不少的文章都会去介绍怎么去复习基础的知识或者进阶知识,或者是阅读一些经典的面试数据,例如任玉刚的《Android开发艺术探索》,都是很是不错的。你们能够根据网上的文章和一些数据梳理一个本身的知识体系,将一个一个知识点造成点再到面,这样能更加深入的理解,并且有本身的侧重点,我就列举一下个人准备的方向:

简历

简历的重要性就不言而喻了,怎么样写好简历是个技术活,固然若是你有很好的背景(学校或者公司),那么无论你怎么写,基本上都不刷掉你,咱们做为通常的人仍是须要下一番功夫的。拿个人简历做为例子,大概有如下几个部分:

  1. 我的信息:姓名、出生日期、教育背景、博客地址、github地址、联系方式(手机、邮箱和微信号)
  2. 工做经历:毕业后待过哪些公司,通常是倒序,项目尽可能精简明了,能够参考SMART原则
  3. 专业技能:本身熟悉的一些技能,这个为何我写到最后,由于对于工做三年的同窗来讲,面试官更加注重的是你的项目经历,大部分面试都是看你的项目经从来提问。

怎样写简历,这个开源网站不错,教你怎么写简历,并且有一个在线markdown在线网站,能够导出pdf。

面试

因为时间的缘由,有一些面试题记录的不是很是的详细,可是大体是这些,可能会漏掉一些题。这篇总结与2017年面试总结同样,我并不会给出答案,一个是由于,面试太多,细节实在记不住,并且有些题也有可能记错,有时候一天最多面试了4家,从早上10点到晚上9点一直在面试,我连续面试一周后,直接上火了,眼睛长了个针眼,肿的老大了。二是由于,我这篇文章主要目的并非带你复习Android的相应知识点,并且每一个人都有本身的侧重点。

“求其上者得其中 求其中者得其下”,按照这个原则此次面试我就大胆的面试架构师或者可以带人的职位,因此不少问题都是架构的考虑和知识的广度以及本身的思考,这些回答很大程度上是开放题,相信你们都有本身的想法和看法,我就不班门弄斧了,真的是由于抖音发展的太快,见识了太多的问题和优秀解决方案,因此只要本身用点心,能够学的地方仍是不少的。

总结部分仅是我的的观点,若是有错误或者影响到公司的地方,但愿你们能提出,我会修改不恰当的言辞。

1. 快陪练

仍是先填我的信息表格,其实我不太喜欢这种方式,一上来就是我的的详细信息,你又没有给我发offer,我也没决定要来,并且还没技术面。不过既然来了就要尊重公司的办事方式,我只简单写了一下我以为能够告诉公司的我的信息。而后作了一份笔试题,一道算法和一些网络方面的知识,不难。
快陪练总体的环境并非很好,环境很嘈杂,并且我是在门口面试的,很乱。

一面

  1. MVC、MVP和MVVM的原理和区别
  2. 设计的六大基础原则
  3. 使用UML画一下访问者设计模式

二面

  1. 先聊了聊为何离开如今公司,毕竟如今这么火
  2. 我作的项目中的一些解决方案,组件化、字节码注入、包体积的极致优化
  3. 直播的架构设计

三面

  1. 设计一个上传日志的大小,涉及到,性能、文件大小、怎样压缩、时机、TopK问题等
  2. 聊了聊在字节跳动作的事情

总结

是一家创业公司,给的薪资仍是挺不错的,可是因为是996,没有加班工资,多出来的钱可能就是加班工资吧,后面听hr说公司正在打算取消996

2. 探探

是经过脉脉上网红马映怡推荐的,马映怡以前在字节跳动,今年4月份到了探探,在脉脉找到了我,正好我有出去看看的意向,就约了时间去面试,探探的办公环境仍是比较好的。

一面

  1. OpenGL一些知识,顶点着色器、片元着色器的工做原理,什么是VBO(这个没想起来),以及shader的一些简单问题
  2. View的事件传递机制
  3. 包体积优化
  4. JVM相关知识,Dalvik和ART的区别
  5. 组件化的实现方案
  6. 算法题,ViewGroup的层级深度,转换为二叉树的层级深度

二面

二面面试官,比较注重思惟,我理解为聪不聪明的意思,有点脑筋急转弯的意思,要求的最简单有效的方法。

  1. RecyclerView防止内存OOM的一道题,充分利用自身的缓存机制,可能我始终没理解问题所在,虽然给出解决方案,可是面试官不满意,太繁琐
  2. 讨论LRUcache的实现和时间复杂度

三面

cto面试

  1. 聊了一下抖音发展的过程当中个人角色,作过什么事情,有什么收益
  2. 在华为的一些经历,为何离开华为
  3. 聊了一到算法题,查找两个字符串的交集和字符串1中有字符串2中没有的问题。

四面(不是一天)

此次主要是聊一下我将要作的工做,以及让其余面试官再次了解一下我,由于评级比较高,因此须要谨慎点。

总结

总体来讲探探发展仍是不错,尤为近两年要上市,环境也不错,管三餐,加班不严重,双休,工资也给力,可是也是因为近两年要上市,因此要作的东西仍是比较多和急,须要你有必定的能力。

3. 猿题库

我是在boss投递的猿题库的Android开发岗位,结果hr小姐姐把我当成了server开发,先进来一位server的童鞋,让我写了一到算法题(二叉树的镜像),而后看看个人简历问我,是否是面试android的,我说是,她尴尬的说我是server面试官,而后赶忙与hr沟通,调整成为Android。
猿题库面试应该是有硬性的时间指标,应该是每一轮面试都要差很少1个小时,而且会出1~2道算法题。

一面

主要聊了下面几个方面

  1. 热修复,主要说了ClassLoader的方式和Rubost的插装方式,重点介绍了Rubost的原理。
  2. 实现直播礼物的一些技术选型,和播放带有alpha通道MP4的解决方案
  3. 怎么实现字节码注入
  4. 抖音组件的探索,SPI到字节码注入,优缺点。
  5. 接下来就是两道算法题
  6. String字符串的数字相加
  7. 使用三个线程顺序打印有序的数组
  8. 提问环节

二面

  1. 包体积优化:静态Lint,Proguard,AndResGuard和删除R.java中的全部字段,删除access$方法,在gradle的transform阶段将压缩png和jpeg,使用google开源的redex方案,每种方案的原理以及优缺点
  2. MVVM-livedata的实现原理
  3. 属性动画的原理,这里没看过,不太清楚
  4. Kotlin写一个let的扩展函数,大致写了一下代码。
  5. 算法,多是我写的太慢了,因此就只有一道
    1. 给定一个有序的数组和目标数,找出与目标数最近接的index,要求复杂度是log(n)的时间复杂度

三面

三面就比较轻松了,面试官一直乐呵呵的,又问了一下alpha视频的解决方案,而后聊了聊为何要离开这么火的项目,问了问个人经历之类的,最后写了两道算法题

  1. 二叉树的深度和广度,要求一次遍历
  2. 给定一个二叉树和一个目标数,在二叉树中是否存在一条路径的全部节点的和与目标数是相同的case,而且打印。

总结

效率并非很高,并且并不主动,多是跟我要的薪水过高有关系,后面经过询问才知道,技术面试是经过了,可能字节跳动原本薪水就很高,我再跳过来,猿辅导考虑到个人工做年限和年龄,会倒挂一大批人,因此只能平薪过来,并且这样知道我确定不会来,就没主动跟我说。

整个面试环节整体来讲还能够,可是就是效率不高,也多是我运气很差,我是4:10到猿题库的,而后在前台等了20所分钟,hr才来,说了刚才在电话会议耽误了,这个理解,而后等待面试又等了10多分钟,来了server的面试童鞋,写了道算法题,从新调整到Android面试,又等了15分钟,真正Android面试开始在5:10左右,面试完成后基本到了8:30了。
对本身的表现基本满意,就是很久不手写代码,有点生疏,写的比较慢,大多数问题和答案都获得了面试的承认,对一些知识点没有复习到,其实我是这样认为的,并非全部的问题或者知识都须要知道,你只须要有1~2个方面了解的很透彻,获得面试官的承认就行。

4. 趣头条

一面

  1. 在抖音上显示本身作的功能,框架的搭建,实现原理,所作的优化点等。
  2. 组件化的实现,为何作组件化,不一样实现的优缺点。
  3. hashmap的实现原理
  4. view的优化,减小层级,异步加载,x2c框架引入,优缺点,textview的优化。
  5. mp4播放alpha视频实现的原理
    一面面试官大概聊了1个小时左右,没让我写算法,细究原理和细节,很是仔细。

二面

  1. 冷启优化的一些方案。
  2. 数据驱动业务的理解,怎么作,和pm产生分歧怎么解决。
  3. 我全部作的优化的收益是什么,有什么数据支撑。
  4. 事件分发机制,举了一个具体的例子来解决。
  5. http的一些问题,1.1和2.0区别,心跳机制,https怎么创建连接,怎么进行数据加密等。
  6. 为何离开抖音,职业发展,诉求等。

聊了大概一个小时,面试官的思路相对独特,不是为作技术而作技术,技术始终要服务于业务,我很是承认。

总结

趣头条北京位于海淀,位置不靠近地铁,须要步行一段时间,不过效率挺高的,在面试完的次日就给我发offer了,面试流程也相对较少。对趣头条的营收模式看的不是很清楚,相似发钱看新闻,可是如今头条也再作这个,趣头条可以搞得过头条是个问题,若是没有增加点,那后期的转型是什么(我瞎操心啥)?整体来讲体验仍是不错的,hr也很真诚,屡次沟通,虽然最后我没有去,感兴趣的同窗能够去看看。

5. 瓜子二手车

瓜子二手车真的是太远了,从海淀到工做地方将近花费了2个小时,并且还不在地铁附近,还须要坐公交。

一面

  1. 聊了一下项目中作过的东西,字节码注入相关知识,transform优化,mp4礼物实现等
  2. 从桌面点击icon图标开始,整个启动activity的启动过程
  3. Binder的实现原理
  4. 插件化的原理,以及hook点,大概有两个,能够网上搜索一下
  5. hashmap的实现原理
  6. 单例的实现,sychrnized的实现原理,以及双锁不加violate,会不会有线程安全问题
  7. 二叉树,读取每一层最右边的节点

二面

  1. 聊聊大概履历,以及在华为、字节跳动都作了什么,为何要离开。
  2. 职业规划,怎么带领团队
  3. 代码设计的基础原则,以及用UML画出工厂模式
  4. 将两个有序的链表合并成一个有序的链表,递归和循环两中方式
  5. 时间分发机制,而且须要从Android的sensor开始到应用层,我只知道从Activity开始的流程。
  6. 聊操做系统Unix,汗颜,我知之甚少。
  7. 对新技术的见解(flutter),瓜子二手车也已经开始在项目中使用fultter相关技术

三面(总监)

  1. 自我介绍,为何要离开抖音
  2. 线程安全的问题,sychronized和viloated的使用
  3. 实现一个CAS(乐观锁)的方法
  4. HashMap的实现原理,怎么优化内存占用,优化resize的过程,这个是开放的问题

四面(VP?)

  1. 自我介绍,在抖音作了什么
  2. 在抖音作的比较好的两件事情
  3. 设计一个美团的框架,组件化

总结

瓜子二手车是众多二手车中作的还算比较好的公司,如今像优信、人人二手车好像都不是很好了,就是太远了,公司附近也没有地铁站,就算是公交站还须要走2千米,可是面试官感受仍是比较有水平的,后期的hr跟我谈也是诚意满满,整个团队在我来看,仍是一个想作事情的态度。整体来讲hr仍是很是真诚的,想去的朋友能够考虑考虑。

6. 伴鱼

笔试

  1. 双锁单例,为何要价violate
  2. 内部类访问外部类
  3. 函数值传递的一些题
  4. 子类继承父类,个字都有静态变量、静态代码块、构造函数,执行的顺序
  5. int数组,除了一个数字外,其余数字都出现两次,找出这个只出现一次的数字

一面

  1. 图片压缩原理,以及在transform阶段进行的必要性,讨论的还挺激烈
  2. 内部类引用外部函数的参数,为何要final定义,值传递
  3. 判断一个应用是否切到后台
  4. 组件化的探讨,假设场景,怎么处理
  5. 插件化的实现方式,以及对相应的场景进行讨论

二面

伴鱼的架构师

  1. 一个疑难杂症,也是自定义插件,讨论是否有更好的方式,最后结果是,他想了一个比较巧妙的方式,没有实践过,可是告诉我能够,保留本身的意见。
  2. 字节码相关知识,ASM以及MD5的实现原理,png的压缩原理,这里比较乱,就是说到哪问道哪,比较发散。
  3. 对成为架构师的几点见解

三面

  1. mp4实现alpha通道的原理,优缺点,收益是什么
  2. m*n的二维数组,作(0,0)出发,能够上下左右走,0为畅通,1为阻塞,目标位置(k,j),问是否能到达这个位置,相似迷宫的算法

总结

感受伴鱼的面试目的是问倒你,不少次讨论问题,我说你有什么见解或者正确答案的时候,面试官就让我回去本身上网搜一下,或者给出的方案,经不起个人推敲,我问上两三个问题,面试官反而有点语塞,感受很奇怪。不过公司有本身的考量,最后给的薪资不是很满意,就没有去,二面面试官给个人体验仍是很是不错的,考虑全面,并且也有深度。

7. 最右

笔试题

Android中的引用关系

自定义view步骤
activity生命周期

一面

  1. 介绍最右的现状
  2. 经常使用的播放器,以及优缺点
  3. opengl的绘制流程
  4. 音视频编解码的流程

二面

  1. 在抖音作的工做
  2. 性能优化,包体积优化,冷启优化,卡顿优化的一些实现方案
  3. mvc mvp mvvm的区别,以及本身实现的轻量级mvvm的原理
  4. 编解码的相关知识
  5. ijkplayer的优缺点,以及是否看过相关源码
  6. flutter的探讨

总结

整体来讲面试流程中规中矩,可是面试官的问题并非很全面,更加关心的是本身的关心的领域,对于我提出的问题(大前端和flutter),看法也仅仅是须要对新技术保持必定的敏感度,后面hr让我去跟cto再谈一轮,由于考虑到各个方面的因素,就直接拒绝了。

8. BIGO

BIGO是YY旗下的一个公司,目前刚刚收购了一个海外的直播产品,并且未来会把业务放到北京,仍是想作一些事情,员工福利也是不错的。因为如今主要的人员仍是在广东,前两面都是电话面试

一面

  1. 多线程怎么保证线程安全,violated、sychronized、reenterLock,这三个锁的原理以及区别,JVM是怎样实现sychronized线程安全的。
  2. HashMap的实现原理,put()原理。hash冲突,resize,1.8的改动,什么是红黑树,优势。
  3. ui优化,主要从检测和优化两个部分说明,优化又分为通用的优化,和改变绘制流程的优化。
  4. jvm的介绍,内存介绍,gc等
  5. binder机制

二面

  1. hashmap是否线程安全,concurenthashmap实现原理,1.8以后有什么改变
  2. 播放透明的mp4的原理
  3. 冷启优化和ui卡顿的监测和优化
  4. thinker实现插件化的原理,咱们使用什么什么实现热更新,热更新的通用方案,以及优缺点

三面

  1. 介绍本身以前的工做经历,在华为作了什么,为何离开华为,在抖音都作了什么工做
  2. 实现mp4播放alpha视频的原理
  3. 是否使用过kotlin,kotlin的一些特性
  4. 内存泄漏和oom怎么产生的,内存泄漏的监控,leakcanery的实现原理
  5. 看过哪些第三方框架的源码,具体的实现原理。retrofit、okhttp和eventbus等

总结

BIGO一二面仍是偏基础的知识,并无很深或者很偏的问题,三面面试官是以前腾讯的大佬,面试更多的我作过的项目讨论和架构的问题,以及其余方面的一些问题,总体感受仍是比较好的,hr小姐姐是广东人,说话的声音很好听,也很真诚。

9. 音娱科技

主要作的日本的直播产品,公司并不大,创始人好像也是头条出来的,各类福利制度和头条进本相似。

一面

  1. activity生命周期 以及各个函数的含义
  2. activity task的四种类型
  3. fragment的生命周期
  4. 启动server的两种方式
  5. intent传输数据的大小限制
  6. binder的原理
  7. activity的启动流程
  8. hashmap实现原理,1.8的改动,红黑树概念
  9. 合并两个有序的链表

二面

  1. 为何离开抖音
  2. 组件化实现方案 spi的缺点,怎么使用字节码注入
  3. Dex的组成,为何每一个dex会有65536的限制
  4. 还有好多,时间太长记不太清楚了

总结

面试技术应该是经过了,最终卡在薪资,可能我要的过高,公司可能以为依照我如今背景,性价比不高,就没谈下去,后面跟其余公司聊的时候,又了解了一些这个公司的状况,听说年终奖特别少,不少人在年后都跳槽了。

10. 小红书

一面

  1. Activity的生命周期、fragment的生命周期,onRestart()何时调用
  2. service的两种启动方式,service的生命周期
  3. binder机制
  4. 进程保活:1.防止进程被杀 2.杀死后再拉起,详细的答案网上搜一下,这里就不列举出来了
  5. app的包体积优化,lint、proguard、andresguard原理,字节码注入,删除R.java的变量,删除access$001方法,压缩图片资源和使用redex等。

二面

  1. 自我介绍
  2. 对JNI和C++了解吗?基本不了解,就略过了
  3. Activity的launchMode,每一个Mode的含义,Activity的启动流程
  4. 怎么样实现MP4播放alpha的视频,编解码的一些流程,NV20、YUV、RGB一些概念,SurfaceView和TextureSurfaceView的区别
  5. 组件化的实现,都有什么技术方案,优缺点
  6. 使用数组实现一个队列,有void add(int val)void pop()两个函数,并且须要考虑扩容

三面(业务线负责人)

  1. 介绍本身,介绍在抖音作过的事情
  2. 哪两件事情作得最有成就感
  3. 怎样重构代码,基本的6大原则,详细讨论每一个原则的含义,使用过的设计模式
  4. 假定场景,接口定义的有缺陷,第二版须要修改,是增长仍是直接修改,以及还有没有其余的方案,怎么去作,为何,这个是开放的题,结合设计原则,以及真实的状况和本身的一些例子说明便可

四面(Android负责人)

  1. 介绍本身,为何离开抖音
  2. mp4播放alpha视频的实现方案,详细解说
  3. 跨部门合做,具体的一个例子,怎么去沟通,假设一个例子,用最恰当的方式去沟通。
  4. 怎么向上管理以及向下管理

五面(相似VP级别)

  1. 对技术选型的见解,flutter、c++、java、kotlin,核心是解决问题
  2. 是否会使用kotlin,优点,以及在项目中真正带来的收益
  3. 组件化,依赖版本号不一样的解决办法
  4. 插件化,一些实际问题的,具体是什么记不太清楚了

总结

小红书的装修真是豪,办公环境特别棒,可是面试流程有点多,足足面了5轮,不过整体来讲技术仍是很不错的,不管是广度仍是深度,尤为最后一面,专门从上海飞来面试,十分荣幸,从这点就能看出公司对人才的重视程度,是一个值得加入的公司,hr小姐姐人美也真诚。

11. 饿了吗

一面

  1. 包体积优化,Lint、proguard、andResGuard的原理,以及抖音作的一些包体积优化的方案
  2. 线程和线程池的讨论,为何要用线程池,线程池各个参数的含义,若是队列满了会发生什么,为何线程池的数量是cpu核数+1
  3. 好吧,记不起来了

二面

  1. 自我介绍
  2. 线程安全的方式,sychronized和violated的区别
  3. 怎么自定义Transform、自定义Task,Task之间怎么依赖,大体顺序是什么,增量编译的概念,异步加快文件的读取,ASM接口的使用
  4. cookie、session、token的含义和区别,这里我确实不熟悉,就直接说我不太清楚了。

三面

  1. 自我介绍
  2. 在抖音都作过什么事情,相关的几个方向深刻讨论一下
  3. 对于架构的思考,怎样设计一个好的架构,6大设计原则,分别说明一下
  4. 用过什么设计模式,为何要用设计模式,对于设计模式的思考
  5. 怎样提升开发效率,较少沟通成本,实例说明下
  6. 为何要引入kotlin,优缺点
  7. 之后的规划

四面(交叉面)

  1. 介绍本身,为何离开抖音
  2. 音视频的相关知识,NV20,YUV,RGB的关系,为何mp4的压缩率比webp的动画要高,编解码的流程,通用的编码格式,软硬解的区别。
  3. View的绘制流程,硬件加速的原理和软件绘制的区别,以及相关的view的优化

总结

整体来讲面试体验仍是不错的,三面面试官对于职业发展和新技术的看法都是很是深入,也给与了我不少建议。

12. 美菜网

一面

  1. 动画实现的方式,帧动画和属性动画的实现原理
  2. 一张图片加载到手机内存中真正的大小是怎么计算的
  3. OOM产生的原理,内存泄漏是因为什么引发的,GCRoot有哪几种类型,JVM等
  4. 一个二分查找的变形题,具体的题目记不清楚了
  5. 为何要作组件化,组件化的实现方案都有什么,优缺点
  6. Activity的启动流程
  7. View的绘制流程,从VSYNC信号开始

二面

  1. 性能优化,包体积优化,R.java优化,access$xx方法优化,资源优化原理
  2. MVVM是什么,我本身作的轻量级的MVVM的实现方式,优势是什么
  3. 看过什么第三方的源码,retrofit原理,动态代理和静态代理的区别,是否使用反射,okhttp的原理,Http和Https的区别,Https的socket security layer的握手,EventBus的原理,3.0的区别,APT的使用以及怎样处理字节码(ASM、javaassit、BECEL等)

总结

美菜网真的是好乱呀,面试人感受有几十个,如今美菜网扩张这么厉害吗?我面试的时候我旁边的哥们也在面试,真的是很嘈杂,不过面试官的基础还不错,看过一些源码,可是并无问到什么特别好的点,对整个新技术的看法和对个人建议(通常会问面试官一些对于新技术例如flutter见解,和对个人一些建议)感受不是很深,跟hr谈完后就离开了。

13. 爱奇艺

一面

  1. 从Activity A跳到Activity B的生命周期的调用过程,若是是异步进程呢
  2. 冷起优化,systrace怎么使用,实现原理
  3. ANR是什么,怎么上报ANR,有些手机拿不出,有些手机拿不出anr/traces.txt,怎么查找ANR问题
  4. 插件化的原理,Activity的启动流程,hook点
  5. 一个类,内部有一个链表的数据结构,实现void add(Node n)void remove(int index)的函数

二面

  1. 介绍工做经验,为何离开抖音
  2. HashMap的实现原理
  3. 在抖音作的工做,主要说了ui优化和冷起优化两个部分,扩展开来,讨论了不少相关的知识点
  4. 手写消费者生产者模型的代码

总结

此次面试的是奇异果,并非爱奇艺app,由于我仍是想作app,二面以后,我就跟面试官说了个人想法,就不必聊下去了,就直接走了。

14. 快手

一面

  1. handler介绍,为何阻塞不会形成anr,屏障消息,产生内存泄露缘由,handler内存泄露的引用链
  2. 事件拦截机制,view的绘制流程
  3. android的系统渲染原理,renderthread的解释,三缓冲机制播放透明mp4的原理,surfaceview和textureview的区别
  4. opengl的绘制流程,texturesurface是什么,顶点着色器和片元着色器各自做用,VOB是什么
  5. 一个无序的int数组,给一个target数字,找出数组中两个数字相加为target,并输出坐标

二面

二面面试官是facebook回来的,面试风格的确和以前的面试官讨论不同

  1. hashmap的实现原理,怎样找到index,size为何是2的倍数,怎样resize,resize事后,以前的hash冲突还存在吗?currenthashmap的实现原理
  2. 怎样保证多线程的安全,什么是乐观锁,怎么使用
  3. 设计一个发送语音模块的架构,须要写出全部接口函数,而且须要详细说明,可能面试官更加在乎设计能力,这里讨论的时间很是长。
  4. view的绘制流程,onMeasure、onLayout、onDraw,各个参数是什么含义,尤为是widthMeasureSpec、heightMeasureSpec以及对应的AT_MOST、EXACTLY和UNSPECIFIED
  5. 数组中存有1-3的三种数字,例如[1,2,3,1,2,2,1,3,3],将其排序为[1,1,1,2,2,2,3,3,3],要求时间复杂度,后续将内容变为一个对象,继续排序

三面

  1. 工做经历介绍,为何离开抖音
  2. mp4播放alpha视频的原理,与其余方案的对比,收益点是什么
  3. "之"字形打印二叉树
  4. 1~100盏灯,都是亮的,第一次将能被1整除的数的灯按下,变暗,第二次将能被2整除的数的等按下,变亮,第三次将能被3整除的数的等按下,变暗......第100次将能被100整除的数的灯按下,问,最后有多少盏灯是亮的。

总结

整体来讲面试官的技术仍是很厉害的,二面面试官的背景很好,思路也独特,有点外企风格。三面面试官比较注重算法,和解决问题的思路。整个面试流程真的是不太友好,三次面试去了三次,并且前两次都是在茶水间,一直说会议室订不到,环境特别嘈杂,并且前两次都是临近饭点,茶水间送饭更是杂乱,感受快手效率和环境有一些混乱(我的面试感受),可是不可否认快手在2018年的成绩仍是很好的,尤为是直播的营收仍是至关的不错。

15. Airbnb

因为Airbnb面试了七轮,并且不少同窗都想看,那我就单独写一篇关于Airbnb的面经,正在整理中,整理好后会把链接发出来,欢迎关注

16. 右划

时间真的是有点长,记不太清楚了,只能记个大概,一共三面,就不分开写了。

  1. 抖音作了什么
  2. Activity的启动流程
  3. 手写LruChache
  4. 怎么播放一个alpha的mp4视频
  5. 进程间的通信方式,Binder的机制,为何不使用Socket
  6. Activity的启动模式,进程间启动是否不一样

总结

右划真的是一家很是不错的公司,有一件事情就体现了整个公司的价值观:因为我当天去公司接待的人比较多,二面和三面中间大概有两个小时的空档,我其实挺不满意的,跟hr反馈了这个事情,hr立马就跟我解释了事情的缘由,而且立马跟我道歉了,后面cto还专门为这个事情跟我说了缘由。虽而后面没有去这个公司,可是我仍是很欣赏的,从公司层面,公司的定位很明确,并且有本身的核心技术。从我的来看,公司也是很是人性化,管三餐有房补并且有问题及时改正,我以为你们能够来看看。

HR面总结

在大多数互联网公司内(除了外企),到了HR面,基本上已经定下来,正常的聊聊就能发offer了,只要别太“个性”,或者三观异于常人就能收到offer,大致就是一个积极乐观的态度。有几点须要注意下:

  1. 不要说前公司和前leader的坏话
  2. 对于为何离开原公司,标准答案是目前公司不适合现有的自身发展,寻求更好的机会,(固然大部分都是由于钱 心知肚明就行,不用说出来)
  3. 展示本身积极乐观和乐于助人的一面

注意以上几点大致就没问题了。ps:Airbnb的文化面很是重要,听说20%的面试者在这个环节中被刷掉。

讨论

我会讨论几个话题,固然都是从我认知出发,并不必定对,欢迎你们一块儿探讨。

面试

面试过程其实大部分时候是,面试官或者公司是主导方,大部分的节奏是跟着面试官走,可是我以为面试其实就是一个相互探讨的过程,不只是公司在选择你,你也在选择公司、之后工做的同事和leader。因此我此次面试中,更多的是和面试官探讨,也会反问面试官一些问题,不只仅是最后面试官说能够问他几个问题,在面试过程当中就会询问一些,优秀的面试官会跟你探讨,而且讨论出一个合理的方案或者正确的答案,整个过程很是愉悦,相互都学习到了,可是有一些面试,则不太友好,问道的问题老是说本身回去百度一下,这个很让我无语。

此次最大的收获就是跟60多位面试官的交流,更加让我认清我本身,认清本身的长处、短板和之后的规划,和对作人作事的见解,在这里真诚的感谢60多位面试官。

互联网寒冬

对于这个话题,从我自身的角度而言有一些感触,从2018年开始互联网就一直有寒冬的说法,各大互联网开始裁人、缩减HC甚至对码农的年终奖下手(辛辛苦苦一年,就期望年终奖~),固然最近确实环境有一些波动,可是远没有网上传的寒冬已至那么严重。从个人面试结果来看就知道,互联网并非寒冬,只不过是更加理智,对全部的面试者来讲要求的更高,因此咱们更加要注重自身能力的培养,这并非说咱们要全身心的投入到刷算法,背理论知识等,咱们更加注重本身的理论知识怎样可以为公司、产品带来更大的价值,从软实力方面来讲,不只要把事情作好,更要作好向上管理和向下管理。我的建议:想好为何要跳槽,无脑跳是最很差的状况,若是必定要跳槽,最好的状况是骑驴找马,不要裸辞,跳槽需谨慎!!跳槽需谨慎!!跳槽需谨慎!!

学历是否重要

个人答案是重要,我就是学历的受益者,只要投递出的简历都会邀请面试(除了一些对工做年限限制很是严格的企业,hulu)。固然,在互联网的圈子中,核心是你自己的技术,可是有多少人的技术能达到逆天或者很是牛逼的地步,若是你是这样的人,啥都不用说了,可是我以为绝大部分的程序员都是普通人、日常人,不要说什么3年之后公司就不看学历了,学历是一生的事情,那些高考可以碾压你的人,出了社会只要他们愿意,照样能碾压你,你努力,你拼命,别人也不会睡大觉等你,因此,能提高本身的学历,仍是要尽可能提高的。

大公司VS小公司

“大公司拧螺丝、小公司独当一面,进步更快”,我不太认同这句话,固然具体状况具体分析,每一个人的状况不一样,可是我仍是以为你们能去大公司仍是尽可能去大公司,缘由我总结了如下几点:

  1. 镀金,这一点我相信大部分同窗都是赞同的,我就不赘言了。
  2. 知识的深度和积累,在大公司你能学到的东西更深和更加系统,并且能够有时间本身去思考和学习,尤为对于工做时间不长的同窗。
  3. 和优秀的人一块儿工做,大公司碰到优秀同事的几率更大,像我这样的普通人其实都是在模仿和学习,正是因为身边有了优秀太多的人,才会有危机感,才有机会跟着他们去学习,学习他们怎样学习、怎样思考问题甚至怎样为人处世。在华为中有到鑫和李桥,在抖音中,有夏老师、江老师还有乐华大佬等等,太多人,我从他们身上学到太多的东西,有一些能让我受益终身。

选择

选择一样是很是重要的,选择的首要前提是你要有不少机会,否则你都没机会怎么选择,在不少机会摆在你面的时候,必定要认真思考,不要冲动,想好本身须要的,多听别人的意见,最后本身决定。咱们不能保证每一次选择都是正确的,可是能保证咱们是不后悔的,遇事要冷静,多思考。

这里说的选择不只仅是选择去哪一个公司,从事什么方向,还有与什么样的同事工做,选择什么样的leader,甚至是生活中的事情,网上说一我的要有一些成就,须要具有下面几点,我以为很是的对:

  1. 你本身要行
  2. 有人以为你行
  3. 以为你行的人也行

生活与工做

其实这个话题对我来讲有一些困惑,“工做是为了更好的生活”,这句话是很是正确的,可是做为一个没有背景、父母帮你付不起首付的普通人来讲哪里来的享受生活,惟有不断努力、不断的进步才有更好的物质回报,北京是全中国的人才汇集地,在工做的三年中,我不敢有一丝的懈怠,由于身边比我条件好,能力比我强,年龄比我小的人太多了,不论在哪里资源的分配都是二八原则。有不少身边人说我是苦行僧,不懂得享受生活,太无趣,的确我不否定,可是我知道惟有这样,我才能为个人父母、爱人以及之后的孩子撑起一片天,反过来说,这些又是个人动力。感慨有点多了,这个话题全看本身,我满意目前的一个状态。我的拙见,你们看看就行。

最后

感谢你们能耐着性子,看完我啰哩啰嗦的面经,以上仅是我的的观点。感受两年稍纵即逝,在这两年中成长了不少,感谢全部帮助过个人人。

相关文章
相关标签/搜索