人生第一回面试献给滴滴了,总的来说滴滴还是很不错的,工作环境,待遇以及员工都很nice。
一面
我预约的中午1点面试,结果对公交估算失误来早了,保安(有点帅)让我在前台预约系统登记一下,结果系统直接把信息发给面试官了,导致面试官姐姐大概急匆匆吃完饭就下来带我走了,12点45左右就开始了面试,还是很不好意思的,以后还是尽量准时比较好,过早过晚都有些不礼貌。
一面的姐姐感觉人很好,说话轻声细语,给人一种亲切感,舒缓了我不少压力。
面试官先让我做自我介绍,然后问了为什么会投测试开发岗位,接着让我挑两个简历上的项目详细介绍一下,我就开启了话唠模式。
她会边听介绍边穿插性地问几个感兴趣的问题,以及其中涉及的一些技术问题。
我介绍的第一个项目是实验室的课题,她针对性地问了机器学习的聚类算法以及概率论的马尔科夫链算法。
我介绍的第二个项目是Windows下的多线程文件搜索工具,她针对性地问了线程的管理,Windows的同步与互斥机制(以及在项目中是具体怎么应用的),然后再让我讲讲我认为的项目难点和亮点。
我的体会是讲项目的时候尽量介绍你比较熟悉而又有点难度的方面,引导着面试官去关注这些你擅长的,能聊的起来的话题。
问完项目后问我熟不熟悉Linux,简单聊了几句,然后问了我Python的list和tuple的区别,以及一些库的使用。
接着开始进入手写代码阶段,求连续子数组的最大和(如 [1,-2,3,10,-4,7,2,-5]),我先把暴力解法写出来放着,然后再去想动归解法,还好倒腾出来了,我解释了动归的递推公式以及初始和最终的状态,给她看了伪代码。
接着她说考下测试方面的题,有一个函数 bool contain(string A, string B) 如果字符串B是A的子字符串则返回真,否则返回假,让我设计测试用例。
最后她问要不要试试智力题,我说好啊,有两个体积形状都一样的容器,一个装糖,一个装盐,现在用一把勺子先从糖罐中舀一勺糖到盐罐中,再从盐罐中舀一勺盐到糖罐中,最后问糖罐中的盐多还是盐罐中的糖多,结果我就脑洞大开了。
一面到这就差不多结束了,然后她问我有没有什么问题要问她的,结果聊了大概10来分钟,就让我等二面。
二面
二面的面试官是组里的老大,斯斯文文但有些严肃,给我一种大神的距离感,我就开始有些紧张了。
他说我们先做题吧,然后就又开始手写代码。题目是给定一个字符串数组,如 [grep,pip,echo,open,net,tag,pre],问能否构成一个首尾相连的环(要求数组中的所有字符串都在这个环中出现有且仅有一次),如 grep - pip - pre - echo - open - net - tag (环尾tag可以连接到环头grep)。
我想了想,最终用递归回溯法解决了这个问题,但是我想应该有更好更高效的做法,只是我没想到,数据结构与算法这块还是需要再加强。
老大先让我写了伪代码,然后给他讲解思路,思路OK后让我再把具体代码写一遍,可能是想考察我编程语言运用的是否足够熟练,以及对细节的把握能力吧。
写完代码后,他也问了我如果要我对我写的程序进行测试,大概会从几个方面考虑,会怎样来设计测试用例。
最后协商入职时间,在此,我除了表达对实验室的无限鄙视,大概也就没有什么了。