前序:面试的前一天晚上居然失眠了,三点多才睡着,然后早上五点就醒了,躺倒六点就起来去实验室了,然后看了看程序员面试宝典,等到8:30 开始面试
一面:面试官没叫我介绍,直接然我实现一个单链表的转置,开始我用了一个栈实现,(p->next|| (*p).next),然后面试官让我用O(1)的空间实现,需要两个指针,从头开始遍历即可。代码写的没什么问题,一面就轻松的过了
二面:面试官看了看我笔试答的题目,错的基本都是概念题,多以没问,然后问我做过的项目(注意:怎么保证大数据的存储,以及系统的负载),
然后是编程题
第一题:问我,给定一个map(int,double) 求value 占 value 总和的权重 然后用random 生成随机的key 值,要求key 值出现的概率和value 的权重一一致,我的思想:把(0-1)按照权重进行划分区间,然后看random 随机生成0到1的值,看在哪个区间,然后放回该区间的value。
第二题:给定一个数组 int array[N] ,数组里面放的是0-N的值,然后求缺失的那个值是什么,思路:求两个和相减,。然后他提出变形: 放置的是a-b 之间的值,思路:用max,min 分别保存最大值,和最小值,然后相减。
第三题: 二分查找算法,然后二面就顺利通过了
第三面:
主要是随便聊了一下互联网产品,然后问我怎么设置人人网站,数据库怎么设置,怎么保存大量数据,以及如何添加好友,共同好友的显示。然后问我hadoop 了解情况
总结:虽然顺利拿到offer ,但是还有很多方面需要提高,比如,有些问题回答的不够好,或处理不到位,导致没有拿到A+或者S,这方面还需改进
其他人面试题 (1,两个链表合并,2,两个大数相乘)