首先在文章开始之前,需要大家了解下我的情况我是普通本科,不是985,211。大学的时候玩联盟,打篮球,逃课,谈恋爱。总之和一般的大学生一样,没有目标和方向,每天除了上课就是怎么开心怎么来。后来得知大四要实习,也看到了学长们就业那么困难,所以开始为自己的未来担忧,开始学习大学课程(电子相关专业),但是发现自己并不喜欢,但是也不知道该去学什么。无意间知道java,出去比较好找工作,所以开始自学,后来又学习Android。然后在大四的时候开始来北京工作。一直到现在。公司模板化比较严重,工作难度适中。但是我也非常感谢这家公司,因为他肯要我,同时因为工作难度不大,也让我有更多的课余时间去学习,去充实自己。
其实说了这么多,我只是想告诉那些知道我,但是不了解我的人明白,其实我们都一样,我一点也不比你们强,甚至不如你们。所以在一些私聊和评论中有个叫我大佬,我真的很惭愧,因为我扛不起这两个字。我深知自己的不足,自己只是一个菜鸟。如果以后有机会可以叫我小志,或是老铁都可以。同时这篇文章也不适合那些目标是BAT或是美团京东,Google的小伙伴,而是适合那些和我一样普普通通的小伙伴,想有个能养活自己同时能锻炼自己的能力的工作 (2年左右)。
概述
由于本文较长,为了不浪费大家的时间,我先对全文内容做一个简单的内容介绍,以便大家了解是否适合自己。本文主要是我最近面试的总结心得与规划。包含:面试准备,简历建议,投递简历方法,面试问题,面试安排,面试前的准备,如何与面试官的交流,如何与面试官沟通,如何回答问题,期望薪资水平,个人总结,今后规划,个人以后方向等等。
注:本人只是一个菜鸟。所述内容均为个人想法与理解。
面试之前
首先我不建议频繁的跳槽,除非被逼无奈,频发跳槽,不光会成为面试官害怕的一个方面,对自己的沉淀也是没有帮助的。同时我不建议裸辞,这样会存在太多的不定性因素,如果面试时间拖得太久,这段事件你没有经济收入,但是你还在支出(房租,日常生活开销)。这样会代来无形的压力,同时如果面试受挫,很容易失去信心,甚至怀疑自己的能力。但是离职也有他的好处,因为,有些公司可能项目非常急,需要迅速上岗,那么你离职的交接办理也会耽误一些时间,那么也会成为面试官考虑的一个因素。所以还是要结合自己的情况而定。
1. 面试复习
-
面试之前我用10天左右把自己看的书,做过的项目,写过的博客,还有一些java和Android基础复习一遍来准备面试,但是后来实际发现,尽管花了很久的时间去复习,但是复习的成果在面试过程中体现并不是很大。因为,虽然感觉复习的很好,可能没过三天就忘记以前的看的内容了。同时重复的去理解与忘记很容易代来负面情绪,所以,复习要尽可能短一些,在自己的长处,比如:前端,后台,框架源码,framework等等去好好的梳理一下,成为自己的特点和优势就好。然后面试前1-2天把一些面试常考的知识点复习一下牢牢记住,就可以了,不用等自己100%的准备好才去面试,因为那事不可能的。你根本复习不过来。60-70%就很好了,剩下的就在面试中去回顾吧。
-
不要想着完全不用回顾自己以往学过的东西,也不去准备。就等着便面试遍复习,因为即使你当初理解的熟的不能再熟,也要看,因为你永远想不到自己的记忆力消散的有多快,有多可怕。同时当你面试的时候,你就会发现,你根本没有时间去复习。即使你想在地铁上看一下也是不太可能的,因为你会忙着别的或是太累或是导航去下一个地点。而没有时间去复习。
2. 简历制作
简历制作是一种学问,一份好的简历往往让人眼前一亮。同时简历要突出重点,
-
技能特长比如你自定义View好,那么就把View的相关技能写上,比如:View加载流程,事件分发,自定义属性,滑动冲突等等,如果视频方面强那么就相关的技能写上。尽量不要有精通,除非你真的“精通”。否则就是给自己挖坑。也不要写一些太过常见的技能,如果:了解Activity的生命周期。谁都知道的东西,没别要单拿出来。也不要太长或太短10-12个技能特长左右。宗旨在于表达的特点简单明了。其他的点大家在自己搓摩下。
-
项目介绍如果你是实习,那么你一定要有自己在大学项目,或是毕业设计,或是团队项目。如果是在职一定要有公司的项目。同时项目不宜过多2-3个即可,如果你有觉得可以在简历上写的前端或是后台的项目,那么会有很大的加分。同时项目介绍不要太过啰嗦,3-5行,突出架构,核心技术,主要功能与模块即可,同时写出自己在其中做了那部分内容。(这部分要写好,因为面试官很可能会问你,你开发中遇到的问题,难点,优化,协作,调试等相关问题)
-
其他技能如果有英语4.6级一定要写上,有github,个人blog一定要写上地址。这我就不用说了吧。
简历制作总结: 至于其他的对大家应该没有难度。同时适当的包装无可厚非,求职者想找个好工作,面试官想找个好员工。对方就像相亲一样。一定会把你的低摸个清楚的。如果相亲的时候的没问题,等孩子都有了那就晚啦。哈哈,我就是这个意思。包装的目的是为了增加HR的通过率。这样才会有面试机会,对我们这种渣渣来说,面试机会比面试通过与否更重要。因为面试邀请都没有,你准备有个P用。
最后我还是希望大家提高自己的实力,实力才是硬道理
3. 简历投递
如果说简历制作是门学问,那么简历投递一定是一个技巧了。投的好你就会有面试邀请,投的不好,即使你能力再好也是过不去的。所以投好简历至关重要。那么我们可以从这几个方面入手:
-
网站选择现在主流的网站有智联,BOSS直聘,拉钩。如果你这些投递完后面试邀请还不是很多,可以试试中华英才,前程无忧,猎聘同道。其他的软件基本就没什么作用了,智联可以海投,能力好可以看公司方向投递。拉钩有投递上线,可以多创建几个拉钩重复投递,BOSS的话可以在坐公交或是面试之余去投,这个主要是以聊为主,如果谁看了你的简历,那么你可以主动沟通。
-
投递时间你可以选择在周日晚间投递,这样在周一HR上班时候你的简历不会排的太远。平时也是在每天的6-8点投递为好,这样如果HR去看的话,会容易看到一些
-
其他注意如果你是半年或是一年经验,可以多写一点,当然面试的时候给的简历就要真实了。因为有些情况,如果你工作太短,无论你多优秀也不会有太多的面试机会,因为人家的硬性条件你都过不去。
4. 面试准备
-
个人准备如果你是在大城市,一定要把手机充好电(带着充电宝),因为去哪里都要导航,还有就是提前就多买点吃的,因为你可能为了干面试一天都吃不上饭(深有体会)。带好简历和纸笔。
-
面试安排如果面试邀请比较多的话,一定要用Excel做好表格,然后尽量把相同地点的安排在一起(虽然给你面试邀请的时候,会规定时间,但是你打电话沟通改时间件,一般都会同意的,大家都理解)。这样你就可以不用来回跑,可以一天面3-4个。还能节省时间和体力。我把我的表格拿出来,你们可以做个参考:
大家可以根据自己的情况自己创建,安排和查看都很方便。
- 面试排期面试多的话,不要一天排超过4个,2-3个最好,有时候可能会赶不上,同时会给人家造成不好的印象,同时对自己太多劳累(面试比工作累多了)。
面试之中
这部分主要是面试相关,本身我是接近两年的工作经验。所以我面试的公司没有什么BAT,也没有上千人的大企业。所以,如果不适合你,可以选择跳过。同时我面试的比较多,不乏一些初创的创业公司(10个人一下,5个人的公司)。但是每个公司的面试我们都要重视与尊重,因为只要是一个公司既然创办起来,必然有存活之道,所以没有高低,只有适不适合自己。如果特别少的面试邀请也可以试试锻炼自己。去不去那又是另一回事。
因为我面试时间并不长,面试的公司与周期不多(面试真心太累了),所以都是从我的个人实际触发,仅供参考。我面试的公司与内容如下:
- XXXX清承科技有限公司
公司方向: 主要是教育方面,是一家线上与线下结合的教育相关公司,提供不同年龄段的教育学习,同时自主研发平板投影,视频盒,定制钢琴,手机端在线教育软件等。公司也是初创团队,公司40+人,近20人清华毕业,公司负责人与移动部负责人都是清华博士后毕业。说来也尴尬,因为由于个人原因,晚了面试时间12天,但是想着试试。公司人数: 30-50主要内容:
-
java核心思想
-
java高级知识,注解,反射,泛型的理解与作用
-
framework有那方面什么理解
-
Activity的生命周期与启动模式
-
性能优化
-
内存优化
-
数据结构(这方面是我的弱项,于是给我一个场景让我如何去选择,为什么)
-
Bitmap如果优化,他的三级缓存的大致思想与逻辑
-
给我说一个你项目中你用到的自定义View的实现,不用细节到代码,主要的思想与核心方法输出即可。
-
ListView如何优化,复用的原理,为什么会图片错位,如何解决,分页的思想是什么。
-
会根据你所写的技能特长找出3-4个点来问一问。由浅入深。从使用到场景到优化再到源码等等。(所以前面说了,不要随便写精通,除非你真的"精通")。
-
你在公司中用的什么代码管理,如何解决git冲突。你在工作中你的职责和主要内容等工作相关的问题。
像我这种基本一遍都会在1-1.5小时就会结束,上面的问题问一遍基本也就差不多了。由于我去的时候他们Android已经招满了,但是考虑我我来,就给我一个机会。这个公司很看重员工的学习能力,鼓励学工多元化发展,后台,前台,硬件多元化。公司不错。面试时间: 1小时面试结果: 已给offer这个面试内容能够通过,基本就是靠文章和github给的分,专业知识不足。没有达到他们的要求。所以文章和github真的加不少分。因为学习能力和自主学习能力还可以,并且能看重你能力的公司至少会看重你的发展不光是让你来了就干活。
- XXX云公司
公司方向: 物联网方向,提供云服务,与技术支持,企业定制软件,是一个软件超控硬件的公司。由360核心团队创业公司人数: 30-50人。主要内容:
-
手写三种单例模式,冒泡排序
-
java线程,场景实现,多个线程如何同时请求,返回的结果如何等待所有线程数据完成后合成一个数据
-
线程种类
-
Android子线程与主线程交互方式,原理以及各自的优缺点。
-
有哪几种创建线程的方式,优缺点。
-
项目介绍,开源框架的认识如何封装,项目中的难点
-
Activity的生命周期,热修复的实现原理与区别(因为我简历里写了)。
-
在实际开发中的内存泄漏产生原因,如何查看,和你所知道的内存泄漏检测工具
-
项目介绍,项目提问,结果那些第三方,用工具解决问题,如何科学上网,会浏览那些网站,了解Android等技术途径等。
-
git相关(这我装了一波,说我都是手写命令,因为当时是看书学的,因为在github上不存在冲突,所以真的就习惯性的用命令操作github)
其实还聊了一些东西,很多细节我也记不住了,面试官很和蔼,你不会告诉会先引导你,可以允许你有自己的理解思维与想法,然后说出自己的想法。不会的还会和你解释,很有质量的一次面试,也是我所有面试中最舒服的一次。面试时间: 1.5-2小时面试结果: 已给offer这个公司我真的很喜欢,虽然是创业公司但是技术过硬,产品很好。主要是我的面试官和负责人都让我感觉很亲切,这可能也是我喜欢他的原因吧。
- XXX驾科技有限公司
公司方向 技术支持与服务,基础软件服务,车载导航软件支持等方向。公司人数: 50-70主要内容
-
handle的使用与原理
-
线程切换与线程池的种类与作用,什么情况下使用多线程,有什么好处
-
简单介绍四大组件
-
Manfest.xml的里有什么和作用
-
什么是多进程,进程和线程的区别,如何给四大组件指定多进程。
-
多进程之间的通信的方式,如何使用AIDL。他的使用场景是什么。
-
View的加载流程
-
如何实现一个自定义View
-
如何选择第三方,从那些方面考虑
-
内存优化
-
bitmap的三级缓存思想与如何优化bitmap
-
注解的作用与原理
-
设计一个音乐播放界面,你会如何实现,用到那些类,如何设计,如何定义接口,如何与后台交互,如何缓存与下载,如何优化(15分钟时间)
-
技能相关
-
项目相关提问
下面是公司负责人面试
-
什么是hash,他的作用是什么。hashMap源码是什么,他是依据什么原理实现的。
-
手写一段代码,如何找出一段字符串中,出现最多的汉字是哪个。
第一场面试的时候大约2.5小时,第二场40-1小时,共3.5小时左右,因为当天的面试安排特别多,所以早点去,而且离家近,去了等他们还没有上班,走的时候他们午饭已经吃完了。其实前一个面试官聊得很不错,一般聊到总负责人就不会在技术了。而且他们要的是实习生,当时我也不知道怎么就去了。后面关于数据结构原理与算法,我基本完败,我不知道1-2年的Android能理解到什么程度只能说我技不如人,走的时候给我留个作业,设计一个基于高德地图的车载功能,要求界面流程,路线图实时绘制,定位准确。2天时间。
面试时间: 3.5小时面试结果: 未给offer因为时间比较紧,而且面试比较多,所以没有事件去完成留得作业,毫无疑问没有通过,从这个面试中我也知道了java基础与高级技能,还有数据结构与算法是自己的弱项,以后一定要在这方面多努力。
XXXX投约牛科技****公司方向: 金融方向,产品开发接近尾声,还差一些付费接口数据,项目内部测试,然后上线。公司人数: 100-150主要内容:
-
说下你了解那些framework。
-
说说你对布局优化的理解
-
你是如何实现类始于QQ表情图的,实现动图与图文并现的原理你简单说下(项目中有)
-
说下当前你所知道的热更新与插件化,他们的实现核心原理是什么,他的异同有什么。
-
从那些角度可以减少APK体积的
-
对gradle命令与打包,接触过那些平台的上架
-
简单说下接入支付的流程,是否自己接入过支付功能
-
谈谈你对自定义View的理解,如果有一个需求你会如何实现一个自定义View
-
说下LinkedList与ArrayList,HashTable与HashMap的区别与存储过程与遍历方式。
-
说下你都看过那些技术书籍,你是如何自学的。你觉得自己的优势与弱点是什么。
-
说下四大组件的启动过程(从Framework层去说,不必说出每个方法的名字,大致流程即可)。四大组件的启动与销毁的方式。
-
Android的数据存储方式有哪些,是否SQLite中要继承那个类来创建与更新数据库。SQL语句掌握怎么样。如何得到操作数据库的类等。
-
说下你对多进程的理解,什么情况下要使用多进程,为什么要使用多进程,在多进程的情况下为什么要使用进程通讯。
-
说下你用过的那些第三方,是否可展示。
这个公司项目马上要内部测试,可能会用到一些第三方的接入的东西,比较注重工作能力,面试官人很好,也是比较看重学习能力,也说当天面试过的5-6个人中都没有人说看书学习写博客之类的,而且根据的实际情况和能力程度来看,对我很满意(嘻嘻,有些小激动,付出终于得到肯定)。当时直接要给offer,由于一些其他问题需要和领导协商。
面试时间: 1.5小时面试结果: offer意向
还未收到他们回复面试结果,所以也不知道自己通过与否,不过感觉面试的还不错,由于他们产品开发完成大半,目前就差一些第三方的接入与优化和调试,所以需要一个工作能力比较好的,可以上手比较快。总的来说面试过程不错,不过也知道了自己在实际开发中处理问题能力与调试能力还要加强。面试官很好,说我就在他手底下干活。挺喜欢我的。哈哈。
**XXXX智能****公司方向:这是一家人工只能公司,主要是做人工智能机器人,无人机,视觉算法等方面,公司环境高大上,基本好像都是90后,很有活力。领域也比较前沿,是一个不错的公司。公司人数: 100-200主要内容:**第一个面试官:
-
说下你所知道的设计模式与使用场景
-
java语言的特点与是OOP思想
-
说下java中的线程创建方式,线程池的工作原理。
-
说下handle原理,为什么会出现内存泄漏,为什么继承Handle就不会出现能存泄漏
-
说下Activity的启动方式,生命周期,两个Activity跳转的生命周期,如果一个Activity跳转另一个Activity再按下Home键在回到Activity的生命周期是什么样的
-
说下Activity的横竖屏的切换的生命周期,用那个方法来保存数据,两者的区别。触发在什么时候在那个方法里可以获取数据等。
-
是否了SurfaceView,它是什么?他的继承方式是什么?他与View的区别(从源码角度,如加载,绘制等)。
-
如何实现进程保活
-
说下冷启动与热启动是什么,区别,如何优化,使用场景等。
-
Android中的线程有那些(我提到HandlerThread,AsyncTask又问了他们的原理与各自特点)
-
给定命题,一串字符串中有通配符与占位符,如何化简优化(方法忘记可以简写)
-
说下产生OOM,ANR的原因,三级缓存原理,如何优化ListView。
-
说下你对Collection这个类的理解。
第二个面试官:
-
说下AIDL的使用与原理
-
说下你对广播的理解
-
说下你对服务的理解,如何杀死一个服务。服务的生命周期(start与bind)。
-
是否接触过蓝牙等开发
-
设计一个ListView左右分页排版的功能自定义View,说出主要的方法。
-
说下binder序列化与反序列化的过程,与使用过程
-
是否接触过JNI/NDK,java如何调用C语言的方法
-
如何查看模拟器中的SP与SQList文件。如何可视化查看布局嵌套层数与加载时间。
-
你说用的代码管理工具什么,为什么会产生代码冲突,该如何解决
-
说下你对后台的编程有那些认识,聊些前端那些方面的知识。
-
说下你对线程池的理解,如何创建一个线程池与使用。
-
说下你用过那些注解框架,他们的原理是什么。自己实现过,或是理解他的工作过程吗?
-
说下java虚拟机的理解,回收机制,JVM是如何回收对象的,有哪些方法等
-
一些java与Android源码相关知识等
第三个面试官(总负责人):
- 大学成绩
最后看一下学习需要的所有知识点的思维导图。在刚刚那份学习笔记里包含了下面知识点所有内容!文章里已经展示了部分!如果你正愁这块不知道如何学习或者想提升学习这块知识的学习效率,那么这份学习笔记绝对是你的秘密武器!
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!
三个面试官(总负责人):**
- 大学成绩
最后看一下学习需要的所有知识点的思维导图。在刚刚那份学习笔记里包含了下面知识点所有内容!文章里已经展示了部分!如果你正愁这块不知道如何学习或者想提升学习这块知识的学习效率,那么这份学习笔记绝对是你的秘密武器!
[外链图片转存中…(img-hGKPZAif-1715329866022)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可获取!