每年 9、10 月份各大互联网公司都会周期性地发生人事变动,无论是刚进社会的职场菜鸟,还是准备跳槽的老手,都将在这个时候获得新工作,或迎来晋升涨薪的最佳机会。
而面试是每个人进入一家公司的必经阶段。这个阶段是候选人和企业相互选择的过程。在面试前,我们有必要首先了解下整个面试的流程,以让我们更好地做好面试的准备工作。
接下来我将从下面几个方面为讲解:
在电话面试前,一般hr会把你的简历先给用人部门看一下,初步判定是否可以约面试。如果用人部门觉得可以,hr会进行电话沟通,最终确定是否需要约面试。面试表现,将决定我们是否能够进入企业工作。一般企业的面试流程是这样的:
在初试环节,很多大型企业都会安排专业考试或性格测试。所以工作之后,专业知识不能丢,特别是对于一些专业知识要求比较高的岗位,例如研发岗,财务岗,人力资源岗,这些岗位,就算你面试经理岗位,依然需要安排专业考试。
专业考试之后,就是初试了。初试一般是人力资源部门的招聘专员进行面试。
初试合格之后,会进入复试。关于面试官,企业一般会根据不同的岗位来确定面试官。如果是经理级别的岗位,一般人力资源部门的负责人和用人部门的分管领导会参与这个阶段的面试。经理级别以下的岗位,一般是人力资源部门主管、用人部门的主管人来面试。由于面试人员的设置受企业规模和企业具体情况的影响,在这里不做过细的陈述。
进入到终试,说明你离进入到公司工作就一步之遥了。一般经理级别以下的员工或者非核心岗位,是用人部门经理或分管领导面试;经理级别以上或一些公司的核心岗位,由总经理或董事长来面试。
上面的流程并不是固定的,很多企业可能只有初试和复试。流程可能变,但面试官是不会变的。如果流程缩减,有可能是把终试的面试官和复试的面试官安排在一起进行多对一的面试。
在每个阶段,由于面试官不一样,所以面试的问题也不一样。正规的大型的公司,每个阶段的面试官都会有不同的任务。
这个环节主要由Hr核实面试者的基本情况(如学历经历、工作背景、工作内容等)、初步评判个人能力、素质等是否符合岗位要求和是否符合公司企业文化,厉害的hr还会根据你的性格特点、做事风格来判断你是否能够跟你未来的直接上级相处。然后他们会综合评判,剔除明显不合适的人员,所以对于找工作来说,Hr初试是你能否进入公司的第一道坎。
因为hr是第一个接触到你的简历的,所以三种事情是hr一定会做的。第一种,根据你的简历,结合企业的招聘要求,判断你和岗位要求的匹配程度;第二种,会对你的简历所描述的事实进行真假的甄别;第三种,对你简历的一些特殊的情况进行了解,如职业经历的空白(如怀孕导致的职业空白)。
以上三种情况,主要通过一系列的面试问题来进行确认。
在这个阶段,hr会问的问题如下:
Hr一般不会全部问题都问,他们会根据实际岗位,挑选部分问题来进行提问,一般这个环节用时会在30分钟左右。
其实复试一般是专业面试。由人力需求部门主导,具体根据所招聘岗位来选择面试资格人。此主要对应聘者个人素质和业务技能进行考核,重点在于岗位适应性和专业技能。
终试面试官为人力资源需求部门的分管领导、人力资源负责人和公司总经理、董事长,全面考核应聘者的素质及专业技能,认证各项面试过程的真实性及评价的一致性,分析应聘者在公司未来的可发展性,明确其岗位匹配性。所以这个阶段并没有固定的面试问题。
这里所说的面试应该是通过简历筛选了,并且邀请来公司面谈的环节,关于怎么写简历这里就不再提了,不知道的可以看一下这篇文章「你真的会写简历么?」。
这里首先强调大家一点,就是大部分靠谱点的公司都会有背景调查环节,比如你之前的教育经历,工作经历,薪资水平,离职原因等等这些千万不要造假,一旦发现有造假的,肯定不会被录取。而且如 BAT 这类大公司,甚至可能会被拉黑,永久进入黑名单。
所以简历填的各种信息请一定保证真实,当然我见过有不少毕业一年的同学为了提高自己的工作经验,写成2年,因为把实习经验也算上,关于这点可能不算造假,但是严格来说也有嫌疑,有些企业可能会在乎,有些不会在乎,这个因人而异,如果觉得自己能力确实很强,但是担心自己因为工作经验不够被刷掉,不妨是一种手段,但是这里不建议这样做。
大部分企业招人都需要面试这个环节,那是因为只有面对面的交谈,才能看出一个人的基本素质。所以在交谈的过程中基本素质这个是默认的指标。这包括哪些呢?着装言谈,态度积极乐观,对待技术要谦逊,不要太浮夸。这点其实大部分人都没问题,但是我见到过有些对前公司特别抱怨,但是自己又没有在前公司付诸过行动去尝试改变。也见过对技术特别自信的,对没有接触过的技术或者知识很蔑视,就给你回复个这技术花点时间学习下不就ok了么?那么这个世界上有什么是花时间学习不了的东西么?还见过来面试的,但是对我们的产品不了解或者对整个公司都不了解的,这样的人,就属于基本素质不过关,不够职业。
根据招聘岗位的不同这个方面有所差别,一般是针对 Android 中级以下的人会问一些基础,对于高级 Android 工程师岗位不会问,而直接聊项目,聊产品。这方面的基础包括 Java 和 Android 的基础,比如 ArrayList 和 LinkedList 的区别,Java 的一些线程用法,Java 的 GC 原理等等,这部分基础网上一大堆关于 Java 的基础面试题,自行搜索就好,但是大多只考Java SE,涉及到 Java EE 方面的知识毕竟跟 Android 开发没多大关系,可以忽略。
然后就是 Android 基础,如四大组件的具体用法,如 Activity、Fragment 的生命周期与四种启动模式,Android 动画,View 的绘制流程,Sqlite 相关,图片加载机制、网络调用等,关于 Android 方面的基础面试题网上也一大堆,这里就不详细罗列了。
如果你面试的是初级岗位,那么基础知识是肯定要问的,如果你要找的是实习岗位,那么基本上只要基础够扎实就差不多了。但是大部分公司都不只问基础知识的,会配合问一些深入点的问题考察下你技术的深度,知道你大概的水平高度。
而深入点的知识对于 Java 如注解原理、反射原理、Java 并发等,最重要的是基本上都会问到设计模式,这个几乎是必问, Effective Java 被认为是进阶必备的书籍,如果把这本书看完了那么对于一些面试问的设计模式也基本不是问题。
对于 Android 深入的点会问一些自定义组件、性能优化,屏幕适配,IPC、Binder的理解,插件化,常用开源库以及原理等等。
需要注意的是,深入的知识点不可能你每个问题都能答对,因为面试官也没奢望问的你都会,如果你是应聘的初级岗位,那么我起码知道你的技术深度到哪里,因为技术同岗位的职位也会选择最优的,如果对于中高级岗位,那么这些深入的知识点就要求高点,起码的70%、80%的知识点都知道或者熟悉吧。
【Java语言进阶与Android相关技术内核】
俗话说「术业有专攻」,对于我们来说,虽然都是做的 Android 开发,但是不同的方向,意味着每个人擅长的技术领域也不一样。包括我也一样,我很多领域也没接触过,如果我只问你我擅长的领域那显然是不公平的,所以大部分面试官都会结合你的项目经验去聊。其实大部分一些固定的知识点都能答出来,区别就在于聊项目经验这块,这块可能占整个面试过程的70%以上。
而大部分聊的比较深入点的知识都是围绕你的项目经验来问,至于这个项目是不是你亲自做的,一聊就知道,所以如果这个项目是你伪造的,或者是你糊弄过去的,那么面试官一聊就会立马露馅,因为大部分面试官会针对你项目的点去一步步深入下去,以一个对话来举个例子:
我先开始:
Q:这个项目你主要负责哪部分?
A:图片加载是我主要负责的
Q:图片加载是你自己写的么?
A:不是,用的第三方开源项目
Q:用的什么?
A:Universal Image Loader
Q:恩,那说说你为什么要用它?
A:人家封装的好,使用起来方便
Q:那你看过他的源码么?知不知道原理?
A:源码...看过一点(其实我只是随便一问,但是这里支支吾吾基本就判断他撒谎)
Q:那说下他的缓存机制?
A:二级缓存嘛,硬盘缓存和内存缓存
Q:恩,那硬盘缓存跟内存缓存他们的具体算法是怎样实现的?
A:这个...这个没怎么看,知道有个LRUCache
Q:那你看过他什么源码?
A:其实这个项目很早之前看的了,有点忘记了,现在项目都用 Picasso 了
Q:那好,那 Picasso 跟 UIL 有什么区别?为什么要换UIL?
A:UIL项目作者不维护了,所以准备换到Picasso...
Q:为什么选择Picasso?
A:听别人都说他好,就用了,还有最近 Facebook 还出了个 Fresco ,好像比 Picasso 要好
Q:Fresco 跟 Picasso 比好在哪里?原理有什么不同?
A:这个还没时间研究...
Q:那最近在研究什么?
A:最近在研究 Retrofit
Q:有在项目中使用么?
A:恩,用起来很方便,比 OkHttp 方便多了
Q:Retrofit 跟 OkHttp 的关系是什么?原理上有什么不同?
A:他们都是 Square 公司开源的,在 Retrofit 上可以使用 OkHttp,不过 Retrofit 是基于注解的
Q:Retrofit的注解是编译前还是编译后?
A:...
Q:看过 Retrofit 的源码么?
A:哦,没有...(这下聪明了,如果他说看过那我还会接着问下去的,说没有那接下来换个话题)
以上的对话是还原了很多面试的真实场景,其中就是想告诉大家两点:
(1) 我会结合你的项目经验来问你问题,而不是凭空的就问你没做过或者没接触过的领域,如果是你真实脚踏实地做过的项目,不出意外都能答出来;
(2) 不会或者不擅长的领域不要提,因为大部分面试官会抓住你提到的领域继续深入下去,会就是会,不会就直接说不会,不要企图蒙混过关,这只会减少你的印象分,另外回答的时候如果想要更多的延伸下来体现自己的技术水平,尽量多往你擅长的方向延伸,比如你不懂Freso,那就尽量别主动提,除非面试官主动问你。
总之,项目经验这块是大头,如果你是项目的主程,甚至一个人单枪匹马做的这个项目,那么项目中遇到的问题,解决方法以及技术选型,代码出现的问题等你都会很有印象,这些在面试的过程中都会被问到的,如果是真实的项目经历,这部分完全不是问题。
当然除了根据你的项目经验之外,大部分面试官都会问一些你可能从没基础过的领域,比如问你一些 Service保活、JNI 甚至还会问你一些跟 Android 无关的后端技术,这些你回答不出来不影响大局,毕竟总会有你没接触的领域,这些问题面试官主要是想看下你技术的广度,看下你知识面的广度,答出来了会锦上添花,给你加分,但是答不上,并不会给你减分。
除以上之外,还有代码质量与重构、版本控制Git、是否参与产品、自己未来的规划等可能都会涉及,但是这些都不是硬性条件,综合起来,可以看看这篇文章,这篇文章中有介绍 「面试时企业最看中你什么能力?」,企业最关心的三种能力无外乎「学习能力」、「解决问题的能力」、「团队协作能力」,基础知识体现了你基本的学习能力过不过关,项目经验体现了你解决问题的能力,这个项目如果不是你单枪匹马的话,那么这中间的过程以及版本控制Git的使用等也会体现你的团队协作能力。
以上的面试题目,只是大部分企业的面试问题,并不代表所有问题都会被问到。所以除了对一些会问的问题进行准备之外,还应该做到以下几点:
熟知你的简历。你必须对你的简历的每一个事项都非常了解。因为面试官都是通过你的简历来进行提问,只有知己,才能对问题做到以不变应万变。
知道自己为什么能够胜任你要应聘的岗位。面试官是站在判断你是否能够胜任的角度来面试的,所以你也可以站在这个角度,时刻问自己,我应聘这个岗位,我的优势在哪里?我具备相应的知识、能力和素质吗?如果你对这些都很清楚,那你就能够应付95%以上的面试问题。
学会用结构化来回答你的面试题目。当面试官把面试题目抛给你后,他们希望你能够清晰地回答他的问题。至于如何才能清晰地回答问题,方法有很多,在这里介绍一种,就是结构化。例如:你对加班的看法是什么?你可以这样说:我能接受加班,但我不赞成无缘无故的加班。第一,对于不可避免的加班,如有些项目比较急,加班不可避免;第二,对于可以避免的,我绝对不赞成。例如因为自己工作拖延而造成的。通过结构化的回答面试问题的方法,会让面试官对你刮目相看,希望每个人都可以学会。
面试其实是对你过去经历的检验。你过去一年甚至三年的表现,会对你将要进行的面试产生重要的影响,所以面试准备,不是从当下才开始准备,要从你职业生涯长远的角度去考虑,时时刻刻在准备着你的面试。
面试中不可能完全把一个人的各方面能力都展现出来,企业和面试官也没有那么慧眼,一眼就认准了你,而且面试本身也是企业跟应聘者互选的过程,不要单方面的当做出售自己一样,你需要做的就是注意细节,打牢基础,脚踏实地的做项目,然后在面试中真实的表达自己就足够了!
有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。
最近是金九银十面试旺季,大家都希望趁着这个机会找到一个心仪的工作,但是不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊~
面试:如果不准备充分的面试,完全是浪费时间,更是对自己的不负责!金九银十面试季,赶快去为自己的面试做足准备吧!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。