我面试测试开发岗位,都失败了,找了快 3 个月了吧。试过阿里的好几个部门,基本 2 面就 OVER 了,百度的还好,能挺进第三面,不过还是挂了,腾讯最惨,第一面就 O 了,字节也是第一面就 O 了,哎,挺难的。每次失败都在总结经验。最近一次面试的是阿里的第二面,说起这面,挺惨的,挂的自己都觉得不应该。
这次阿里的第二面尽然是代码题,这是第一次遇到的,之前的所有的面试都是在最后的时间出代码题的,这次尽然单独拎出来,直接撸代码。
题目:给定一个时间,如 20200601,算出这个时间是今年的第几天。以下开始我的表演!!!!!
看到这道题的时候,我脑海了出现了一句:糟了,python 的时间模块不熟悉啊,字符串时间跟时间戳的转化不知道用啥函数啊,未战先怯了,硬着头皮,皮拉皮拉敲了的好几个函数,判断闰年平年,判定格式,敲了一会儿,面试官看了,说了一句:被你这么敲,太久了,python 不是有函数功能吗,你可以用 python 的功能函数做出来。我回了一句:嗯,应该有的。我把之气的函数注释了,开始沉思了下,确定了思路,开始撸码。将大体思路写下来,注释下下来,(截区前面 4 个字符,算出 20200101 的时间戳,再算出当天的时间戳,再用当前的时间戳 - 当年 1 月 1 号的时间戳的差除以 24 小时的秒数,得出时间),嗯这个思路我觉得可行,就编写对应的函数了:如下
# -*- coding: utf-8 -*-
import datetime
# 输出函数
def get_year_count(temp_day):
_localtime = formart_str(temp_day)
# 获取当年1月 1号的时间戳
year_date = temp_day[:4] + "-01-01 00:00:00"
day_first = formart_str(year_date)
print(day_first)
# 获取天数
print(_localtime - day_first)
day_counts = (_localtime - day_first) / 3600 / 24 + 1
return day_counts
# 获取输入日期的时间戳
def formart_str(tmp_day):
try:
# 算出当前时间的时间戳
timestamp = datetime.datetime.strptime(tmp_day, '%Y-%m-%d %H:%M:%S')
timestamp = datetime.datetime.timestamp(timestamp)
return timestamp
except Exception as e:
return e
这个是我面试后写的,目前还是有问题的,不知你们有么有看出来。。。。。。。。。。。
开始的时候我的代码是有问题的,第一处:formart_str 的算出当前的时间戳使用的函数有问题的,写错了,当时确实不知道函数之间的转换,但是现在知道了,也是这次面试让我熟悉了 datetime 模块的 3 个常用函数strptime, strftime,timestamp。第二处:get_year_count 函数算出结果没有 +1,day_counts 计算的差值()【(_localtime - day_first) / 3600 / 24 + 1 ,这部分少了()】。
面试官问:你现在对你写的函数测试下。
我想现在开始考察测试能力。我写了个 main 函数,写测试用例:以入口进行测试。
面后,才发现面试官是想考察我的功能测试能力,审查代码能力以及单元测试的能力啊啊啊啊。很可惜,这次我确实搞砸了,临时断片了。就写了等价类划分:
输入正常的值如 get_year_count(“20200205”),判断输出值是否正确
输入异常值:空,null,” 20200266“,,判断输出值是否正确
面试官看了我写的测试点后,说:你现在把的代码 copy 到你的编辑器,看有没有问题。
我就 copy 过去了,运行了下,数据类型错误,就说了类型的错误。哈确实不应该,若当时我能明确指出我当前的代码问题就好了。比如:
至于单元测试,从我这块的代码中,没有条件,没有判定,只有语句,不过有个 try-----except。还有一个点是在我面试时遇到的,若碰到不熟悉的函数我觉得完全可以想网上查下,当然需先询问下面试官下意见是否可以这么做先。
面试真不容易啊,跟考试很像,答卷 100,看你能拿多少分,自我评分及格吧,有很大的进步空间,很遗憾的说我尽然败在这简单题目上,有点可惜了。当然也积累了我的面试经验,加油!!!!!!继续找,加油!!!一道题可以看出一个测试的水平,字如其人,我们时码如其人!