Android开发经验谈Android开发Android技术知识

金三银四,最详细的Android工程师面试大总结

2019-03-29  本文已影响20人  Android架构

前言

首先在文章开始之前,需要大家了解下我的情况我是普通本科,不是985,211。大学的时候玩联盟,打篮球,逃课,谈恋爱。总之和一般的大学生一样,没有目标和方向,每天除了上课就是怎么开心怎么来。后来得知大四要实习,也看到了学长们就业那么困难,所以开始为自己的未来担忧,开始学习大学课程(电子相关专业),但是发现自己并不喜欢,但是也不知道该去学什么。无意间知道java,出去比较好找工作,所以开始自学,后来又学习Android。然后在大四的时候开始来北京工作。一直到现在。公司模板化比较严重,工作难度适中。但是我也非常感谢这家公司,因为他肯要我,同时因为工作难度不大,也让我有更多的课余时间去学习,去充实自己。

其实说了这么多,我只是想告诉那些知道我,但是不了解我的人明白,其实我们都一样,我一点也不比你们强,甚至不如你们。所以在一些私聊和评论中有个叫我大佬,我真的很惭愧,因为我扛不起这两个字。我深知自己的不足,自己只是一个菜鸟。如果以后有机会可以叫我KP,或是老铁都可以。同时这篇文章也不适合那些目标是BAT或是美团京东,Google的小伙伴,而是适合那些和我一样普普通通的小伙伴,想有个能养活自己同时能锻炼自己的能力的工作 (2年左右)


文末有我总结的一些面试资料免费领取,感谢支持~

概述

由于本文较长,为了不浪费大家的时间,我先对全文内容做一个简单的内容介绍,以便大家了解是否适合自己。本文主要是我最近面试的总结心得与规划。包含:面试准备,简历建议,投递简历方法,面试问题,面试安排,面试前的准备,如何与面试官的交流,如何与面试官沟通,如何回答问题,期望薪资水平,个人总结,今后规划,个人以后方向等等。


面试之前

首先我不建议频繁的跳槽,除非被逼无奈,频发跳槽,不光会成为面试官害怕的一个方面,对自己的沉淀也是没有帮助的。同时我不建议裸辞,这样会存在太多的不定性因素,如果面试时间拖得太久,这段事件你没有经济收入,但是你还在支出(房租,日常生活开销)。这样会代来无形的压力,同时如果面试受挫,很容易失去信心,甚至怀疑自己的能力。但是离职也有他的好处,因为,有些公司可能项目非常急,需要迅速上岗,那么你离职的交接办理也会耽误一些时间,那么也会成为面试官考虑的一个因素。所以还是要结合自己的情况而定。

1. 面试复习

2. 简历制作

简历制作是一种学问,一份好的简历往往让人眼前一亮。同时简历要突出重点。
感兴趣的朋友可以参考我之前的一篇文章让人眼前一亮的Android工程师简历

简历制作总结: 至于其他的对大家应该没有难度。同时适当的包装无可厚非,求职者想找个好工作,面试官想找个好员工。对方就像相亲一样。一定会把你的低摸个清楚的。如果相亲的时候的没问题,等孩子都有了那就晚啦。哈哈,我就是这个意思。包装的目的是为了增加HR的通过率。这样才会有面试机会,对我们这种渣渣来说,面试机会比面试通过与否更重要。因为面试邀请都没有,你准备有个P用。

最后我还是希望大家提高自己的实力,实力才是硬道理

3. 简历投递

如果说简历制作是门学问,那么简历投递一定是一个技巧了。投的好你就会有面试邀请,投的不好,即使你能力再好也是过不去的。所以投好简历至关重要。那么我们可以从这几个方面入手:


4. 面试准备

资料获取方式:加入Android面试交流QQ群聊:513088520 ,进群即领取资料

点击链接加入群聊【Android移动架构总群】:加入群聊

面试之中

这部分主要是面试相关,本身我是接近两年的工作经验。所以我面试的公司没有什么BAT,也没有上千人的大企业。所以,如果不适合你,可以选择跳过。同时我面试的比较多,不乏一些初创的创业公司(10个人一下,5个人的公司)。但是每个公司的面试我们都要重视与尊重,因为只要是一个公司既然创办起来,必然有存活之道,所以没有高低,只有适不适合自己。如果特别少的面试邀请也可以试试锻炼自己。去不去那又是另一回事。

因为我面试时间并不长,面试的公司与周期不多(面试真心太累了),所以都是从我的个人实际触发,仅供参考。我面试的公司与内容如下:

公司方向: 主要是教育方面,是一家线上与线下结合的教育相关公司,提供不同年龄段的教育学习,同时自主研发平板投影,视频盒,定制钢琴,手机端在线教育软件等。公司也是初创团队,公司40+人,近20人清华毕业,公司负责人与移动部负责人都是清华博士后毕业。说来也尴尬,因为由于个人原因,晚了面试时间12天,但是想着试试。
公司人数: 30-50
主要内容:

  1. java核心思想、java高级知识,注解,反射,泛型的理解与作用
  2. framework有那方面什么理解
  3. Activity的生命周期与启动模式
  4. 性能优化、内存优化
  5. 数据结构(这方面是我的弱项,于是给我一个场景让我如何去选择,为什么)
  6. Bitmap如果优化,他的三级缓存的大致思想与逻辑
  7. 给我说一个你项目中你用到的自定义View的实现,不用细节到代码,主要的思想与核心方法输出即可。
  8. ListView如何优化,复用的原理,为什么会图片错位,如何解决,分页的思想是什么。
  9. 会根据你所写的技能特长找出3-4个点来问一问。由浅入深。从使用到场景到优化再到源码等等。(所以前面说了,不要随便写精通,除非你真的"精通")。
  10. 你在公司中用的什么代码管理,如何解决git冲突。你在工作中你的职责和主要内容等工作相关的问题。


    Android App全方位性能调优

像我这种基本一遍都会在1-1.5小时就会结束,上面的问题问一遍基本也就差不多了。由于我去的时候他们Android已经招满了,但是考虑我我来,就给我一个机会。这个公司很看重员工的学习能力,鼓励学工多元化发展,后台,前台,硬件多元化。公司不错。
面试时间: 1小时
面试结果: 已给offer
这个面试内容能够通过,基本就是靠文章和github给的分,专业知识不足。没有达到他们的要求。所以文章和github真的加不少分。因为学习能力和自主学习能力还可以,并且能看重你能力的公司至少会看重你的发展不光是让你来了就干活。

公司方向: 物联网方向,提供云服务,与技术支持,企业定制软件,是一个软件超控硬件的公司。由360核心团队创业
公司人数: 30-50人。
主要内容:

  1. 手写三种单例模式,冒泡排序
  2. java线程,场景实现,多个线程如何同时请求,返回的结果如何等待所有线程数据完成后合成一个数据
  3. 线程种类
  4. Android子线程与主线程交互方式,原理以及各自的优缺点。
  5. 有哪几种创建线程的方式,优缺点。
  6. 项目介绍,开源框架的认识如何封装,项目中的难点
  7. Activity的生命周期,热修复的实现原理与区别(因为我简历里写了)。
  8. 在实际开发中的内存泄漏产生原因,如何查看,和你所知道的内存泄漏检测工具
  9. 项目介绍,项目提问,结果那些第三方,用工具解决问题,如何科学上网,会浏览那些网站,了解Android等技术途径等。
  10. git相关(这我装了一波,说我都是手写命令,因为当时是看书学的,因为在github上不存在冲突,所以真的就习惯性的用命令操作github)


    Java语言进阶与Android相关技术内核

其实还聊了一些东西,很多细节我也记不住了,面试官很和蔼,你不会告诉会先引导你,可以允许你有自己的理解思维与想法,然后说出自己的想法。不会的还会和你解释,很有质量的一次面试,也是我所有面试中最舒服的一次。
面试时间: 1.5-2小时
面试结果: 已给offer
这个公司我真的很喜欢,虽然是创业公司但是技术过硬,产品很好。主要是我的面试官和负责人都让我感觉很亲切,这可能也是我喜欢他的原因吧。

公司方向 技术支持与服务,基础软件服务,车载导航软件支持等方向。
公司人数: 50-70
主要内容

  1. handle的使用与原理
  2. 线程切换与线程池的种类与作用,什么情况下使用多线程,有什么好处
  3. 简单介绍四大组件
  4. Manfest.xml的里有什么和作用
  5. 什么是多进程,进程和线程的区别,如何给四大组件指定多进程。
  6. 多进程之间的通信的方式,如何使用AIDL。他的使用场景是什么。
  7. View的加载流程
  8. 如何实现一个自定义View
  9. 如何选择第三方,从那些方面考虑
  10. 内存优化
  11. bitmap的三级缓存思想与如何优化bitmap
  12. 注解的作用与原理
  13. 设计一个音乐播放界面,你会如何实现,用到那些类,如何设计,如何定义接口,如何与后台交互,如何缓存与下载,如何优化(15分钟时间)


    App开发框架知识体系(APP亦对象)

下面是公司负责人面试

  1. 什么是hash,他的作用是什么。hashMap源码是什么,他是依据什么原理实现的。
  2. 手写一段代码,如何找出一段字符串中,出现最多的汉字是哪个。

第一场面试的时候大约2.5小时,第二场40-1小时,共3.5小时左右,因为当天的面试安排特别多,所以早点去,而且离家近,去了等他们还没有上班,走的时候他们午饭已经吃完了。其实前一个面试官聊得很不错,一般聊到总负责人就不会在技术了。而且他们要的是实习生,当时我也不知道怎么就去了。后面关于数据结构原理与算法,我基本完败,我不知道1-2年的Android能理解到什么程度只能说我技不如人,走的时候给我留个作业,设计一个基于高德地图的车载功能,要求界面流程,路线图实时绘制,定位准确。2天时间。

面试时间: 3.5小时
面试结果: 未给offer
因为时间比较紧,而且面试比较多,所以没有事件去完成留得作业,毫无疑问没有通过,从这个面试中我也知道了java基础与高级技能,还有数据结构与算法是自己的弱项,以后一定要在这方面多努力。

XXXX智能
公司方向:
这是一家人工只能公司,主要是做人工智能机器人,无人机,视觉算法等方面,公司环境高大上,基本好像都是90后,很有活力。领域也比较前沿,是一个不错的公司。
公司人数: 100-200
主要内容:
第一个面试官:

第二个面试官:

第三个面试官(总负责人):

第一个面试偏向java基础和数据结构与算法与Android基础,第二个面试官主要考察源码理解能力,与沟通理解能力,因为第二个面试官问的很多问题我很多的达不上来,所以会往我会的方向上靠,所以给我的建议是语言组织能力与抓住说话人表达内容的理解能力有待加强。因为是人工智能方向,所以以后会接触到硬件的开发,正好我电子专业,所以问了很多硬件方面的知识(瞬间打脸,有些东西不用就忘了,没有回答好)。

面试时间: 2.5-3小时
面试结果: 已给offer

其实这次面试我个人觉得一般,很多问题都没有回答准确,用的框架很多,源码理解不够深入,只停留在表面,再一次暴露我的数据结构与算法的不足和我的逻辑思维能力也差很多。都能说出一些东西,但是不准确与不深入。

XXXXBT
公司方向:
金融方面,马上上线,想要一个人就能挑起开发大梁的人
公司人数: 50-150
主要内容:

有些问题我忘记了,就能想起这么多了,总之没有问太多的简历内容,全是实际开发中相关的问题,如何和后台交互,如何代码优化,如何封装,打包上线等问题。这也提现了http相关知识的重要性,一个问题出现,如果理解http协议与后台就会更好的找到问题的根源,所以这方面的知识很重要,自己在工作中很少去注意这些,以后要多去学习这方面的知识

面试时间: 40分钟-1小时
面试结果: 未给offer

由于项目比较急,而且想要一个能快速接手与上线的人员,同时自己实际开发能力与问题处理能力不足,未能给offer。

其实还有一个途游XXX游戏的面试,这也是我面试用户量比较大的一个公司,但是由于面试官生病了,着急去医院也就草草了事了。说再给答复。
这里我只拿出的一些比较能记得住问题的面试

其他

其实有一些所有面试通用的问题,我基本没写,如简单介绍自己,根据简历中所写技能拿出3-4深问,看你掌握程度;项目概述,研发中遇到的问题,如何解决;公司项目中你的职责,遇到的问题,如何协作解决问题;项目中用到框架的源码理解,如何封装等等;

总结

我的面试中,framework,线程,数据结构与算法基础知识,开发实际问题,自定义View相关,四大组件与加载流程源码,框架源码的理解程度与原理,MVP架构的理解,接口与抽象的使用场景,Handle相关,线程切换,内存,性能优化等等都是常见的问题。

面试通用问题回答技巧

自我介绍
这个时候往往是面试官看你简历内容的时候,但是我们的介绍也要简单明了,可以从这几个方面:

个人职业规划
那我来说,我会在以后的1-3年学好java基础,数据结构与算法,主动去了解后台开发,同时在公司业务方面的Android方向深入,坚持看书写博客,再学一门语言等
向面试官提问


面试之后

我面试的不是很多,但是也让我知道,自己的不足,之前觉知道自己在数据结构与算法这方面很弱,同时开发中的问题总结,java基础与高级知识不足,源码阅读不够深入,掌握的知识很虚,没有理解到重点,框架用的多但是只停留在会使用的阶段。网络相关知识薄弱。后台开发流程与知识薄弱(所有的逻辑与难点其实都在后台,同时了解后台也有助于Android开发与接口调试协作)。这些都是我以后的学习方向


个人总结

其实面试也是个学习过程,之前没有好好理解,在这些面试之后平时不注意,需要学习的方面就显露出来了。这样也能知道自己的不足。也能帮助自己以后的职业规划的学习方向。

今后计划

准备好好工作,静下心来,好好沉淀自己,多总结开发的问题,提升自己个人能力,虽然Android现在不那么景气 ,但是既然决定做Android那就好好去学习,去深入,同时多元化去了解后台前端和一些前言技术等。


总结

文章篇幅较长,总结的心得与方面有很多,通过这阶段面试,主要认识到自己java基础,源码阅读能力,数据结构与算法,网络编程知识与实际开发出现问题的总结能力还有待加强,这是一个面试重点,也是自己今后需要努力的方向,同时自学能力也是面试一个重要因素,所以我们不要成为码农,而要成为一个优秀的程序员这才是我们努力的方向,做好规划,努力学习,记录总结。养成这样的习惯。

现在正值“金三银四”面试季,在这里我也在网上收集了很多Android进阶资料,面试涉及到的绝大部分面试题及答案做成了文档和架构视频资料免费分享给大家【包括高级UI、性能优化、架构师课程、NDK、Kotlin、混合式开发(ReactNative+Weex)、Flutter等架构技术资料】,希望能帮助到你面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。

资料获取方式:加入Android面试交流QQ群聊:513088520 ,进群即领取资料

点击链接加入群聊【Android移动架构总群】:加入群聊

上一篇下一篇

猜你喜欢

热点阅读