大三实习,这次贝壳面试也是我的第一次面试,一面、二面、hr面一晚上面完,非常刺激。可能面试都集中在一起,所以面试时间不是很长 60 + 20 + 6,面试官也很和善,体验非常棒。
一面:
两数之和这题改了时间复杂度,需要在 O(nlogn) 时间内完成,我这里用的 C++ 中的 unordered_map 做的;
三数之和也是用的哈希,由于是在本地编辑器写的,所以代码也保留了:
class Solution { public: vector<vector<int>> threeSum(vector &num) { const int maxn = 6000; int sum[maxn]; int idx = 0; vector<vector<int>> res; unordered_map<int, unordered_set<pair<int, int>>> unmp; for (int i = 0; i < (int)num.size(); ++ i) { for (int j = i + 1; j < (int)num.size(); ++ j) { sum[idx ++ ] = num[i] + num[j]; unmp[num[i] + num[j]].insert(make_pair); } } for (auto item : unmp) { auto sum = item.first; auto st = item.second; // pair1 pair2 ... for (int j = 0; j < num.size(); ++ j) { if (j == -sum) { vector vec; for (auto i : st) { vec.push_back(j); vec.push_back(i.fist); vec.push_back(i.second); } res.push_back(vec); } } } return res; } };
力扣官方用的排序与双指针写的,可能受前一题的影响,这题也想用哈希来写,思路大概没问题,可惜由于一面时间确实有点长了,一次运行没过就没让继续改了。
二面:
一面结束后大概 20 分钟开始二面,这一面问的技术多一些。
- 介绍一下自己。
- 大学期间写了多少行代码?
- C 语言中 int 型变量能表示的数的范围。
- 32 位机器上的程序放在 64 位机器上运行会怎样?
- go 语言中 make 与 new 的应用场景。
- 并发处理可能会遇到哪些问题?(通过银行转账举例,可能会遇到脏读、脏写、不可重复读、幻读等问题)
- mysql B+ 树和 B 树的区别。
- 二分查找的时间复杂度是多少?数学方面怎么证明?
- mysql 一张表最多能存多少。
- mysql 问了一个锁,不知道,也没记住是啥锁。
- linux 中获取文件行数的命令。
- 自己常用的 linux 的命令。
- 单列索引和组合索引的区别。然后在建立 (a, b, c) 组合索引的情况下,面试官简单的写了几个 sql 语句,问 IO 次数以及如何查询的。(最左前缀原则)
- 写了一道算法题:整数反转 。
- 有什么要问我的?
hr面:
二面刚结束 1 分钟开始 hr 面。
- 有没有写过 go web 方面项目。
- 毕业后是读研还是找工作。(找工作)
- 为什么不打算读研了?
- 如果收到 offer 什么时候可以实习?学校在实习方面的安排是怎样的?
- 有什么要问我的?
三月底了,一个 offer 都没有,希望贝壳能收留。
全部评论
(7) 回帖