2013.4.19早上9:00到9:40 腾讯一面(WEB前端开发)
我的职位选了WEB前端开发,擅长的语言却选了C\C++,面试官对我都无语了。然后就是确认了一下我对各个职位或是工作城市有没有要求。
先问了HTML,JAVASCRIPT,CSS,PHP,让我说一下他们都是干嘛的。就马马虎虎的说了说。然后问我HTTP,让我说一下内部有什么,压根不记得了。就说了一下GET,POST。然后再说了一下两者的区别。他也没继续问。不知道他什么意思。
第二个题:为什么析构函数要是虚函数,这个昨晚刚背过,很easy。就是内存泄露,如果定义一个基类的指针,但是把子类对象的地址赋给它,如果在构造函数里分配了内存,如果析构函数不是虚函数,那么就不会调用子类的析构函数,造成内存泄露。
第三个题给两个数组a[m],b[n],里面的数据都是uint8类型的,求出a里有b里没有的数,打印出来。算法写了,但是时间复杂度是o(m*n),他让优化,不会。他提了一下说a中第一数跟b中所有数都比较过了,第二次呢?还要比一遍么?没想明白,舍友说因为每个数的范围是0~255,可以考虑把a建立一个hash表,然后b每个直接去比,时间复杂度就是o(n).
第四个题就是微软昨天问的那个,说是有一个10G的数据,然后内存只有2G,问我怎么得到最大的k个数据,思路就是建立k个数据的小顶堆,依次取其他数据,如果比堆顶元素小,就替换堆顶元素,最终就得到了最大的k个数据。还好,昨天微软的GG给我讲这个题了。
第五个题:就是笔试卷子上的附加题,海量数据处理吧。不会做,但是扯到了查找用什么数据结构比较好,我说了hash,不知道对不对。还了解了扣扣的上线下线不是记录一下时间而已,如果是你操作的下线,会有下线标记,如果是断网引起的下线,是没有下线标记的。
第六个题:问我学C++看了什么书,自己嘴贱说C++Primer,他就问了static_cast()和dynimal_cast()和const_cast(),说是C++Primer里讲的很细,我被自己挖的坑坑了。。。
还问了map,我想不起来了。。。。
然后其他就是问了我的项目,关于国防项目和私人的小项目有什么感觉,我就说了感觉国防项目接触的知识比较少,私人的小项目反倒是学的东西多一些。不知道是否合适。然后再就是一些无关痛痒的问题。