记录思考

2019.04 面试官的思考

参加工作以来,就开始不停的面试,作为面试者,我一般很少做准备,特别是有了工作经验之后。因为我总觉得面试前刷题,看面试题其实挺累的。当然,有时候还是会简单的搜索一下,大概的看看。然后基本上就是面试的时候,人家问什么我回答什么,实在不会的就直接承认不会。

最近这一两年,开始我面试别人了。对,也就是这一两年,之前几家公司我几乎很少作为面试官。刚开始的时候,我也是没有什么准备,人来了,我就照着简历问,他写啥我就问啥,我想到啥我就问啥。不过这样子面试一段时间后,我发现一个问题,就是我很难去比较出我面试过的人,他们的能力水平是怎么样的,因为每个人面对的问题是不一样的,就好比大家试卷不一样,怎么比成绩高低?

经过这么些面试,我也总结了一下,大致划定了一个圈子,一个范围。我问的问题也尽量简单,基础。我想考察的还是基础,各种框架,各种架构,说的天花乱坠的没有用,还是一些基础的知识点理解有多少,就说明你花在这上面的心思有多少。

Java

Java 是必须考核的,也是我主要考核的。几种基础数据类型,8种,很简单,但是有一些工作了好多年的人,不能立马回答出来。不能立马回答也可以,一个一个数出来。看数的顺序,我知道他是怎么记忆的,是不是有条理,4种整型是一起数出来,2种浮点是一起数出来的,外加字符类型和布尔类型,这样就齐了。如果你非要和我犟说高级工程师不一定非得记住几种基础数据类型也行,说不出来不妨碍人家是高级工程师,架构师,那也可以,反正在我这就这样。

然后考一下软引用,弱引用,顺便说到内存泄漏,然后就是 OOM,然后问问平时是怎么排查内存泄漏的。至于内存回收机制我一般很少去考,我觉得目前的移动开发一般不大需要。

然后会考一下 final 的一些用法。比如你设计的类不希望被别人继承怎么办?这个问题很直白吧,相等于考 final 修饰类名是什么效果吧。然后再考你设计的类,不想被别人实例化,你怎么办?这个问题也很直白吧,相当于考私有构造方法了。而且我一般会让面试者手写一个单例。单例中一个很重要的要素就是私有构造方法。如果这两个问题不能很轻松的回答的话,我觉得不要说什么架构,框架了。你对于怎么保护你的框架都没有足够的了解,你怎么设计框架,如果你这样设计的框架能用,那也是别人小心使用。Java 是面向对象语言,面向对象其中一个特性是封装,封装就是把一些细节装在一个小黑盒子里,别人看不见。

hashcode 和 equals 方法,我也会考,这样能顺便问到 HashMap 。hashcode 和 equals 虽然平时很少用到,但是不会不好,因为不会的话,一用准错。肯定得出 bug。

浅克隆和深克隆我也会问题,但是不会没有关系,因为基本上很少用到。

Android

Android 我一般不大问,简单问几个问题,基本上就是 Android 的基础问题了。后续我会想想,细化几个 Android 的题目。

计算机网络

计算机网络我肯定会问的,我觉得对于一个大前端类的工程师,计算机网络必须懂。GET 和 POST 的区别,大部分人的回答还是停留在我十前年那会的答案上,当然我是可以接受的。主要有几个知识点需要更新,一个是长度的问题,一个安全的问题。这种问题一问,看他回答的情况,就很容易知道他对计算机网络的了解情况了。然后就是 http 和 https 的区别。了解一下他对 https 有多少了解。大致能说一些上来就可以。然后就是 tcp 和 udp ,这基本上是送分题。

数据库

数据库我也会考,现在我是出一个笔试题。假设目前已存在患者表一张。然后需要实现患者分组展示的功能,你会怎么设计表。只需要能答出新增两张表,分组表一张,分组-患者关系表一张就可以了。如果是回答新增分组表一张,患者表里增加分组 id 一列,这样也行,但是我会增加条件,一个患者可以出现在多个分组里,那么还是需要新增分组-患者关系表一张。如果能很轻松的回答这个问题的话,那么作为一个移动端的开发,数据库的知识基本上差不多了,除非碰见非常特别的需求了。

- EOF -

本文链接 https://spacepage.top/thinking/2019.04.17-interviewer-thinking.html,欢迎转载,转载请注明出处。