首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
茴香鱼
门头沟学院 算法工程师
发布于陕西
关注
已关注
取消关注
@蒋豆芽:
蚂蚁OceanBase 一面面经C++之解答
原帖:https://www.nowcoder.com/feed/main/detail/34a2bc09b6e54494abb1767b3242e96e1 网络七层/四层模型2 路由器在哪一层?交换机在哪一层?(当时答错了)路由器通常工作在网络层(第三层),主要负责将数据包从一个网络传输到另一个网络,通过选择最优路径来实现跨越不同网络的通信。交换机通常工作在数据链路层(第二层),主要负责在局域网中转发数据包,根据目的MAC地址将数据包从一个接口转发到另一个接口。3 数据链路层的协议(各层的协议后面再记一下)以太网(Ethernet):是应用最广泛的局域网协议,常用于连接计算机、交换机、路由器等设备。无线局域网协议(Wi-Fi):是一种无线局域网标准,可以在不需要物理连接的情况下提供高速数据传输。点对点协议(PPP):是一种用于建立点对点连接的协议,常用于拨号上网和虚拟专用网络(VPN)等场景。高级数据链路控制协议(HDLC):是一种同步的数据链路层协议,常用于广域网中传输数据。4 mac地址的作用?是属于物理还是逻辑的?MAC地址的作用是在局域网中标识和定位设备,使数据包能够正确地传输到目标设备。在数据链路层中,数据包的传输需要使用目标设备的MAC地址来进行寻址MAC地址是属于物理地址,因为它是由设备的网卡硬件制造商预先设定的,是设备的固定属性,不能更改。5 TCP/UDP在哪一层?两者区别?为什么要三次握手?为什么要四次挥手?传输层(1)TCP需要建立一对一稳定连接;UDP无连接(2)TCP一对一;UDP可以一对一、一对多、多对多(3)TCP可靠传输,序列号、确认应答、超时重传;UDP不保证可靠传输,尽最大努力交付(4)TCP头部字节20字节;UDP8个字节(5)TCP开销大;UDP灵活开销小(6)TCP提供可靠的服务,适用于通讯质量要求高的场景;UDP传输效率高,适用于高速传输和实时性要求的场景。不能两次假如只进行两次握手,客户端发送连接请求后,会等待服务器端的应答。但是会出现的问题是,假如客户端的SYN迟迟没有到达服务器端,此时客户端超时后,会重新发送一次连接,假如重发的这次服务器端收到了,且应答客户端了,连接建立了。但是建立后,第一个SYN也到达服务端了,这时服务端会认为这是一个新连接,会再给客户端发送一个ACK,这个ACK当然会被客户端丢弃。但是此时服务器端已经为这个连接分配资源了,而且服务器端会一直维持着这个资源,会造成资源浪费。两次握手的问题在于服务器端不知道SYN的有效性,所以如果是三次握手,服务器端会等待客户端的第三次握手,如果第三次握手迟迟不来,服务器端就会释放相关资源。不能三次。第二次挥手和第三次挥手不能合并在一起,这是因为第二次挥手后,服务器端可能还在传输数据,需要等待数据传输完毕后再进行第三次挥手。6 I/O多路复用方式select:select是一种阻塞式I/O多路复用方式,它可以同时监视多个文件描述符的读写状态,并在有数据可读或可写时返回。它的缺点是单个进程能够监视的文件描述符数量受限于系统的最大文件描述符数量,而且每次调用select都需要将所有被监视的文件描述符集合从用户态复制到内核态,效率不高。poll:poll是一种与select类似的阻塞式I/O多路复用方式,可以同时监视多个文件描述符的读写状态,并在有数据可读或可写时返回。与select不同的是,poll没有文件描述符数量的限制,效率比select稍高一些。epoll:epoll是一种高效的I/O多路复用机制,它可以同时监视多个文件描述符的读写状态,并在有数据可读或可写时返回。与select和poll不同的是,epoll采用了事件驱动的方式,只会返回发生变化的文件描述符,减少了内核态和用户态的数据拷贝次数,效率更高。7 进程和线程的区别(1)一个线程从属于一个进程;一个进程可以包含多个线程。(2)一个线程意外死亡,可能导致进程挂掉;一个进程挂掉,不会影响其他进程。(3)进程是系统资源调度的最小单位;线程CPU调度的最小单位。(4)进程系统开销显著大于线程开销;线程需要的系统资源更少。(5)进程在执行时拥有独立的内存单元,多个线程共享进程的内存,如代码段、数据段、扩展段;但每个线程拥有自己的栈段和寄存器组。(6)进程切换时需要刷新TLB并获取新的地址空间,然后切换硬件上下文和内核栈,线程切换时只需要切换硬件上下文和内核栈。(7)通信方式不一样。(8)进程适应于多核、多机分布;线程适用于多核8 了解死锁么?死锁怎么产生的?怎么避免死锁?死锁: 是指多个进程在执行过程中,因争夺资源而造成了互相等待。此时系统产生了死锁。比如两只羊过独木桥,若两只羊互不相让,争着过桥,就产生死锁。产生的条件:死锁发生有四个必要条件: (1)互斥条件:进程对所分配到的资源不允许其他进程访问,若其他进程访问,只能等待,直到进程使用完成后释放该资源;(2)请求保持条件:进程获得一定资源后,又对其他资源发出请求,但该资源被其他进程占有,此时请求阻塞,而且该进程不会释放自己已经占有的资源;(3)不可剥夺条件:进程已获得的资源,只能自己释放,不可剥夺;(4)环路等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。如何解决:(1)资源一次性分配,从而解决请求保持的问题(2)可剥夺资源:当进程新的资源未得到满足时,释放已有的资源;(3)资源有序分配:资源按序号递增,进程请求按递增请求,释放则相反。9 了解虚拟内存么?虚拟内存:操作系统为每一个进程分配一个独立的地址空间,却是虚拟内存。虚拟内存与物理内存存在映射关系,通过页表寻址完成虚拟地址和物理地址的转换。为什么要用虚拟内存:因为早期的内存分配方法存在以下问题:(1)进程地址空间不隔离。会导致数据被随意修改。(2)内存使用效率低。(3)程序运行的地址不确定。操作系统随机为进程分配内存空间,所以程序运行的地址是不确定的。使用虚拟内存的好处:(1)扩大地址空间。每个进程独占一个4G空间,虽然真实物理内存没那么多。(2)内存保护:防止不同进程对物理内存的争夺和践踏,可以对特定内存地址提供写保护,防止恶意篡改。(3)可以实现内存共享,方便进程通信。(4)可以避免内存碎片,虽然物理内存可能不连续,但映射到虚拟内存上可以连续。使用虚拟内存的缺点:(1)虚拟内存需要额外构建数据结构,占用空间。(2)虚拟地址到物理地址的转换,增加了执行时间。(3)页面换入换出耗时。(4)一页如果只有一部分数据,浪费内存。10 c++中i++ 和++i的区别?++i快还是i++更快呢?两个float类型如何判断相等?赋值顺序不同:++ i 是先加后赋值;i ++ 是先赋值后加;++i和i++都是分两步完成的。效率不同:后置++执行速度比前置的慢。i++ 不能作为左值,而++i 可以两者都不是原子操作。C语言是汇编层面的实现,后置++的汇编代码比前置++多了一行,那么执行就会多花一点时间。但是随着编译器的不断发展,这样的区别已经微乎其微了。但是迭代器前置 ++i 与后置 i++ 的效率就有区别了。后置++要多生成一个局部对象 tmp,这个对象有可能包含很多的成员,因此执行速度比前置的慢。在次数很多的循环中,++i和i++可能就会造成运行时间上可观的差别了。在C++中,由于浮点数的存储方式和精度的问题,直接比较两个float类型的值是否相等可能会出现误差。因此,一般情况下我们不推荐使用"=="或者"!="直接比较两个浮点数是否相等,而是使用以下方法:使用差值判断:判断两个浮点数之间的差值是否小于一个给定的误差范围,如果小于误差范围则认为两个浮点数相等。11 怎么避免内存泄漏?了解野指针么?动态内存的申请与释放必须配对,防止内存泄漏如果返回的是动态分配的内存或对象,必须使用指针,使用引用会产生内存泄漏。若存在继承关系时,析构函数必须申明为虚函数,这样父类指针指向子类对象,释放基类指针时才会调用子类的析构函数释放资源,否则内存泄漏。野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)野指针不同于空指针,空指针是指一个指针的值为null,而野指针的值并不为null,野指针会指向一段实际的内存,只是它指向哪里我们并不知情,或者是它所指向的内存空间已经被释放,所以在实际使用的过程中,我们并不能通过指针判空去识别一个指针是否为野指针。出现野指针的情况:指针变量的值未被初始化: 声明一个指针的时候,没有显示的对其进行初始化,那么该指针所指向的地址空间是乱指一气的。如果指针声明在全局数据区,那么未初始化的指针缺省为空,如果指针声明在栈区,那么该指针会随意指向一个地址空间。指针所指向的地址空间已经被free或delete:在堆上malloc或者new出来的地址空间,如果已经free或delete,那么此时堆上的内存已经被释放,但是指向该内存的指针如果没有人为的修改过,那么指针还会继续指向这段堆上已经被释放的内存,这时还通过该指针去访问堆上的内存,就会造成不可预知的结果,给程序带来隐患。指针操作超越了作用域12 c++内存分配了解么?如上图,从低地址到高地址,一个程序由代码段、数据段、BSS段、堆栈段组成。代码段:存放程序执行代码的一块内存区域。只读,不允许修改,代码段的头部还会包含一些只读的常量,如字符串常量字面值(注意:const变量虽然属于常量,但是本质还是变量,不存储于代码段)。数据段data:存放程序中已初始化的全局变量和静态变量的一块内存区域。BSS 段:存放程序中未初始化的全局变量和静态变量的一块内存区域。可执行程序在运行时又会多出两个区域:堆区和栈区。**堆区:**动态申请内存用。堆从低地址向高地址增长。栈区:存储局部变量、函数参数值。栈从高地址向低地址增长。是一块连续的空间。最后还有一个文件映射区(共享区),位于堆和栈之间。13 事务的ACID特性?(没记牢,漏了一个)四个特性:原子性(Atomicity):原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。失败回滚的操作事务,将不能对事务有任何影响。一致性(Consistency):一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。例如:A和B进行转账操作,A有200块钱,B有300块钱;当A转了100块钱给B之后,他们2个人的总额还是500块钱,不会改变。隔离性(Isolation):隔离性是指当多个用户并发访问数据库时,比如同时访问一张表,数据库每一个用户开启的事务,不能被其他事务所做的操作干扰(也就是事务之间的隔离),多个并发事务之间,应当相互隔离。例如同时有T1和T2两个并发事务,从T1角度来看,T2要不在T1执行之前就已经结束,要么在T1执行完成后才开始。将多个事务隔离开,每个事务都不能访问到其他事务操作过程中的状态;就好比上锁操作,只有一个事务做完了,另外一个事务才能执行。持久性(Durability):持久性是指事务的操作,一旦提交,对于数据库中数据的改变是永久性的,即使数据库发生故障也不能丢失已提交事务所完成的改变。14 redis的节点管理?集群节点:Redis集群是一种分布式部署方式,它由多个Redis节点组成,每个节点都可以处理读写请求。Redis集群使用哈希槽(hash slot)来分片数据,将数据均匀地分配到不同的节点上。主从节点:Redis主从复制是一种数据复制机制,它由一个主节点和多个从节点组成。主节点负责处理读写请求,并将数据同步到从节点上,从节点只负责处理读请求。主从复制可以提高Redis的可用性和可靠性,同时也可以提高读取性能。哨兵节点:Redis哨兵是一种自动化的监控和管理机制,它由多个哨兵节点组成,每个哨兵节点都可以监控多个Redis节点的状态。当某个Redis节点出现故障或者下线时,哨兵节点会自动发现并将该节点标记为不可用状态,并选举出新的主节点来代替原来的主节点,从而保证Redis集群的高可用性。15 kill -9 和kill -15的区别?正常结束进程的信号,kill -15命令的默认信号。如果进程已经发生了问题,那么这 个信号是无法正常中止进程的,这时我们才会尝试 SIGKILL 信号,也就是信号 9,即强制杀死。16 僵尸进程怎么产生的?僵尸进程和孤儿进程的区别?哪一个有害?怎么杀死僵尸进程?孤儿进程,是指一个父进程退出后,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并且由init进程对它们完成状态收集工作。僵尸进程,是指一个进程使用fork函数创建子进程,如果子进程退出,而父进程并没有调用wait()或者waitpid()系统调用取得子进程的终止状态,那么子进程的进程描述符仍然保存在系统中,占用系统资源,这种进程称为僵尸进程。所以两者的区别是:孤儿进程是父进程已退出,子进程未退出;而僵尸进程是父进程未退出,子进程已退出。如何解决僵尸进程:(1)一般,为了防止产生僵尸进程,在fork子进程之后我们都要及时使用wait系统调用;同时,当子进程退出的时候,内核都会给父进程一个SIGCHLD信号,所以我们可以建立一个捕获SIGCHLD信号的信号处理函数,在函数体中调用wait(或waitpid),就可以清理退出的子进程以达到防止僵尸进程的目的。(2)使用kill命令。打开终端并输入下面命令:$ ps aux | grep Z会列出进程表中所有僵尸进程的详细内容。然后输入命令:$ kill -s SIGCHLD pid(父进程pid)这样子进程退出后,父进程就会收到信号了。或者可以强制杀死父进程:$ kill -9pid(父进程pid)这样父进程退出后,这些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并且由init进程对它们完成状态收集工作。以上答案均来自本人专栏:校招面试考点全解析——C++软件与嵌入式篇(蒋豆芽的秋招打怪之旅)欢迎大家围观:**************************************
点赞 38
评论 6
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
06-12 23:14
韶音科技_产品事业部_产品经理(准入职员工)
韶音科技内推-韶音科技内推码
2024-06-08,投递简历:提前批-机械结构工程师2024-06-30,专业笔试:使用的牛客题库,20道选择题+2道简答题,考察范围包括机设、机原、材料、力学、工艺等2024-07-24,HR面试邀约2024-08-02,HR面试,腾讯会议,约20min。面试流程如下: 1. 自我介绍 2. 人事问答: (1)你的研究方向?你们课题组的研究方向有哪些? (2)分工? (3)项目简述:项目背景?解决什么问题?你做了哪些工作?结构怎样设计的?工作过程中有探索性学习?动手实践吗?项目进展? (4)实验室有多少人? (5)博士有吗? (6)做项目会有...
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
今天 12:20
忏悔大二摆烂
忏悔录楼主一直打算大二暑假找个实习大一还算认真,大二就松懈了大二上学期的时候,基本在摆烂,把重心放🚲运动上去了大二下计划猛抓,实际上也是坚持了一段时间,但是后期断了,又去专心跑步搞马拉松去了有时候觉得自己需要认真对待这个事,又开始考虑考研和工作,考虑实习是不是有这个必要,要不要投入那么多精力现在算是想明白了,先找个实习,考研和工作看后续发展,反正实习不影响,有个经历还是很好的。现在属于是,项目做的还可以但是基础技能还是稍稍差了点,加上现在go的坑好像不太多,打算沉淀暑假再投实习了。立贴为证,暑假学习打卡
梦想是成为七海千秋:
不是哥们你也太卷了吧,出去运动有啥好忏悔的,大学生活不只有学习和实习,还有更多看起来没用都是有助于身心健康的事情,好好享受大学吧
点赞
评论
收藏
分享
05-11 11:48
河南大学 Java
27,双非,一段小实习,如何冲击大厂
一个普通双非一本的我,在寒假结束时候找到了一家小公司实习,当时投四天四场面试全过感觉自己天下无敌,也时时幻想自己马上面试美团等大厂拿下大厂实习offer,但是我还是高估了自己的学历,最终大厂0面去了小厂。本以为是搞电商的厂,应该还可以,但是最后做的是tob的财务系统,找不到能偷的文档,也没法拉下来toc的代码,最近在投大厂,各位佬们🐮友们,有什么指导性的建议吗(简历的修改,投递的渠道,双非友好的大厂), 下面是我的简历,感谢大家。 注:网关项目是我抄的。现在感觉到学历的差异在面试机会体现上特别大,211跟双非差之毫厘失之千里。
程序员牛肉:
我是26届的双非。目前有两段实习经历,大三上去的美团,现在来字节了,做的是国际电商的营销业务。希望我的经历对你有用。 1.好好做你的CSDN,最好是直接转微信公众号。因为这本质上是一个很好的展示自己技术热情的证据。我当时也是烂大街项目(网盘+鱼皮的一个项目)+零实习去面试美团,但是当时我的CSDN阅读量超百万,微信公众号阅读量40万。面试的时候面试官就告诉我说觉得我对技术挺有激情的。可以看看我主页的美团面试面经。 因此花点时间好好做这个知识分享,最好是单拉出来搞一个板块。各大公司都极其看中知识落地的能力。 可以看看我的简历对于博客的描述。这个帖子里面有:https://www.nowcoder.com/discuss/745348200596324352?sourceSSR=users 2.实习经历有一些东西删除了,目前看来你的产出其实很少。有些内容其实很扯淡,最好不要保留。有一些点你可能觉得很牛逼,但是面试官眼里是减分的。 你还能负责数据库表的设计?这个公司得垃圾成啥样子,才能让一个实习生介入数据库表的设计,不要写这种东西。 一个公司的财务审批系统应该是很稳定的吧?为什么你去了才有RBAC权限设计?那这个公司之前是怎么处理权限分离的?这些东西看着都有点扯淡了。 还有就是使用Redis实现轻量级的消息队列?那为什么这一块不使用专业的MQ呢?为什么要使用redis,这些一定要清楚, 就目前看来,其实你的这个实习技术还不错。不要太焦虑。就是有一些内容有点虚了。可以考虑从PR中再投一点产出
投递美团等公司7个岗位
找工作,你会甘心进小厂还是猛冲大厂
双非本科求职如何逆袭
点赞
评论
收藏
分享
04-24 16:06
蚌埠坦克学院 后端
终于轮到我了😄😄😄
被拒那么多次,终于轮到我了
offer_offer来来来:
爽了哥。
点赞
评论
收藏
分享
06-17 09:56
已编辑
门头沟学院 Java
秋招剪切板
原计划没有这么快开始宣传,但这段时间私信我的有几十个了,bg好的也不少,比如国内本硕双9,华五本硕,国外多伦多大学,新南威尔士大学,香港大学这些qs排前30前20的,甚至c++3段实习,目前第三段实习是百度暑期的华五硕五月份就提前预定了,而每次相同内容都要复述一遍,就拿牛客当剪贴板吧,这样我可以偷懒少发内容,直接让看主页就行了,嘻嘻项目文档,无需写代码,能记住文档就行八股文档,针对我项目的问的最多的八股,只背这一份八股文档就能应付面试的八股提问算法文档,笔试和手撕的算法文档,一份足够过面试了,这里再补充一点,一般手撕难度都跟面评相关,问项目八股时答的好面试官往往不怎么为难人,我的文档足够覆盖了...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
对不起了妈妈,没办法让你过上好日子了。
1.2W
2
...
字节的后端实习二面,八股盛宴!
4401
华为开奖进展
热聊中
3
...
职场“心眼子”大赛:看你挑战多少次,才能拿到满分?
4338
4
...
我是全牛客唯一解锁了这个卡牌的吧
4275
5
...
默认入职+offer迟到3周,尊严被开水团按在地上摩擦
4260
6
...
实习上班两个月被骂了两个月
4256
7
...
不要放弃,兄弟们
3888
8
...
异地+卷王,有未来吗?
3624
9
...
虽然还有很多机会但也没心气了
3459
10
...
顺的人只会越来越顺 跌入低谷的只会越跌越低
3423
创作者周榜
更多
正在热议
更多
#
我的职场心眼子段位
#
11677次浏览
412人参与
#
妈妈治愈了你哪些脆皮时刻
#
26270次浏览
291人参与
#
实习最想跑路的瞬间
#
11532次浏览
107人参与
#
职场破防瞬间
#
238790次浏览
2207人参与
#
你找实习最大的坎坷是什么
#
12666次浏览
131人参与
#
我的求职精神状态
#
77127次浏览
966人参与
#
在国企工作的人,躺平了吗?
#
336883次浏览
3870人参与
#
嵌入式岗知多少
#
42653次浏览
454人参与
#
华为海思工作体验
#
22427次浏览
109人参与
#
正在实习的你,有转正机会吗?
#
385040次浏览
2929人参与
#
运营每日一题
#
72580次浏览
715人参与
#
能让你振作起来的一句话
#
48094次浏览
372人参与
#
多益网络工作体验
#
47245次浏览
271人参与
#
机械人,你被简历秒挂的企业有哪些?
#
39934次浏览
271人参与
#
应届生进小公司有什么影响吗
#
72915次浏览
1004人参与
#
一人分享一句让你在秋招振作起来的话
#
61337次浏览
564人参与
#
机械专业只有考研才有出路吗
#
107459次浏览
871人参与
#
通信硬件人社招/春招/实习投递现状
#
25760次浏览
932人参与
#
硬件人秋招的第一个offer
#
75442次浏览
1138人参与
#
24届的你们现状如何了?
#
72490次浏览
414人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务