深信服一面 面经 7月25
1 上来就问 能不能接受转语言,公司主要技术栈是c++ c Python
2 算法题 无序数找中位数
中位数上来就想到 大根堆 小根堆 ,复杂度O(nlog(k))
面试官不满意,说如果海量数据怎么处理,我说了海量数据处理套路
分治法
第一:如何有效的划分数据 取hash,分到不同机器上处理
第二:如何在子集上解决问题 在子集上进行排序 可以用快排
第三:如何合并结果 用merge操作合并结果
面试官不满意 说你这样等于排序了吧,我们需要完全排序吗,想想中位数定义,这句话点醒我了,用快排的partition操作,也就是荷兰国旗问题,选一个标志位,进行partition,看我标志位左右元素个数,如果相等,就返回标志位,如果不等,取长的一般继续进行partition,短的那一半肯定没有结果,其实有二分的思想在里面,面试官说这是我想要的答案。
第二题 两个有序数组找中位数 要求时间复杂度O(log(m+n))
这道题原来刷过,所以会,看见有序,而且又看见 复杂度是log 这直接往二分想
3 linux 如何抓包
tcpdump
4 gba用过没有 AWK是干嘛的
5 linux替换命令
6 僵尸进程如何解决
7 c++和java的区别
8 知不知道c++是怎么进行内存管理的
在C++语言中,没有自动垃圾回收机制,是通过new关键字申请内存资源,通过delete关键字释放内存资源。
如果,程序员在某些位置没有写delete进行释放,那么申请的对象将一直占用内存资源, 最终可能会导致内存溢出。
反问 自己有什么不足
主要是语言问题