1.介绍一些项目
2.具体介绍一下整个slam项目里面的各个模块
3.具体介绍一下你做的内容
4.光流补偿怎么做?一阵见血
3.问一些计算机网络的知识,tcp滑动窗口,close_wait和time_wait区别,很基础,看过的就知道
5.问了一些网络编程相关的:
(1)从输入域名到显示网页的整个过程
(2)HTTP协议的格式
(3)Get的具体格式是什么?
(4)客户端socket的过程
(5)connect的过程是阻塞的,应该要怎么解决呢???怎么避免
(6)堆和栈的区别?
原理很简单,就是先把套接字设置为非阻塞,因为在非阻塞情况下,connect的结果是立即返回的,然后我们再使用select或者poll等机制来检测套接字一定的时间,如果在超时时间内不可写,则认为connect失败,然后需要把套接字重新设置为阻塞,当然如果你不需要在阻塞模式下工作,可以不用设置。
如上,我们就可以对connect的超时进行可控。
————————————————
版权声明:本文为CSDN博主「clirus」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/clirus/article/details/50577352
1.建立socket
2.将该socket设置为非阻塞模式
3.调用connect()
4.使用select()检查该socket描述符是否可写
5.根据select()返回的结果判断connect()结果
6.将socket重设置为阻塞模式
代码实现:https://blog.csdn.net/hj605635529/article/details/74157305
步骤1: 设置非阻塞,启动连接
实现非阻塞 connect ,首先把 sockfd 设置成非阻塞的。这样调用
connect 可以立刻返回,根据返回值和 errno 处理三种情况:
(1) 如果返回 0,表示 connect 成功。
(2) 如果返回值小于 0, errno 为 EINPROGRESS, 表示连接
建立已经启动但是尚未完成。这是期望的结果,不是真正的错误。
(3) 如果返回值小于0,errno 不是 EINPROGRESS,则连接出错了。
————————————————
版权声明:本文为CSDN博主「hj605635529」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hj605635529/article/details/74157305
重载函数再编译阶段会发生什么事情?优质 右边=--
作者:这么菜怎么办啊
链接:https://www.nowcoder.com/discuss/421912
来源:牛客网
- 因为项目中用到了epoll,那么讲一讲select、poll、epoll是干嘛的,有什么区别(最好从底层实现来讲)
- epoll中为什么用红黑树,而不用hashtable来管理?插入删除复杂度不是更低吗
作者:TimDeng
链接:https://www.nowcoder.com/discuss/223563?type=post&order=time&pos=&page=1&channel=&source_id=1_post
来源:牛客网
第三个小部分是linux网络编程:
1.进程和线程的区别是什么?
2.进程间通信方式有哪几种?哪一种通信方式最快?为什么?
3.TCP/IP三次握手说一下,为什么要三次握手?两次不行吗?
4.TIME_WAIT的作用?
3.函数重载是什么呢?函数重载又是怎么实现的呢?(编译器怎么知道要调用哪个函数?)
4.虚函数是怎么实现的呢?虚表是怎么个原理?
C++多态是什么,底层原理是什么(回答了虚函数的底层原理,忘记说静态多态:重载),然后让我拿画图软件画给他看
讲一下多态?虚函数底层怎么实现的?虚函数指针是每个类一个还是每个对象一个?虚函数指针在实例内存里放在哪,前面中间还是末尾?
静态成员变量和普通成员变量区别?静态成员变量怎么初始化?静态成员变量布局在哪个数据段?普通成员变量呢布局在哪个区?