
面试
我目前正在进行现场
面试,在这个
面试中,候选人有多种选择。他们既可以自带
电脑前来,也可以使用
公司提供的
电脑。而且,在
面试过程中,允许他们使用
搜索引擎,甚至可以向
ChatGPT寻求帮助。当然了,整个过程中,他们
电脑的
屏幕是要投影到会议室的大
屏幕上的。我为这次
面试准备的
面试题是一个Git repo,这个repo里包含一个简单的Web服务,在这个服务里我预先设置了一些陷阱。候选人首先要自己把这个repo克隆下来,然后仔细阅读其中的ReadMe文件,接着使用docker compose将一个模拟环境运行起来,调试代码中存在的问题,并且依据要求添加一些新功能。这个题目主要还是为了考察算法和数据结构,有时候也会涉及到面向对象设计(OOD)方面的内容。我特意将题目设计成包含多个方向的,并不要求候选人把所有问题都解答出来,通常我会从中随机挑选一两道题来提问。在这个
面试过程中,能够获取到比Le
etcode算法题更多的信息。例如,从原则上来说,
面试并不要求候选人熟练掌握git、docker等工具,但是如果能够在现场通过搜索快速学会使用这些工具,这也算是一种能力。当然,
面试题的核心部分仍然是以算法和数据结构为主的,比如解析一个日志文件,对其中的数据进行统计,并且生成一些指标。在这个过程中就能够考察基本的数据结构,以及如何运用sliding window来实现指标统计。有些声称自己精通
Python的候选人,却连如何读取文件都不知道。还有些候选人,一上来就开始写正则表达式,都不先查看一下测试数据的结构。能力较差的候选人,连
Python的安装都要询问
ChatGPT;而能力较强的候选人,带着自己配置好的Vim来
面试,这个Vim各种功能完备,甚至比VS Code还要强大。有一个候选人在输入GitHub密码时总是出错,我就建议他尝试用SSH方式来克隆。他之前没有配置SSH key,于是他在网上搜索了相关资料,然后进行配置,最终成功克隆下来了。从这个过程中,我能判断出这个候选人似乎从来没有使用过SSH方式克隆,这是一个减分项;但他又能够迅速根据网上的教程完成配置,这又表明他具备较强的解决问题的能力,这可以算是一个加分项。另外有一个候选人没有带
电脑,使用了
公司的
Windows电脑,在他启动docker容器之后,怎么也打不开里面运行的Web
服务器,不过他能够当场进行调试,找出在Hyper - V上运行的Docker虚拟机的配置问题,并且将问题解决。由此可以看出他在这方面有着丰富的经验。