比特大陆嵌入式
1.介绍web项目,遇到的问题?
我说我使用了同步epoll来模拟异步IO的框架,巴拉巴拉
面试官说实际上epoll是异步的,它是一个异步的通信,又问我异步和同步的区别
2.你的epoll是自己实现的吗?我说调用C库函数
3.能讲讲异步epoll和select,poll的区别吗?
我说了epoll的底层结构体以及内核的拷贝的区别,还没说完,面试官说你说的红黑树和双向链表只是帮助更快的找到指定的文件描述符,实际上epoll更快的原因是更宏观上的。 4.线程间的通信?我说了通过全局通信,需要用到锁
5.互斥和自旋锁区别?
然后问C++的相关知识
6.数据结构上,栈和队列的区别
7.在双向链表中间插入节点需要注意什么?
我说的主要是插入元素导致迭代器失效的问题。
面试官说,我想问的主要是断链这个问题,双向链表是由head和tail节点构成,在这两个节点之间插入节点怎么避免断链?
我才知道原来问的是在空链表插入节点,我说我理解的head是一个dummyhead,所以要让dummyhead指向插入节点,插入节点再指向尾节点。
6.指针和引用的区别?我说了区别
面试官:实际上我想问你引用指向一个局部变量会出现什么问题?我说函数参数传递方面。面试官说实际上,引用指向局部变量的时候,当超出作用域,引用也会变成类似野指针这样的东西
7.引用指向6的内存会发生什么?
我一直没听懂,6是啥?我又问,我没太懂您说的问题,6是指数字6吗?面试官:不是不是,我说的6和delete
我才知道原来说的是new。我说引用指向new的内存,是和内存泄露有关吗?
面试官说,是这个意思,new的时候调用构造函数获得资源,但是引用内存在析构对象的时候不会释放资源。
8.问我对嵌入式工作的理解,想从嵌入式获得什么
总结:面试官和我都是意识流,然而两个意识流都说不同的东西,特别尴尬。尤其是6和new,把尴尬氛围推向了顶峰。
像引用类似野指针,引用不调用析构函数,这些问题我之前都没听说过,还是我不太了解C++的底层。
#比特大陆##面经#