旷视春招正式岗后端三面
面经攒人品,这边遇到的旷视面试官都人超好,赞一个。
因为这段时间差不多一直在忙,毕设中期汇报和确定读研导师的事情,八股忘的有点多了,旷视的三面也一直从4月初拖到现在。
这轮技术面问的8股和一些场景。
1.见面先聊聊个人的情况,有关于读研还有工作的一些事情。
2.对于100万个int型数据,是数组快还是链表快?数组快为什么?从cache,缺页中断这些方面回答。
3.对Linux熟悉吗?常用哪些命令啊?
4.子进程可以访问fork之前的一些数据吗?只要没用exec加载其他二进制程序,就可以,因为Linux,里面是读时共享,写时复制。
5.进程与线程的一些区别。
6.对于一个聊天室,一方面要保持发言的工作,另外方面需要保存一个小时内的消息记录。问是该选多进程还是多线程?这个,我是从进程线程开销,以及多进程和多线程安全性回答的,回答的不是特别好,希望评论区里有好兄弟说一声。
7.手撕代码
没找到是leetcode哪一道题,大意是给你一个数组,里面N个数字,要求你返回一个由这个数组里面的数字首尾拼接起来的最大的数字字符串。例如{12,23},应该返回2312。这道题我是用的sort函数解决,cmp设置为返回ab拼接起来>ba。
这道题因为做过,所以做出来的速度太快了,以至于后面又给了我一道比较棘手的场景,不过面试官一步步的都有引导。
你的内存只有4~6GB,然后有一个32GB的无序int数据,要你找出他们的中位数。
这道题我一开始是受到leetcode 295原题的影响太严重了。
我是想着把这32GB分成8块,每块4GB,分块用两个优先队列来解决,每次排除最极端的两块。但这个可能存在极端情况。
之后又想到说是用二分查找,找到这些数据的最大值,最小值,然后进行二分,但是二分的话,因为是无序数据的缘故,你需要每个都数一遍,看一下这个数字是不是中位数,也比较麻烦。
正确的做法应该是,桶排序,把最大值最小值之间划分 N个int的数据区段,初始化为N个桶,可以理解为N个文件,然后把每个数字记录到每个桶里。
当32GB全遍历一遍,再从首尾的桶开始往中间夹逼,计算数据量,看中位数应该是在哪一个或两个桶里面,再把他们用之前的优先队列或者是排序的方法找到中位数。#2022春招##旷视#
因为这段时间差不多一直在忙,毕设中期汇报和确定读研导师的事情,八股忘的有点多了,旷视的三面也一直从4月初拖到现在。
这轮技术面问的8股和一些场景。
1.见面先聊聊个人的情况,有关于读研还有工作的一些事情。
2.对于100万个int型数据,是数组快还是链表快?数组快为什么?从cache,缺页中断这些方面回答。
3.对Linux熟悉吗?常用哪些命令啊?
4.子进程可以访问fork之前的一些数据吗?只要没用exec加载其他二进制程序,就可以,因为Linux,里面是读时共享,写时复制。
5.进程与线程的一些区别。
6.对于一个聊天室,一方面要保持发言的工作,另外方面需要保存一个小时内的消息记录。问是该选多进程还是多线程?这个,我是从进程线程开销,以及多进程和多线程安全性回答的,回答的不是特别好,希望评论区里有好兄弟说一声。
7.手撕代码
没找到是leetcode哪一道题,大意是给你一个数组,里面N个数字,要求你返回一个由这个数组里面的数字首尾拼接起来的最大的数字字符串。例如{12,23},应该返回2312。这道题我是用的sort函数解决,cmp设置为返回ab拼接起来>ba。
这道题因为做过,所以做出来的速度太快了,以至于后面又给了我一道比较棘手的场景,不过面试官一步步的都有引导。
你的内存只有4~6GB,然后有一个32GB的无序int数据,要你找出他们的中位数。
这道题我一开始是受到leetcode 295原题的影响太严重了。
我是想着把这32GB分成8块,每块4GB,分块用两个优先队列来解决,每次排除最极端的两块。但这个可能存在极端情况。
之后又想到说是用二分查找,找到这些数据的最大值,最小值,然后进行二分,但是二分的话,因为是无序数据的缘故,你需要每个都数一遍,看一下这个数字是不是中位数,也比较麻烦。
正确的做法应该是,桶排序,把最大值最小值之间划分 N个int的数据区段,初始化为N个桶,可以理解为N个文件,然后把每个数字记录到每个桶里。
当32GB全遍历一遍,再从首尾的桶开始往中间夹逼,计算数据量,看中位数应该是在哪一个或两个桶里面,再把他们用之前的优先队列或者是排序的方法找到中位数。#2022春招##旷视#