网易电面试题

2019-04-13 16:22发布

回忆网易电面,主要是c++基础语言,数据结构,设计题

1. const int * ,const * int ,int * const区别;

前面两个是指向的值不能修改,后面一个不能再指向另一个新地址。

2. new  malloc

http://www.cnblogs.com/growup/archive/2011/06/27/2091101.html

3. i++ ,++i区别,哪个效率更高,和怎么实现的?

more effective c++上的讲的很详细,一般++i效率更高,实现是重载了++操作符     Num & operator++();  //前缀自加
    const Num operator ++(int);   //后缀自加
    Num & operator --();    //前缀返回引用
    const Num operator --(int);    //后缀返回形参

4. 多态实现机制,virtual和inline


5. const成员函数,函数重载


6. 指针和引用

      不能使用指向空值的引用,引用要被初始化       指针可以被重新赋值指向另一个对象,

7. 深拷贝和浅拷贝


8. STL  map,vector,红黑树

   红黑树5大性质(口诀):非红即黑,根黑,null黑,父红子黑,殊路同黑。旋转啥的,很麻烦,说不出来    --vector能自动扩容,但能自动缩小吗?        不能,但是能通过swap实现,std::vector(v).swap(v);
        创建了一个临时变量代替那个命名的,然后使用swap(),这样我们就去掉了不必要的空间,得到实际大小的v。



9. struct class区别


10. 链表判断是否有环,两个链表是否交叉

   判环:2个指针追赶,    2链表是否交叉(都无环):都遍历一遍,看最后的尾节点是否指向同一位置                      遍历a链表,计数,再遍历b,计数,看最后的数量                      将a的最后一节点的next指向b的头,再判断是否有环    2链表是否交叉(有环)。。。

11. 项目简介


12. 智能指针


13. 游戏中,怎么设计一把枪打怪兽,怎么判断是否命中,如果有成千上万怪兽,怎么设计命中哪一个?