我社招招客户端天天招不到人
1 12

相关推荐

1.如果在头文件创建一个函数但是在源文件中没有实现它,会有bug吗?如果用到了会有bug吗?在那个阶段会报错2.如何解决循环包含的问题?3.动态库和静态库的区别?4.当使用结构体或对象作为unordermap、map中的key,会有哪些操作?5.TCP的三次握手以及完成连接队列的创建时机?6.介绍一下accept的底层原理?7.TCP的四次挥手?8.MySQL InnoDB存储数据采用什么结构?B+树的特征?B+树有哪两种类型(InnoDB)?聚集索引B+树和辅助索引B+树9.工厂模式解决了什么问题?什么场景下使用? 为了影藏对象构造的复杂,10. 在面对一个困难的问题时,你是怎么去分析的?解决的思路是什么?提出多个解决方案,哪一个方案最合适。这些都是重要加分项,不要错过1. 函数没有使用,在编译、链接都不会出现错误;函数使用了,编译没问题,链接会出错,如果该函数声明为inline(流程简单、频繁调用的函数),在编译阶段就会报错。2. 循环依赖 使用前置声明(当类结构体被用做指针或引用时,无需包含完整定义,前置声明替代头文件包含);依赖扩散 pimpl惯用法;重复包含 pragma once 或头文件保护宏。3. 静态库在编译的时候会被直接链接到可执行文件当中,动态库是在运行阶段才会确定。静态库缺点就是会造成程序体量比较大,并且在可执行文件后续的迭代更新中,每次都需要重新进行编译和链接可执行文件,适合小型项目。动态库可执行文件较小,多个程序共享同一份库代码,在后续的迭代中,只需要更新动态库,方便代码的维护性,适合大型项目。4. 对于unordermap需要重建一个哈希函数、重载==运算符、对于map需要重载operator <或自定义比较函数5. 首先客户端会发送一个SYN包请求建立连接,服务接受到之后返回一个SYN-ACK包,这个时候也会创建一个未完成连接队列,将客户端套接字加入进去,客户端收到服务端发来的包之后会发送一个ACK包,这个时候代表连接建立好了。此时,就会把客户单的套接字从未完成连接队列移除,移动到完成连接队列。6.当客户端发起连接请求时,服务端和客户端会通过TCP进行三次握手建立连接,完成之后,客户端的连接会被放入已完成连接队列,等待服务调用accept处理。之后。accept会从完成连接队列中取出一个客户端连接,并创建一个新的套接字文件描述符,用于客户端通信。7.主动关闭方(客户端)发送一个FIN报文给服务端,表示没有数据发送了;服务端收到FIN报文之后,会返回一个ACK包,表示确认收到;服务端这边没数据发送了之后,也会发送一个FIN报文给客户端;客户端收到ACK报文之后就会进入一个待关闭的状态,然后过2MSL就会进行关闭;服务端那边收到之后就会立马关闭。8. B+树的基础知识有待欠缺,需要进行补习9. 它是一种创建性设计模式,为了将对象的复杂创建逻辑封装起来,使得客户端代码不需要依赖具体的类,而是通过工厂来创建对象。最后下面的图片,感觉写的很好,所以贴上来了,是在B站上看到的,如有侵权,联系删除。#面试常问题系列#
点赞 评论 收藏
分享
某互联网大厂 技术支持 不到10k 双非硕
点赞 评论 收藏
分享
牛客网
牛客企业服务