一面(2021.4.7)
有一个只有0/1的矩阵,标记为1的是墙不可通行,你有一把锤子,能够砸穿一面墙,问从起点到终点的最短距离。
因为网络问题迟到了,时间不太够没想全情况。(ノへ ̄、)
其实只需要直接从起点进行bfs,对每个点标记两个状态(到达的时候有没有砸过墙,因为有可能某条更长的没砸过墙的路可行,但是经过的点提前被砸过墙的路访问了),两个状态第一次到达的时候都标记然后入队,就可以解决了。
另外因为这道题只砸一面墙,也可以分别从起点和终点进行bfs,路上不砸墙,再对每个点求取到起点和终点的最短距离和,取最小值(枚举到墙的时候就相当于路上砸了这面墙),脑测了一下应该可行。
二面(2021.4.9)
1.在一个排好序的数列中找某个数的第一次出现和最后一次出现
因为当时面试官引入问题的时候先提了二分搜索,所以就说二分查找大于这个数和小于这个数的第一个位置,看左右是不是这个数,是就输出。然后写了其中一半的二分。
2.实现map
说实话这个问题我在面经里看到过,但从没想过有一天真的会被问到。面试官说要问一个我平时接触不到的。(⊙﹏⊙)
于是就说先求hash值(我知道C++的map是红黑树,但是不会写),然后开了个二维不定长数组,将key-value存进对应的hash值处。插入的时候查询是否存在,存在就修改,不存在就插入,查询的时候也是差不多的流程。
然后针对代码简单讨论了一下多线程和锁的问题,比如写操作可以只锁正在修改的那一个hash值的位置之类的。最后聊了差不多五分钟的天,提前结束了。
Leader面(2021.4.13)
英文对话+问题交流+一道简单的算法题(给出年月日,求是这一年的第几天)。 这一轮面试的感觉相当糟,对话一塌糊涂不说,这么简单一道题代码还出了纰漏,后面基本就是面试官逮着我的代码格式和变量名挨个怼(因为我是个打比赛的菜鸡,为了追求写代码的速度和表面的简洁,写的过程中会省略掉能省的括号和空行什么的,不符合大众规范)。这事我以前从没注意过,以后真的要多上心。
后面还探讨了一下怎么优化,譬如比起省掉一个小循环,%运算更值得改进之类的。
后续
最后一面这么反常,我觉得我肯定凉了,而且当时脑抽选了个不常用的邮箱,这一周就都没去管。
今天去邮箱看了一眼,发现前天(4.15)收到了信息采集表,昨天(4.16)收到了offer。嘛,这就是意外之喜吧。
也祝大家都收到心仪的offer,心想事成,天天开心。XD
顺带一提,今天(4.24)又一次突发奇想(……)查邮箱的时候知道了组,是M365的。强烈建议大家真的别选不常用的邮箱,容易像我一样屡屡险些误事。
全部评论
(4) 回帖