作者简介: 英正明, 腾讯专家工程师。
在鹅厂,面试总是必不可少的。
在面试的时候,我常常用下面的方法考查代码和算法的能力。
发送面试通知时,会通知面试者会需要在白纸上手写或者笔记本上不借助IDE编写代码。当对面试者能力一无所知的时候,我最常问的第一个问题是:如何计算两个日期(年月日)之间相差多少天,需要在纸上或者文本编辑器上编写代码。允许面试者使用任何他最擅长的语言。
这个问题问完,有一些想半天还没动笔的,我会把问题简化为如何计算同一年两个日期(月日)之间相差多少天。减分。
有些人会问年的范围。加分。并限定从1970年开始。
有些会问结果是否存在负数。加分。
然后开始写函数声明,函数声明都写不出来的,直接pass。有些会用个结构体表示日期,有些直接在函数声明中使用整数分别表示年月日,都一样。
写实现的时候就五花八门了。
不能写出使用数组表示每月天数的,减分。
能把相差多少天首先抽象成计算某一天(比如1970.1.1)开始的天数,然后两个数字相减。大加分。
有些没有使用上面的方法,而是使用天数直接相减。只要能正确实现,大加分。
能把闰年函数抽象出来的,加分。我不要求写出闰年函数实现,只要能抽象,我会告诉面试者不需要写这个函数实现。
实现写完,看函数的实现,如果整体逻辑混乱的(基本都是面试者尝试直接通过日期加减获得间隔的天数),大减分。
如果整体逻辑清楚,但是有小问题的(例如月份下标出错,有泄漏的),小减分。
另外,整个面试过程中,如果碰到不清晰的,能主动及时沟通的,加分。
然后根据这个题目的答题情况,选择后面的题目。
相关推荐