第一次实习面试中碰到的一些算法题目

非科班出身,生平第一次关于编程职位的面试,虽然面试官人很好,一直在引导我怎么思考,但是答的还是一般。而且今年一直在学统计,代码也生疏了好多,c++的代码写的太烂了。。。


回忆了一下几道算法题:

1.给定一个数组:int array[100000],每个元素都不一样,取最大的10个元素
因为是个topk的问题,一开始答的可以用随机快排或者建一个堆进行排序,但是这样没有用到题目给出的一些条件。后来想到都是数可以用count排序,但是这样想来想去用到的方法都是排序。

太紧张,没听懂他的解决方案敲打


2.还是这个数组取中位数

取中位数的话就是找出一个树位于中间的位置,然后左边所有的数比它小,右边所有的数比它大。这样就想到了快排。

(1)随便选一个数a1,如果排完之后的位置在中位数的位置50000左边,那么下一次快排选一个比a1大的数排

(2)如果排完之后在右边,就选一个比它小的数排,这样一直排下去,可以选的数的范围就越来越窄,最终可以得到中位数


3.这题好像是说把几个无序的文件排序输出,但是文件在外部,内存不够存储所有的文件

用到了归并排序,每次对少量的子序进行排序


4.找出单向链表的中间节点, 偶数时返回两个中间点的前一个的指针

这个用两个指针a1,a2,一开始指向表头。依次开始访问链表的各个节点,然后a2移动两次,a1移动一次,最后a2到表尾的时候,a1就是中间点了。


之后就是围绕简历问的一些项目有关的问题了。。。

额,之前都不知道面试会怎么面,以为会各种逻辑题,前一天晚上还恶补了一堆逻辑测试,什么安全过河之类的问题。结果哭

还是很想去做这个实习的,有机会可以在实践中用到hadoop还是很令人兴奋的啊!!!

录了就买机票回国!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章