最近面试的人很多,慢慢的就汇总了一些面试题,此处列一点典型的题吧。
1.白板测试
白板测试,顾名思义,就是让人在白板上进行一些答题,程序猿的话当然是在白板上写代码了。现在的IDE很智能,网络也很发达,我见过有人就学了3天Java,然后靠着百度,硬是写了一个手机APP,然后面试的时候就各种鼓吹自己有多厉害,这就是传说中的“面精”吧,这种“面精”在白板测试下只能原形毕露。
此处个人推荐两道白板测试题,白板测试题,不能太复杂,但是又能考验面试者水准。白板测试还能通过一个人的排版以及函数名的命名规则看出一个人写代码的素养。针对这两道题面试官如果能给出让人信服的答案,能够从考察点给面试者解答,面试官的水准就不言而喻了。
a.定义个函数,输入为三个数,输出为三者之间的中数。
说明:此题看似简单,但是考起来还是挺费劲的,我见过面试者写着写着手就开始抖了,这题主要考察面试者的软件思想。此题你可以直接算中值,但是这样会各种判断一大堆,一页纸都不够面试者写的,这题可以通过先求最小值,再求最大值,最后排除这2个就是中间值。
补充说明:测试者有没有考虑相等的情况,也是考察面试者对异常情况的处理是否得到。临界值的处理是最容易出bug的地方。
b.找出一个长度为10的数组中的第7大的数。
说明:拿到题之后,如果有咨询相等的情况,那可以加分。此题和上题比,就没那么巧,用冒泡算法排序完,就只剩下取值了。
2.print “hello world”是如何在屏幕上显示字符出来的?
此题很有意思,不考察程序猿的编代码能力,反而去考察他的条理性以及分析问题的能力。 我们不写内核不用考虑那么细,此题只需要面试者能够从字符串到0和1,然后再通过操作系统解析,再到IO输出,静态变量,ASII码,显卡驱动等等就可以了。我们找的程序猿不应该是只关心拼轮子的那些食嗟来之食的人,我们要找的应该是那些愿意主动去思考问题的人,能够从系统级去思考问题,他写出来的代码bug肯定要少很多的,代码的执行效率也会高很多。
3.分别给出Bool,int,float与零值的比较的代码
那些浮躁的人,那道题估计就开始口若悬河了吧,其实这里面最重要的就是float和0的比较,如果你写成if(float==0.0)这样的人还是不要了吧。这题适合当白板测试,但是考的东西比较单一,就面试的时候问问就可以了。
4.计算1+2+3+…+n的值
这题列出来,估计你会说我傻,这东西咋能体现水平,其实不然,那些写代码到麻木的人,拿到这题,肯定给你来个for循环,为了自己体现自己水平有多牛,还来个n值是否为1的判断,其实这题真的考察的不是代码水平,而是考察的是不是把高中的求和公式忘了,一个非常简单的数学求和公式,高中的时候估计都做的不想在做的题。如果一个程序员连一些基本数学公式都会忘,我觉得真的可以称之为程序猿了。
5.int型变量在计算机里占多少位
这题一出,估计有人会犹豫一下,int在程序员眼中太常见了,几乎每天都看到,那到底占多少位,有人会和你说和CPU相关,有些人会说和操作系统相关,其实int只是语言定义里面的一个关键字,只对compiler可见,complier说它是几位就是几位,和os/cpu都没关系。具体参考这个文章快车直达关于int型变量的文章
6.计算1949年到当前时间间隔多少ms
此题如果和他说苹果手机把时间调成1970年之前变砖头的事情他可能知道一点,直接这样问估计要蒙不少人。但是需要的就是这样的效果。
以上都是个人的言论,如果觉得有什么不妥的可以在公众号给我留言
《程序猿从入门到放弃》