乐趣区

关于校招:我的面试经历测试开发工程师

集体背景

这篇文章谈的是我的面试经验,选取了加入的面试中比拟有代表性的一次,也是我最初抉择退出的公司。笔者是 2021 刚毕业的大学本科生,就读于上海的一所一般一本学校,学的是计算机科学与技术业余,绩点在年级 10% 左右,有过科创我的项目加入大创赛。交待这些背景次要是让大家理解我集体的一个状况,以此为基准对读者有所参考。本文着重于面试经验的分享,即便不是学计算机的同学也能够大抵看懂。

因为之前因为考研调剂的一些耽误,导致我到了 4 月份才正式地开始筹备春招。这其实曾经算是危险地工夫了,因为大多数公司在 4 月底就会敞开春招通道,剩下的公司品质也可想而知。在清明后,我集中温习了一周左右,之后就开始陆续加入面试,到劳动节前正式敲定了最初的去向。

后期筹备

因为笔者原筹备考研后做机器学习相干的工作,但无奈能力无限没有考上,之前对于软件开发技术的 JAVA 这块接触地很少,再加上工夫很紧,所以最终抉择了去做测试开发工程师。因为平时 PythonC++用得比拟多,语法方面没什么大问题。

我次要是参考了牛客网上的面试教训,在应届生校招中,面试次要考查的是计算机的基础知识,就是那大四样,计算机网络 操作系统 计算机组成原理 数据结构。因为之前温习考研的时候过过一遍,所以问题不是很大,具体须要把握哪些常识能够参考面经里的面试题,将各个问题进行分类对立温习。另外就是数据库,这块不是说晓得数据库的根本语法就能够了,而是要十分细地温习。比方说 MySQL 有哪些引擎,有什么区别;索引的作用,如何进行索引优化;存储过程的概念等。这些方面都是做软件开发和测试所必须要理解的,因为当前必定要用到的。

另外就是编程方面,能够去刷一些牛客网和 LeetCode 中 EasyMiddle的题,像根底的数据结构(栈、二叉树、链表等)还有算法(动静布局、排序等)都是必须要把握的。</font>

在筹备方面倡议大家依照大厂的要求筹备,多去看大厂的面试题。尽管过程有时会比拟苦楚,他们的很多问题都问得很深。如果能把这些题都弄懂,那其余的面试就熟能生巧,还能够加强集体的自信心。

一面 直属主管面试

笔者面试的是一家做主动驾驶的公司,总部在上海。首先面的是我的直属主管。

在集体介绍后进入暖场环节,次要就是问了下简历上的我的项目经验和毕业论文的状况。我有个我的项目做的是一个舆情剖析零碎,在外面负责数据分析。但面试官在聊到这个我的项目的时候问了下其中对于爬虫实现的问题(简略来说爬虫就是把网上的信息进行自动化采集,这部分也是所有大数据相干我的项目的第一步)。她问了一个是如何更高效地爬取信息,二是如果网站有一些反爬措施会如何解决。尽管这和我做的没有交加,但平时咱们小组内也会始终交换,在一些课设问难我也会旁听,对爬虫方面有所理解,也是答复出了这两个问题。在简历上提到了的我的项目必须本人要对其有足够的理解,因为这筹备起来是最容易也最不容易丢分的环节,对于我的项目中产生的一些问题和解决办法本人也要在面试前回顾一下,最初在脑中再组织一下语言,不要本人做过的我的项目都一问三不知,这对面试官印象就不太好了。

接下来就是问技术的环节。首先问了对测试开发的了解,接下就是那大四样和数据库。她问得都是很根底的问题,但同时问得也很细。比方说从数据库索引深挖,从作用到索引优化的准则,再到对于特定例子进行索引优化,是这样写好还是那样写好,比照剖析。

而后就是手撕代码的环节。题目也不是很难,即便没学过计算机的同学也能想出解题思路。

题目第一问是有一辆车(满油)从终点开到起点会通过 n 个加油站,每个加油站都能将油箱加满,n 个加油站间的间隔形容为一个 1 *(n-1)的矩阵例如 a[3,4,6,… ,2],油箱容量为 C,问该车是否能达到起点。

这其实算是一个逻辑题,既然问的是是否能达到,那我在每个加油站都给他加满就行了,如果连这样都无奈达到起点,那必定就 Failure 了,那进一步说只须要油箱容量 C 大于矩阵中任意数就好了,也就是C >= max(a)。代码如下所示:

def bool reach(C,a):
    """
    C 油箱容量
    a 加油站间隔矩阵
    return true/false
    """
    if C >= max(a):
        return True
    else:
        return False

第二问是在能达到目的地的状况下,起码须要加多少次油。这其实也很简略,只有在达到每个加油站时判断当初的油量是否能行驶到下一个加油站就行了。因为是求最小值,那在加油时必定就要加满。代码如下所示:

# python
def int get_num(C,a):
    """
    C 油箱容量
    a 加油站间隔矩阵
    return fill_num 加油次数
    """   
    fill_num = 0    #加油次数初始为 0
    fuel_weight=C   #油量起初为满
    for i in range(len(a)-1):
        fuel_weight = fuel_weight - a[i]
        if fuel_weight < a[i+1]:
            fill_num = fill_num + 1
    return fill_num

能够看到,这两道面试题其实都不是很难,次要考查的是思维过程和写代码时的一些习惯。

接下来问了我一道智力题,它是一个优化问题。题目是 64 匹马,8 个跑道,选出其中跑的最快的 4 匹,起码须要几次。我当是答复是 Top4 的办法(每次取前 4,须要 8 +4+2+1=15 次),但其实还有很多优化空间,感兴趣的同学能够看这篇推文,还是挺有意思的。

一面也差不多完结了,最初就是聊了下公司的次要业务和测试开发负责的内容等等。面试题除了最初的智力题,其余都答复上来了,难度还算中等。

二面 技术主管面试

因为我是现场面试,个别是一个下午走完所有流程。二面是技术主管面试,看上去就是一个很厉害的工程师(起初才晓得他是输送清华的大佬)。同样,自我介绍后开始依照简历发问,他次要偏重问了下我毕业论文的状况,我的毕业论文写的是强化学习和脑机接口方面的,次要是通过强化学习办法解决脑电信号数据。之后也聊了下公司次要的业务和将来的额倒退方向。

之后就是手撕代码环节,也是一道比拟惯例的题目,题目是 大整数相减 ,应该很多面试题里都有波及。但过后可能心有点急了,有些状况没有思考到。比方说先判断两数大小啊之类的一些判断。因为是大整数,用个别的intfloat是没法存储的,须要用字符串存储。具体代码如下:

//C++
#include <iostream>
#include <algorithm>
using namespace std;

string sub(string a, string b) {
    string res = "";
    int borrow = 0;
    int i = a.size() - 1, j = b.size() - 1;
    while (i >= 0 || j >= 0) {int x = i >= 0 ? a[i] - '0' : 0;
        int y = j >= 0 ? b[j] - '0' : 0;
        int z = (x - borrow - y + 10) % 10;
        res += '0' + z;
        borrow = x - borrow - y < 0 ? 1 : 0;
        i--, j--;
    }
    reverse(res.begin(), res.end());
    // 删除前导 0。循环条件是 res.size()- 1 是为避免 "0000" 的状况
    int pos;
    for (pos = 0; pos < res.size() - 1; pos++) {if (res[pos] != '0') break;
    }
    return res.substr(pos);
}

bool isLess(string a, string b) {if (a.size() == b.size()) return a < b;
    return a.size() < b.size();
}

string subStrings(string num1, string num2) {
    string res;
    if (isLess(num1, num2)) {res = sub(num2, num1);
        res.insert(0, "-");
    }
    else res = sub(num1, num2);
    return res;
}


int main() {
    string a, b, c;
    cin >> a >> b;
    cout << subStrings(a, b) << endl;
    return 0;
}

这道编程题次要还是看很多状况有没有思考到,最初在面试官的疏导下最终欠缺了代码。

HR 交换

在两场面试后,HR 进来和我聊了下,次要谈了下公司福利,技术气氛之类的。这时感觉这次面试的后果应该还是不错,应该能拿到 Offer 了。

终面 CEO 面

说实话,当 HR 告诉我还有 CEO 面的时候我震惊了。一是面试到当初素来没见过还有这种面试的,二是也不晓得老板会问啥,征询了一下我的本科导师,他让我筹备了一下深度学习和当下的一些前沿常识。在筹备的时候也是看了相干的很多论文,还把老板在一些会议上的演讲都看了。

没想到最初老板也只是和我聊聊天,问问他乡啊,将来的布局啊等。此外他说了一句话也让我有点心动,他说“没事不晓得你方不不便说说目前 Offer 的一些状况,咱们这边能够竞争一下,咱们也边开的一些条件也不会亚于大厂”,过后就感觉老板很切实,咱们之间是一个平等的沟通,这是很难得的,这也是我最初抉择这家公司的一个起因。我起初回道“目前可能薪资方面也不是我次要思考的一个点,薪资诚然重要,但我目前看重的还是倒退的环境和集体能力的晋升”。

写在最初

其实能够看到,这场面试从头至尾并没有问什么特地难的问题,比拟重视根底,这就须要对一些基础知识有比拟深刻的了解。有些简略的常识不是说看一遍就完结了,而要知其所以然,另外还须要能正确地表达出来。当初看来,能最终进入这家公司也是很侥幸,起初 HR 和我说,他们招的很多都是浙大交大的同学,可能测开这边比拟缺人,而且面试的题我根本都筹备到了,的确是运气很好了。

当初进入公司工作半年多了,感觉公司的气氛很不错。公司外部是技术驱动,大家都踏踏实实干事,没有某些公司的钩心斗角。在这期间也学到了很多,最终抉择这家公司也是一个正确的抉择。

最初,心愿这篇文章能给你带来帮忙。

退出移动版