默安科技实习一二面之解答

原帖:https://www.nowcoder.com/discuss/462735131938172928

为什么在 C++ 中需要在析构函数上加上 virtual 关键字?

C++默认析构函数不是虚函数,因为申明虚函数会创建虚函数表,占用一定内存,当不存在继承的关系时,析构函数不需要申明为虚函数。

若存在继承关系时,析构函数必须申明为虚函数,这样父类指针指向子类对象,释放基类指针时才会调用子类的析构函数释放资源,否则内存泄漏

CPU怎么切换?

1、IO等待切换.

2、时间轮询切换,也就是如果没有IO等待的情况下,就会有时间轮询切换,不让CPU一直处理一个任务

缺页中断?

  1. 缺页异常:malloc和mmap函数在分配内存时只是建立了进程虚拟地址空间,并没有分配虚拟内存对应的物理内存。当进程访问这些没有建立映射关系的虚拟内存时,处理器自动触发一个缺页异常,引发缺页中断。
  2. 缺页中断:缺页异常后将产生一个缺页中断,此时操作系统会根据页表中的外存地址在外存中找到所缺的一页,将其调入内存。

docker的常用命令

docker images

docker ps

docker run

docker exec

docker pull

docker logs

k8s网络?

提问不明确

iptables

在Linux中,规则表(Table)是用于组织和管理iptables规则的逻辑结构。iptables规则表是基于Netfilter框架实现的,通过规则表可以方便地管理和操作iptables规则。

iptables规则表可以分为四种类型:

  • Filter表:Filter表是最常用的规则表
  • NAT表:NAT表用于实现网络地址转换(Network Address Translation)。
  • Mangle表:Mangle表用于修改数据包的特定字段,如TTL、TOS、IP ID等。
  • Raw表:Raw表用于控制数据包是否被连接跟踪系统跟踪。

TCP Wait_Time

提问不明确

排序算法复杂度

二分查找的时间复杂度logn

C++ virtural 作用

修饰虚函数

虚函数的实现

C++实现虚函数的原理是虚函数表+虚表指针

当一个类里存在虚函数时,编译器会为类创建一个虚函数表,虚函数表是一个数组,数组的元素存放的是类中虚函数的地址

同时为每个类的对象添加一个隐藏成员,该隐藏成员保存了指向该虚函数表的指针。该隐藏成员占据该对象的内存布局的最前端。

所以虚函数表只有一份,而有多少个对象,就对应多少个虚函数表指针

动态绑定

虚函数在运行期间动态绑定,即父类指针和引用指向子类的实例时,通过父类指针或引用可以调用子类的函数

TCP三次/四次

三次握手

  1. Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,等待Server确认。
  2. Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置1,ack=J+1,随机产生一个值seq=K,并将该数据包发给Client以确认连接请求。
  3. Client收到确认后,检测ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server。完成三次握手,随后Client与Server之间可以开始传输数据了。

四次挥手

  1. 数据传输结束后,Client的应用进程发出连接释放报文段FIN,并停止发送数据,此时Client依然可以接收Server发送来的数据。
  2. Server接收到FIN后,发送一个ACK给Client,确认序号为收到的序号+1。
  3. 当Server没有数据要发送时,Server发送一个FIN报文,等待Client的确认。
  4. Client收到Server的FIN报文后,给Server发送一个ACK报文,确认序列号为收到的序号+1。此时Client进入TIME_WAIT状态,等待2MSL(MSL:报文段最大生存时间),然后关闭连接。

为什么要等2MSL

这是为了保证客户端发送的最后一个ACK报文段能够到达服务器。如果客户端不等待2MSL,这个ACK报文段可能丢失,因而使得处在LAST-ACK状态的服务器收不到ACK报文段的确认,导致服务器无法正常关闭。而如果客户端等待2MSL,服务器就会超时重传FIN报文段,而客户端就能在2MSL时间内收到这个重传的FIN-ACK报文段。接着客户端重传一个确认,重新启动2MSL计时器。当服务器收到最后一个ACK后就可以正常关闭了。

2MSL的意义是,经过2MSL后,所有的报文都会消失,不会影响下一次连接。最后客户端和服务器端都能正常进入到CLOSED状态。

ping命令

ping用于确定本地主机是否能与另一台主机成功交换(发送与接收)数据包,再根据返回的信息,就可以推断TCP/IP参数是否设置正确,以及运行是否正常、网络是否通畅等。

icmp处于那一层

网络层

查看进程的命令

ps -ef

查看IP的命令

ifconfig

ip addr show

Linux文件夹权限是啥

举例:文件的权限字符为 -rwxrwxrwx 时,这里总共会有10个字符,第一个字符表示文件类型,如文件(-表示),文件夹(d表示),链接文件(l表示),块设备(b表示),字符设备(c表示),后面9个字符按照三个一组分。其中,我们可以使用数字来代表各个权限。

各权限的分数对照如下:

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,

例如当权限为: [-rwxrwx---] ,则分数是:

owner = rwx = 4+2+1 = 7

group = rwx = 4+2+1 = 7

others= --- = 0+0+0 = 0

所以我们设定权限的变更时,该文件的权限数字就是770!

以上答案均来自本人专栏:校招面试考点全解析——C++软件与嵌入式篇(蒋豆芽的秋招打怪之旅)

欢迎大家围观:https://blog.nowcoder.net/jiangwenbo

#软件开发2023笔面经#
牛友面经解答 文章被收录于专栏

这个专栏专门用于为牛友解答面经,希望能帮助到大家。

全部评论
肥肠需要!狠狠马住!
点赞 回复 分享
发布于 2023-03-10 11:45 陕西
考点很清晰 感谢分享
点赞 回复 分享
发布于 2023-03-10 12:18 广东
😂谢谢楼主解答,那个k8s网络的意思是指k8s的网络组件,然后那个被屏蔽的问题是k8s异地内网如何组网。其次那个tcp wait_time问的是为什么要等2MSL,等3MSL不行么?最后那个文件夹权限不是指单独赋权,问的是为什么对文件夹赋权
点赞 回复 分享
发布于 2023-03-10 20:05 四川
点赞 回复 分享
发布于 2023-05-22 12:57 广东
大佬
点赞 回复 分享
发布于 2023-05-23 13:26 北京
多多点赞,会变好看,多多留言,会变有钱
点赞 回复 分享
发布于 2023-05-23 13:28 广东
麻竹
点赞 回复 分享
发布于 2023-05-25 12:54 广东
太牛了
点赞 回复 分享
发布于 2023-05-27 08:38 广东
C++与嵌入式面试题全解析:https://www.nowcoder.com/creation/manager/columnDetail/wjvy4m
点赞 回复 分享
发布于 2023-06-17 08:32 陕西
机器学习面试题汇总与解析 https://www.nowcoder.com/creation/manager/columnDetail/qMKkxM
点赞 回复 分享
发布于 2023-06-17 08:33 陕西

相关推荐

9 34 评论
分享
牛客网
牛客企业服务