本文主要介绍校招,疫情原因今年的春招持续的时间拉长了,截止到目前我已经面试超过一百位应届生,批改过超过150份笔试的试卷,因为通过率较低,我也被同事吐槽许多次让我“手下留情”。今天我就想聊一聊,我自己的面试标准。这不是一篇什么攻略文,旨在抛砖引玉,大家一起探讨如何面试更有效率。
需要写在前面的是,“平等“和”高效”一直都是互斥的。信息从一个人传递到另一个人那里,由于表达能力和接收能力的限制,必然产生信息熵,所以花一天的时间好好了解一个人的技术实力和学习能力,自然要比一场半小时的面试要更加的全面。但很可惜的是,现实中没有那么长的时间,所以一个面试官最基本的任务,就是引导面试者在最有限的时间里,最大化展示出自己的能力。
最近看到很多技术大牛放出来自己的简历,但就我个人而言,感觉参考意义真的不大——这些大牛不管简历写成啥样,模板用啥,哪怕是TXT格式不做排版,就光看项目内容和技术深度就足够拿到offer了,但是正常人来说并没有这种“底蕴”,看完可能只会觉得“握草牛逼啊”,然后自己写简历时候仍然一脸懵逼。
其实应届生做简历真没那么复杂,能够突出的无非是:
GPA、算法奖项名次、奖学金之类的信息等。
实习经历:在哪里,做了什么,取得了什么成绩,解决了什么问题。有量化标准更好,比如说“降低了10%内存占用”这种。
个人项目、Github等
很多人好奇,笔试不是都固定答案吗?那有啥可原则不原则的?
是的,有些题是有固定答案,但也有一些问题答案相对开放。比如说这样一个常见的#### 笔试题
简述Activity(或Service,ContentProvider)的使用。
像这样的相对开放的问题,基本上是懂多少答多深,对于这种问题我个人的评分标准是这样的:
基本用法(Manifest配置、生命周期简述、重要API等)介绍没有错的话,至少给到总分85%
特别有介绍到源码层面,或者运行机制之类的,会给到满分。
如果答案中有错误的地方,会反而酌情扣分,所以基本上靠量取胜反而有更大风险,因为错误的内容也可能更多。
这些标准中可能争议比较大的就是“答错内容扣分”这一点,但是我仍然认为这是必要的。比如对于Service,有人会写“由于也是运行在主线程,不能做任何耗时操作”,我认为这是需要扣分的,原因如下:
“Service运行在主线程”是论据,“不能做任何耗时操作”是论点,但中间省略了论证过程,论据怎么推导出论点的?我感觉这是逻辑能力较差的一种表现。
默认运行在应用进程的Service,可不可以指定Service的process将它定义在子进程里?Service在子进程里做耗时操作比如网络请求之类的,为何不可以呢?如果可以,为何要说“不能做任何耗时操作”呢?我个人会感觉这个面试者实际并没有使用过,只是懂得书上的理论知识。
当然,只写一些基本用法拿到85%分的人,可能也有一些逻辑短板,也有一些技术能力不足,但像我上文说的,效率与公正无法兼得,并且隐藏自己短板也算是一种能力。
在面试的过程中,我印象最深的几点感受一定要告知大家:
1、回答问题不要过于着急,一定要耐心等待面试官把问题说完
2、回答问题要有逻辑、干练简洁
3、如果面试官打断你说话,此时一定要谨慎回答,因为很有可能你回答过于繁琐且他对你当下的回答不满意
4、一个问题不要纠结很久,尤其是让面试官感受到你在敲键盘.....
5、不会的面试题必须干脆利落的回答不会
6、面试的时间最好控制在 30 ~ 40 分钟左右,这样互相之间的体验不会很差
7、面试是一个挖掘面试者能力和潜力的过程
8、面试官不是全能的,面试一定是一个互相学习的过程
9、一定要提前准备好自己想要问的问题,最致命的是别人把你安排的明明白白结果你对别人一无所知.....
关于第 2 点还是要说明一下,很多面试者回答问题没有逻辑性,在回答之前可以先思考一下,然后告诉面试官将从 n 个方面进行讲解,首先第 1 个方面是...,其次第 2 个方面是...
友情提示:面试的时候发现大部分的面试者普遍存在 1 和 2 两个问题。如果你的回答没有逻辑还繁琐且没有命中要点,通常面试官对你的印象会非常差。相反,如果你回答问题过于简洁,通常情况下面试官会觉得你没 Get 到他的问题点(当然会怀疑自己的表述有没有问题),一般都会追加更详细的问题描述,毕竟这是一个挖掘的过程。
一般我在面试开始前,会根据应聘者的简历提前准备 8 道左右的面试题(在面试的过程中可能会有调整)。
接下来我会重点讲解一些面试题,面试题解答思路(可从答案解析PDF中找到答案),供大家参考。
答案解析
2020年Android开发最新全套面试题答案解析
答案解析
2020年Android开发最新全套面试题答案解析
答案解析
2020年Android开发最新全套面试题答案解析
from-java-to-kotlin
kotlin_tips
从原理分析Kotlin的延迟初始化: lateinit var和by lazy
使用Kotlin Reified 让泛型更简单安全
Kotlin里的Extension Functions实现原理分析
Kotlin系列之顶层函数和属性
Kotlin 兼容 Java 遇到的最大的 “坑”
Kotlin 的协程用力瞥一眼
Kotlin 协程「挂起」的本质
到底什么是「非阻塞式」挂起?协程真的更轻量级吗?
资源混淆是如何影响到Kotlin协程的
Kotlin Coroutines(协程) 完全解析
答案解析
Flutter原理与实践
揭秘Flutter Hot Reload(原理篇)
Flutter 动态化探索
Flutter如何和Native通信-Android视角
深入理解Flutter Platform Channel
Flutter Engine 编译指北
Flutter Engine 线程模型
深入理解Flutter多线程
Flutter状态管理 - 初探与总结
Flutter | 状态管理指南篇——Provider
深入理解Flutter应用启动
Flutter渲染机制—UI线程
Flutter渲染机制—GPU线程
深入理解Flutter应用启动
深入理解setState更新机制
深入理解Flutter消息机制
深入理解Flutter动画原理
Dart虚拟机运行原理
源码解读Flutter tools机制
源码解读Flutter run机制
答案解析
2020年Android开发最新全套面试题答案解析
题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多程序员朋友无法获得正确的资料得到学习提升,故此将并将重要的Android进阶资料包括自定义view、性能优化、MVC与MVP与MVVM三大框架的区别、NDK技术、阿里面试题精编汇总、常见源码分析等录播视频免费分享出来。
【Android学习PDF+学习视频+面试文档+知识点笔记】
希望我能够用我的力量帮助更多迷茫、困惑的朋友们,帮助大家在IT道路上学习和发展~