面试官很亲切,听声音是个小伙子,交流过程比较轻松。
上来就问我关于爬虫的事情,因为我在简历上写,曾经实现过一个爬虫,说了下基本的实现流程,注意点,遇到的问题,如何解决等等,假如他不是搜索方向我想应该足够了。
接着问我数据结构和算法如何,我说还行,然后就问了快排,这个不能不会,不然肯定被鄙视。
然后问我如何比较两个函数的相似程度(之前貌似还有一个问题,忘了。。。),我说应该从功能上,以及从文本上来两方面分析。功能上就是输入输出的比较。文本上我先是想了个虚拟文档的做法,这个是自然语言处理还有网页搜索方面的,他问我效果会如何,我说可能会不太好,因为丧失了位置信息和结构信息。然后又提出了,从声明的变量数目,分支结构的数目等方面的比较算法,都是不太有完整思路的。然后他让我比较两个字符串的相似度,我首选还是虚拟文档,汗,我只会这个了;因为我感觉最长子串可能不好用,然后他建议了一种方法,先找最大公共子串,然后其次,等等,我没太明白。
然后问我用过的语言,我说java,c++,让我对比下,bla bla bla,Java的知识都没怎么问,直接问我c++了,可能是因为是c++岗位吧,我都忘了投什么岗位了。。。问了c++有什么默认的函数,构造,析构,然后问子类new的时候是什么过程,我说了半天最后想起来,可能也没说清楚,我google了个清晰的说法:转载自http://fafeng.blogbus.com/logs/17747724.html
/********************************************************************
C++构造函数调用顺序
1. 如果类里面有成员类,成员类的构造函数优先被调用;
2. 创建派生类的对象,基类的构造函数优先被调用(也优先于派生类里的成员类);
3. 基类构造函数如果有多个基类,则构造函数的调用顺序是某类在类派生表中出现的顺序而不是它们在成员初始化表中的顺 序;
4. 成员类对象构造函数如果有多个成员类对象,则构造函数的调用顺序 是对象在类中被声明的顺序而不是它们出现在成员初始化表中的顺序;
5. 派生类构造函数,作为一般规则派生类构造函数应该不能直接向一 个基类数据成员赋值而是把值传递给适当的基类构造函数,否则两个类的实现变成紧耦合的(tightly coupled)将更加难于正确地修改或扩展基类的实现。(基类设计者的责任是提供一组适当的基类构造函数)
#include #include class A{ public:A{…} ~A{…} } class B{ public:B{…} ~B{…} } class D{ public:D{…} ~D{…} } class E{ public:E{…} ~E{…} } class C :public A,public B{ public:C{…} private:D objD_; E objE_; ~C{…} } int main(void){ C test; return 0; } |
运 行结果是
A{…}//派生表中的顺序 B{…} D{…}//成员类的构造函数优先被调用 E{…} C{…} ~C{…} ~E{…} ~D{…} ~B{…} ~A{…} |
********************************************************************/
说完这个就开始聊别的了,我对分布式算法的兴趣,我表示没有怎么接触过,不是很了解,兴趣还可以吧,然后说了发展前途不错,好多地方要用到。等等。接着我我谈假如能实习,实习时间怎么样,我说看老板之类的。最后让我问问题,我问了他们云计算的具体情况,还有实习期间能否间断去找工作- -。
然后,然后就没有然后了,说过一段时间再打电话给我。
我只好在这里bless了,bless啊!
No comments:
Post a Comment