@Android程序员:到底是Android不行了,还是你跟不上了?

6 篇文章 0 订阅
6 篇文章 0 订阅

想要成为一名优秀的Android开发,你需要一份完备的 [知识体系],在这里,让我们一起成长为自己所想的那样~。

  • 25%的面试官会在头5分钟内决定面试的结果
  • 60%的面试官会在头15分钟内决定面试的结果

一般来说,一场单面的时间在30分钟左右,而决定你生死的重要关键部分就是:自我介绍和三大问。

如果这部分回答的不好,除非后面的回答非常精彩,能够帮你搬回来,否则机会渺茫。

自我介绍大家都知道,什么是三大问呢?其实就是“3why”问题

  1. 为什么选择这家公司?
  2. 为什么应聘这个职位?
  3. 为什么要聘用你?

在求职者回答自我介绍和三大问的时候,出现最多的问题的就是:

自己都不知道自己的优势是什么,自己的故事都不清晰,自己都没有想清楚为什么要申请某个职位。

面试时间有限,面试官从你身上就想回答三个问题:

1. 这个人能力层面是否可以胜任这份工作?
2.这个人适合我们公司的文化么(如果是四大,会想我愿意带着这个人做项目么)?
3.这个人自己有没有想清楚加入我们,commitment有多强?

那么这个任务就在你身上了,你要来说服对方以上三点。那我在面试同学过程中经常发现的问题是什么?

1).不了解自己,说不出什么具体的事例来show给面试官看为什么自己具备某一项能力。

很多同学的做法就是tell,也就是说当问到为什么要录取你的时候,回答的方式是,因为我具有很强的学习能力、沟通能力和领导力。再深挖让给具体例子,还是泛泛而谈,无法触及本质。所以你说了,面试官就信了?那这是不是来的太容易了。

2).不清楚公司需求。

每个公司关注的人的素质是不同的,对于四大来说,关注的人跟对于快消市场或者互联网运营是不一样的,所以你对问题的回答,比如自我介绍,一定是基于对四大需要的人才特点的认知基础上的,而不是让你自我介绍,你就一股脑的把自己做的社团、实习一吐为快,也不管是不是跟四大是否相关,是不是面试官想听的。

因为第1和第2点,导致面试过程中的很大的挑战就是如果将自己与这个职位相关的优势有效的展现。这里我不是让大家去伪装,而是至少你有的相关的能力素质,你得有能力让面试官看到。


那么面对淘汰率最高的面试问题,你应该怎么做呢?

下面我就从自我介绍、三大问,以及行为面试入手,教你在30分钟内,俘获面试官的心!

(1)自我介绍

一、为什么要做自我介绍

通常说来,大大小小的面试,尤其是针对基础岗位,都会被问到这个问题,甚至有些面试技术还有些生硬的面试官,屁股还没坐稳,就把这个问题抛给应聘人员了,那么作为求职者,要首先明白,面试官为什么要让你做自我介绍?简单说来,包括以下几个原因:

面试官的技巧还不是很娴熟,使用面试的惯常流程;

通过自我介绍,判断求职者的基本素质(比如口头语言表达能力、逻辑能力等);

通过自我介绍,找到简历上缺失的或者不一致的细节,后续追问;

通过自我介绍,建立对应聘者的立体、整体的初步印象和概念。

简言之,自我介绍的意义和价值就在于,通过简短的口头语言陈述,让面试官初步了解你是一个什么样的面试候选人。

二、如何做好自我介绍

1、先说核心内容:

前面已经介绍了这一问题的考察点,那么接下来就对症下药,做一个高质量的自我介绍,给整场面试开一个好头。自我介绍过程就是人岗匹配度的核查与确认

在做介绍的过程中,首要原则,多介绍以往工作经验中跟当前应聘岗位有交集的地方,而且尽可能描述到细节,切勿顾左右而言他。

2、再说说辅助内容:

上述内容针对的是自我介绍的核心内容,但自我介绍的内容不仅仅是这些,还需要有一些其他的内容作为辅助,才显得更加自然和饱满,简言之,一篇完成的自我介绍要涵盖一下内容:

自我基本情况、以往工作经验与应聘岗位链接、个人的职业发展设想、对应聘企业的个人认同感,至于个人的兴趣爱好之类的,可以简单带过即可,上述的五个简单部分,2、3、4为住,前后两部分为辅助,再加上一些简单的寒暄的话语即可。

3、还有几个误区,需要大家绕开:

**自我介绍不是检查背诵能力,切勿千篇一律。**有的人准备一套说辞,背的滚瓜烂熟,见谁都是这一套,这样是不稳妥的,要把自己的情况跟企业的职位做链接,这样方才更加吸引面试官;

做自我介绍的时候卡壳了,怎么办?不要紧张的手足无措,可以坦然地笑笑,跟面试官说,不好意思,我有点紧张,然后继续就好了;

做自我介绍的时候,两眼直勾勾看桌子或者天花板,没有跟面试官的眼神接触。如果有好几个面试官,不要盯着一个人,都扫几眼;

做自我介绍的时候,不要做小动作,落落大方,不要抖腿,掰手指头等等;

注意跟简历内容相一致,不要出现信息不对称。

三、简单粗暴地给个模板

不给模板的干货都是伪干货,上面七七八八说了这么多,给个范本仅供参考:

“面试官您好,非常荣幸参与贵公司**职位的应聘,下面我简单介绍一下我的个人情况,基本信息之类的简历上都有,就不再重复,

首先介绍一下之前的工作经验……(挑一些跟应聘岗位有链接的内容说,如果有工作荣誉,千万不要漏掉)……,

之所以离开上一家公司是出于……考虑(离职理由要正当,尽可能从职业发展的角度出发)……

通过渠道关注到贵公司岗位的招聘信息,该职位跟我未来的职业发展相对契合,而且贵公司的业务(或者企业实力、行业口碑、企业文化等)对我都非常有吸引力,非常渴望能够进入贵公司发展……

我个人的基本情况是(受教育情况、婚育、住所、家庭简单情况),闲暇之余,我一般会做些**事情(有意义的)……

或许在所有的求职者当中,我不是最优秀的,但如果贵公司能够给我这个工作机会,我有信心,也有决心做好这份工作,以上是我的个人基本情况,希望今天自己面试有好的表现,未来有幸与诸位面试官共事,也预祝各位度过美好的一天。”

(2)面试注意细节

编程面试中我们应该考察面试者的什么能力呢?

编程面试主要测试面试者的如下几点能力和品质:解决复杂问题的能力,沟通能力,编程能力,调试能力,测试能力,知识储备等。除此之外,面试者的态度,习惯等也在考察范围之内。

**解决问题:**解决问题的能力包括是否能把复杂问题简单化,比如把一个大的问题分解成若干个小的问题。面对复杂问题的时候,面试者能否先想出一个简单的解法而非最优的解法。在工作中,我们经常会遇到复杂的项目和问题,需要工程师把问题分解,先想出一个方案可以快速满足需求。

**沟通能力:**沟通能力十分重要。我相信很多人都经历过因为沟通中出现的问题导致项目进展不顺利或者做了无用的努力。在系统设计和行为面试两轮会对面试者的沟通能力有更全面的评估,代码轮更多的是考察面试者解释思路的能力。

**编程能力:**这个涉及的范围就非常广泛了:代码的正确性,结构是否清晰,设计是否合理,编程习惯是否良好,代码是否易读,速度是否快。对于代码的要求和在平时工作当中是一样的,并不会因为是在面试而降低要求。

**调试能力:**我很少见到有人在面试的时候能把代码一次写对,编译和运行的过程当中总会有错误。我们需要每一位工程师都有能快速找出代码问题的能力。

**测试能力:**这里最重要的一点是能否找出所有的edge case以提高测试的覆盖率。我们每天在做代码审查的时候会尽量考虑到所有可能的情况。然而现实中,大部分的edge case都是由代码编写者发现并处理。所以写好测试的能力是十分重要的。

什么样的题目算是一个好的面试题?

一个好的面试题应该能够考察面试者以上所有的能力。

首先,一道题目不能太过直接简单。简单的题目既不能测试出面试者的能力,又不能拉开优秀和普通工程师的距离。

其次,问题应该具有延展性。有些面试者会比其它人更快的做出题目。这个时候如果重新问一道全新的题需要花时间解释。然而在已经完成的题目上做延伸就不会有这样的问题。 比如可以禁止一些操作,或者对复杂性提出更高的要求。更难的问题可以帮你找出真正优秀的工程师。

第三,题目可以具有一些不确定性。比如在解释题目的时候漏掉一些信息。举个例子,输入integer的范围和正负性。这种方式可以帮助你考察面试者思考问题是不是全面(测试能力),以及是否有良好的沟通能力。

第四,要避免智力题和脑筋急转弯。有些问题太过于依赖面试者的智力表现。举个例子,25匹马赛跑,最少几次找出前3名。不推荐这类问题有几个原因:1. 通过智力题目选出来的工程师不一定能写出优秀的代码。上文中的提到的绝大部分能力都无法考察。2. 尤里卡时刻依赖灵光一现。面试的时候有没有尤里卡时刻有一定的运气成分。一个优秀的工程师很有可能因为客观的原因没有想到答案而被淘汰。

第五,请时不时的去网上搜索一下贵公司的面经,看看自己的题目有没有被泄露。如果被泄露,为了公平起见,请及时更换题目。

如何把握好面试的节奏?

如果面试是一个小时的话,我一般这么分割时间:

0-5分钟:问面试者是不是需要喝水上卫生间。简单的互相介绍一下,问问面试者之前的经历。从面试者熟悉的内容开始有助于缓解面试者紧张的情绪。

5-55分钟:做题。这个时候你需要尽量收集面试者的信息。所以如果面试者卡在某个具体的问题上太久,你可以适当地给一些提示,如果在一个问题上花费太多的时间,你就没有机会考察他/她其它方面的能力了。

55-60分钟:回答面试者的问题。这个环节有两个事情需要做:第一是推销你的公司,第二是从其他方面了解面试者。面试者的问题很多时候都反映出了工作中哪些地方对他/她重要。比如公司文化,工作时长等。

如果是第一轮电面,我会多花5分钟在面试者的behavior上,以确定面试者在文化和背景上是否适合我们公司。

如果面试是45分钟,我会把中间编程的时间缩短,前后的十分钟保持不变。因为两部分对面试十分重要,不能缩的更短了。

要注意面试者的哪些错误?

有一些常见的错误是面试者的通病,需要在面试反馈中记下来:

在没弄清楚题目之前就开始写代码。比如题目的输入是一个数字,面试者有可能假设这个数字是整数而直接写代码。
没有想清楚思路就开始写代码。经常有面试者写着写着发现思路不对,于是删了代码重写。这个时候时间已经过了一半。大部分情况下,做开发之前都要弄清楚需求,不然很有可能会做无用功。以上两个问题都可以反映出面试者是不是有犯这类问题的潜质。
代码没有处理一些明显的edge case。如果一个人的代码只能在80%的情况下运行,环境稍微特殊一点就会crush,那么你以后审核他的代码必须要小心翼翼,这样的人招到组里来大家都很累。
写代码很慢。大部分公司都需要程序员可以高效的开发。这里就不赘述了。
代码不规范。写出清晰漂亮的代码应该是深深刻在每个程序员骨子里的东西。面试的时候虽然时间紧张,但是有些时候一个空格,一个换行都应该是习惯性的肌肉记忆。如果代码写的很乱一定程度上反映出了面试者平时的编程的习惯。
基础知识缺乏。从简单的时间和空间复杂性到常用的数据结构,都应该是各个层次的面试者要熟练掌握的。
沟通能力较差。无法清晰的解释自己的思路或者代码。这个在工作沟通当中效率会受到影响,招进来需要进一步培训。

如何写好面试反馈?

Facebook最常用的是“加减号”记录法:按时间顺序记录面试者的data points,用加减号区分加分项和减分项。比如:
+清晰的描述了解题思路,并确认了输入数值的范围。

-没有处理输入值是0的情况

这样时候我们可以清晰明了的看出面试者的优缺点。

要有一个概括总结。上一条提到我们提到按时间顺序记录面试的过程,但是这个过程往往很长,我们还需写出简单干练的总结,概括出面试者在各项能力上的表现。这样别人在看你写的反馈的时候就不需要通读全文了。
备份面试者的代码。如果是在线面试,只需要把代码复制一下。如果是在白板上,那么请照相,然后贴在反馈里。
为了提高效率,我会准备一个反馈模板。填空要比每次重头写更有效率。也可以防止漏掉重要的信息和考察点。

如何决定是不是给offer?

无论是否给offer,很多时候都是一个艰难的决定。当两难的时候,我通常问自己的问题是:我愿不愿意在未来的几年里,和这个人坐在一起,共同开发一个项目? 这个通常是一个很实用的标准。如果遇到十分极端的情况,你在问完自己这个问题以后还是不确定,那么就不要给offer。一个好的hire一定是让你和他/她一起工作你会很兴奋。如果做不到的话,宁缺毋滥。

面试官要注意什么?

面试是双向的。面试不仅是我们考察面试者是否合格,也同样是面试者考察这个公司或者这个组是否值得加入。我们经常看到因面试体验很差在网上吐槽的事情。这对公司来说是个极其负面的宣传。所以请在面试的时候尊重面试者,无论他看起来是否符合你的招聘标准。通常Facebook要求面试官做到一下几点:

关闭手机的消息提醒。频繁的震动会给面试者带来不必要的压力,也会打断面试者的思路。
用电脑之前告诉面试者你是在记笔记,而不是在处理自己的事情。
态度要友善,专业。

最后

按照国际惯例,给大家分享一套十分好用的Android进阶资料:《全网最全Android开发笔记》。

整个笔记一共8大模块、729个知识点,3382页,66万字,可以说覆盖了当下Android开发最前沿的技术点,和阿里、腾讯、字节等等大厂面试看重的技术。

图片

图片

因为所包含的内容足够多,所以,这份笔记不仅仅可以用来当学习资料,还可以当工具书用。

如果你需要了解某个知识点,不管是Shift+F 搜索,还是按目录进行检索,都能用最快的速度找到你要的内容。

相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照整个知识体系编排的。

详细文档可以点我下载,记得点赞哦~

(一)架构师必备Java基础

1、深入理解Java泛型

2、注解深入浅出

3、并发编程

4、数据传输与序列化

5、Java虚拟机原理

6、高效IO

……

图片

(二)设计思想解读开源框架

1、热修复设计

2、插件化框架设计

3、组件化框架设计

4、图片加载框架

5、网络访问框架设计

6、RXJava响应式编程框架设计

……

图片

(三)360°全方位性能优化

1、设计思想与代码质量优化

2、程序性能优化

  • 启动速度与执行效率优化
  • 布局检测与优化
  • 内存优化
  • 耗电优化
  • 网络传输与数据储存优化
  • APK大小优化

3、开发效率优化

  • 分布式版本控制系统Git
  • 自动化构建系统Gradle

……

图片

(四)Android框架体系架构

1、高级UI晋升

2、Android内核组件

3、大型项目必备IPC

4、数据持久与序列化

5、Framework内核解析

……

图片

(五)NDK模块开发

1、NDK开发之C/C++入门

2、JNI模块开发

3、Linux编程

4、底层图片处理

5、音视频开发

6、机器学习

……

图片

(六)Flutter学习进阶

1、Flutter跨平台开发概述

2、Windows中Flutter开发环境搭建

3、编写你的第一个Flutter APP

4、Flutter Dart语言系统入门

……

图片

(七)微信小程序开发

1、小程序概述及入门

2、小程序UI开发

3、API操作

4、购物商场项目实战

……

图片

(八)kotlin从入门到精通

1、准备开始

2、基础

3、类和对象

4、函数和lambda表达式

5、其他

……

图片

好啦,这份资料就给大家介绍到这了,*有需要详细文档的小伙伴可以点我下载~~~~*

(七)微信小程序开发

1、小程序概述及入门

2、小程序UI开发

3、API操作

4、购物商场项目实战

……

[外链图片转存中…(img-U2XXXGmh-1624348592335)]

(八)kotlin从入门到精通

1、准备开始

2、基础

3、类和对象

4、函数和lambda表达式

5、其他

……

[外链图片转存中…(img-e4Z6lfdM-1624348592336)]

好啦,这份资料就给大家介绍到这了,*有需要详细文档的小伙伴可以点我下载~~~~*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值