记一次中秋先后的Android面试经历

前言

入职如今就任的公司到如今已经有一年半的时间,由于一直据说这2年互联网的大经济形势很差,因此中秋先后萌生了出去看看机会,若是有合适机会能够考虑一下的想法。从月初准备到月末决定暂时不离职,打算分享一下本身的心路历程。php

面试前,写了一份本身的简历。大体按照本身的基本信息、职业经历、项目经历、技能来写。重点突出本身遇到的问题和解决手段。 接下来,是准备了一些知识点,大类上分为java

  • Java
  • Android
  • 常见的计算机基础

Java重点准备了一些多线程、concurrent  package以及JVM相关的内容,Android主要根据四大组件,UI,质量,性能,工程化几个角度复习。基础知识的话复习了一些常见的数据结构、算法和网络知识。画了脑图,而后进行了整理。android

关于项目,总结和准备了几个比较熟悉和拿手的东西。我我的的话是ios

  • Android组件化,分仓库,基于ARouter的路由SDK的重构的项目经历、
  • 路由库apt 代码和设计,文档和自动测试的中后台
  • Flutter的技术预研,相关的混合开发、基础设施的落地

而后就出去面试了,一开始个人思路是挑几个规模不大,数百人的公司进行练手。而后再面试一些规模比较大或者告诉发展期技术氛围比较好的公司。c++

目前接触过的有:阿里icbu,阿里大文娱,涂鸦智能,个推,哈啰出行,快手,学海教育面试

通过

先是脉脉上遇到了学海教育的 hrd 要了个人简历,我以为行业和规模都和我如今公司差很少,就去尝试试了一下。面试一共三轮,2轮技术+一轮hr,最后个人预期薪资太高匹配不了他们能给的2年经验的工程师的薪资。就没有继续聊了。技术面是一轮随机的基础题目加上和技术leader的各类瞎聊。算法

一面的基础问题基本是安全

  • Activity的启动涉及哪些进程
  • 主线程的Looper是在哪里启动的,子线程如何启动一个Looper,HandlerThread的原理
  • 重绘和requestLayout的区别
  • 如何拦截一个ScrollView的触摸事件。
  • 如何实现一个三级嵌套的列表
  • 虚拟机如何判断对象是否能够回收,哪些对象能够做为 GC Root
  • 有哪些性能优化经验

面试题比较基础,基本平时认真复习背背题就能答出来。性能优化

二面主要是聊了项目,平时研究和工做的方向,方式,思考。微信

面完这个公司以后感受小公司的面试题仍是表现不出什么人的真实能力,因而准备多准备一下。可是在 Boss 直聘上遇到了 涂鸦智能 要简历,而后很巧的是发现找我要简历的是在 yz 同组的一个 Android 同事,想着机会不错就直接给了简历。这里说一下涂鸦的公司背景,涂鸦的创始人是浙大的毕业生,早年搞了一个国内很大的php社区,被阿里所有收了,成了阿里云的第一个业务团队。创始人的背景仍是很厉害的。IOT的海外业务也扩展的不错,前段时间还看到新闻给美国的部分挖来了一个有16年通用电气 CEO 经验的部门主管。仍是颇有前景的一个公司。面试和内部的氛围感受和杭州多个阿里出身的创业公司比较符合。

涂鸦我只面试了一轮,可能由于是内推就直接现场面了,公司在浙商财富,如今应该搬到了三墩,总体的面试仍是很使人温馨。前面花了很大的时间介绍本身的项目。时间最多的是路由库的设计,实现和整个路由中后台的想法。对我apt怎么设计的,什么优点,他本身看获得的一些功能上的可扩展点会拿出来问我怎么思考去解决。也穿插了一些ARouter的原理的提问。聊的仍是很是舒服的。感受本身能拿出手说的事情也能够一直说出来。最后随便问了我几个基础知识,可能由于那时候还准备的不是很充分,在回答的时候仍是有1-2点回答的有点很差。 整体感受面试体验还能够。可是没有被继续第二面。最后从内推人那里了解到的理由是虽然本身的想法有落地,技术上有成果。可是身上的优点不能抵消本身在学历背景和工做经历频繁跳槽的劣势。就没有被继续面试了。仍是有点惋惜的。

第三家面试的是 个推 。相信移动端开发的同窗对这个公司不会很陌生。这是一家靠推送出名,如今靠大数据生存的业绩还不错的上市公司。地点在西湖区福地创业园,网上看到的消息是在三墩云谷买了一块地,在造本身的新大楼。

个推面试了三轮技术+一轮hr面。总体的面试体验也很是的舒服。感受本身也获得了不少发挥的空间。

第一轮主要是我本身介绍本身的项目。面试官中间评价了一句以为我仍是比较有想法的。结合我写过比较多的SDK的经历问了一些写SDK的体会。而后问了一些基础知识

  • Handler
  • SSL握手过程,抓包原理
  • 对称加密和非对称加密
  • 有没有了解过安全和反编译。(这里我是没了解过的,后面了解到个推的SDK对这方面还有比较高的要求,可是面试的时候你没研究过也不会刁难你)

第二轮是移动端的部门主管面试的,由于个推是一个作SDK转大数据的公司,因此人思惟不限于一端的方式在个推仍是比较受欢迎的。这个和我在公司思考的一些事情和实践也比较吻合,因此聊的仍是比较舒服的。后面用很是快的语速提问和让我回答了一些基础知识:

  • ssl 握手流程
  • service的生命周期,保活方案
  • Activity在signleinstance的生命周期
  • 若是你是一个公司的技术负责人,设计一个日志系统你会思考一些什么。尽量的说

专一于端上的同窗可能会疑惑最后一个问题,可是我很是能理解这个问题。在如今这个公司参与过一些端上日志收集的工做。对不少事情客户端一端出发思考出来的方案是不全不合理一厢情愿是有很大的感觉的。咱们须要专一端上的细节和疑难杂症,可是不要忘记去关注具体业务和其余端的视角,知道的越多,咱们能作的决策会更准。 第三轮是研发总监的面试,主要就是聊了项目经历、职业规划等

整体个推给个人感受仍是对技术比较有追求,技术思惟比较开放的一家公司。技术理念也很是合我意。后面虽然offer的薪资达不到个人预期。可是把季度奖平摊,结合公积金比例,确实比我如今强了不少。可是手上没有其余公司的offer,个推也没有让我强烈中意的点,加上最后有对本身的一些工做上的反思。最后我仍是选择了不离职婉拒了offer。期间个推的 HR小姐姐和移动端负责人也很热心的帮我分析,给我建议。也很理解个人选择。仍是很是感谢面试的时候遇到这样的一家公司和人的。

第四家接触的就是让我有很大执念的阿里了。此次阿里我面了2个部门,都是惨败收场。可是也收获了很多,也有了下一步的准备方向。

第一个部门是朋友招人帮忙内推的阿里国际,传说中阿里最奇特的不加班部门。icbu面了2轮。第一轮问的问题主要是:

  • 为何研究flutter,新技术上的话什么考虑,有哪些人一块儿作,其余人对flutter的观点是什么,大家一块儿共事的时候有没有过观念冲突
  • 路由库作了什么,怎么作的,用apt的缘由
  • 下载库作了什么,怎么设计的。你以为为何会出现新技术替换老技术的现象。你以为你的设计被替代的概率多大
  • 日志库作了什么,性能有没有作过先后对比,若是让你再作一次,你会怎么作

而后问了一些基础问题

  • hashtable和hashmap区别。hash表线程安全的实现是什么样?
  • activity的launch mode
  • sp须要注意什么
  • ssl握手流程,ssl为何是安全的,怎么抓https的包,7.0上有什么变化,怎么抓,怎么防止被抓
  • 插入排序的流程、时间复杂度,稳定性
  • android的存储有哪些
  • java的垃圾回收算法有哪些

基础知识问的感受比较简单。本身设想的view原理,binder什么的都没问。可是前面几个对于工做中的思考仍是有点直击灵魂的。对作一件事的思考能力仍是颇有要求的。

二面就比较尴尬了,后面一个偶然的缘由了解到那时候招聘级改为了 P7,因此被用来走了招聘流程。问了几个很简单的问题就草草结束了。比较惋惜。

从icbu的流程出来以后,找以前yz同组在大文娱的同事,确认了他们招p6,可是也被告知2年面p6很难。抱着试试看的态度面了一轮电话。电话是面试官在高铁上打给个人。简单聊了下简历,就开始了一堆基础知识的提问

  • 对本身负责的业务的理解
  • 日志sdk怎么设计的,上报策略是什么样的
  • 项目里面比较复杂的场景举例子
  • android ipc有哪几种,content provider的原理是啥
  • 简述handler和消息机制
  • view的渲染原理和流程
  • android有哪些动画类型
  • 简述网络架构,tcp三次握手的流程,为何是三次不是2次
  • http和https的区别,ssl握手的流程,了解哪些对称和非对称加密算法,是否了解数字签名
  • gc的算法有哪些,什么过程。java有哪些引用类型,什么状况下用软引用
  • java有哪些锁,有什么样的应用场景

基本上大部分时间都是在面基础题。感受本身被面试官带了节奏,没有发挥出本身的一丁点优点。虽然大部分题也答上来了,可是仍是挂了。反馈是没有突出优点。

后面还接触了 快手 和 哈啰出行

快手是北京的部门视频面试的。由于提早被给了牛客的连接,就总以为必定要手写算法挂定了,因此很是紧张。加上本身是第一次视频面试,感受很是不习惯和紧张。面试官问了比较简单的题目,结果sb了同样大脑空白写不出来。很是的尴尬和惋惜。大概的面试套路也分享一下,可能头条相似的公司如今也是这个套路?

给了一段Handler# postDelay 的代码,问GC root的引用链。我一会儿脑子短路竟然没想起来Handler是被匿名内部类引用了Activity致使的泄漏。期间面试官还引导我问我Activity被谁引用了我也没反应过来。真的是尴尬至极。中途也问了哪些对象能够做为gc root,handler怎么处理delay的时间等问题,仍是比较全的。并且很从实际出发的面试套路。 后面是一个算法题。递归反转链表。其实本身知道递归是怎么反转的。。。可是太紧张了就是写不出代码,就差反转的指针关系没写出来。也是尴尬至极。 全程面试表现的很sb。。。浪费了一次大好的机会。

哈啰出行是面试了杭州成立的新部门。全程面试官在拉高本身的姿态。几乎我说什么都试图用我以为你根本不理解其中原理的态度跟我说话。面试体验极差,我随便举例说几个 例如:

  • okhttp我说我主要就看了拦截器,知道有线程池可是没有关心使用线程池的逻辑。可是他一个劲的怼我说ok要看就看线程调度。其余都不用看。。。
  • 问我arouter和普通跳转有什么区别,我说我的经历以为动态下发路由表能够提高动态性。思考了一下说你这也是个思路可是优势是能够作统跳。。。我很纳闷,intent+scheme也能够啊。。。
  • 跟我聊Flutter优点,我巴拉巴拉说了一堆优缺点,最后怼我说你没写过ios我以为你不理解跨平台原理。而后跟我说底层用c++写的内存和原生占用差很少。当我面说hotreload不是效率优点最后用“我以为你不懂”的语气跟我说他看了一些原理可是没写过Flutter。。。

由于本身感受在杭州须要去一次阿里的情节。因此后面就没有怎么继续投递简历了。感受面试阿里仍是颇有收获的。 对人和技术的要求都很是的高。

总结

经过这些面试,我总结了一些我的的体会做为观点。也决定再继续沉淀一段比较长的时间再出去试试大厂。

  • 关注一些身边朋友面试的体验。我的感受如今面试的要求和套路和刚毕业的时候彻底不同。2016年看面经,拿大厂offer的基本是原理、源码回答的漂亮。如今你回答的再好别人也知道你多是背博客背的,会很看重你在平时工做中的思考和对原理真正的探究和应用。若是你有很好的落地结果或者能教面试官一些细节知识。面试结果会很不同。
  • 准备好本身的自我介绍。找到本身的优点和能够拿出来讲的点。电面能够提早根据start原则写下来,直接对着读给面试官听。这样的详细介绍,便可以占用时间,也能够引导面试官掌握主动。我的以为本身面阿里文娱的时候彻底没有说出本身的优点项目,被各类基础知识问。若是基础知识的原理你没有直接应用深刻理解过,你是很难给出使人眼前一亮的回答的。我此次面试,工做经历很简单的介绍了等着面试官问,结果不多被问到我本身的擅长项目。从这个角度看,我此次是亲手把本身推向了被动。
  • 面试的时候要克服不自信的心态,要时刻记得你是和面试官交流的。要不卑不亢。这点对我来讲还不是很容易。视频面的时候表现糟的令本身不敢相信。遇到辣鸡面试官的时候也很木,任由人家漏洞百出的怼。思路也比较木,没有准备到的东西根本扯不出来,举个例子,content provider的原理我没有具体看,可是我知道 1. 四大组件都会跟ams走ipc,2. cp是读取另外一个app进程的数据。其实这2点稍微思考下就能分析出来而后扯不少。可是我却木木的说不清楚。这个实际上是很吃亏的,彻底表现不出本身的思考能力。这可能也是不少小伙伴须要提高的能力吧。
  • 不要频繁跳槽,想清楚本身为何离职。若是不是公司真的提供不了发挥的环境或者你真的很是缺这点钱,仍是比较建议在这家公司发挥出你最大能发挥的价值再离职。这样你出去,反而可能会带着亮点出去。对于年轻人来讲,你的亮点无非四点:
  1. 985,211背景
  2. 大厂背景
  3. 项目经历颇有亮点,在某些点研究、实践、落地、思考的很深刻。
  4. 开源项目

大部分人可能和我同样没有1和2。那么若是你作不到3和4的其中一点,只是会跟网上的面经同样干扯源码扯原理,仍是很难收获满意的offer的。

请关注个人微信公众号 【半行代码】

相关文章
相关标签/搜索