360面经一面凉经

1.智能指针的内存分布情况,count计数器是怎么分布的存在内存中的哪里,多个指针怎么同步count
计算器存在堆上,每个智能指针对象,该对象中有一个指针指向改堆上的计数器。
2.右值引用
右值引用配上move等函数能实现低成本的对象实例化,右值引用能引用在右值等临时变量,省去了析构以后重新构造所造成的效率问题
3.redis多进程同步方式
建立一个消息队列,顺序进入,再顺序出队列取令牌。
还可以用信号量来整
4.1+(3-2-1)+5写代码计算一下
写的时候数值用char类型存储,导致负数和十位数没处理,写错了一点
5.return 0或-1抛出异常和throw exception有啥区别?
6.论文讲一讲
7.除了用锁还能怎样做同步
C++11开始有一个很好用的库,那就是atomic类模板,在<atomic>头文件中,多个线程对atomic对象进行访问是安全的,并且提供不同种类的线程同步,这个知识点已经设计C++的并发编程了。
8.传指针和传引用的区别
传指针只能改变形参,而传引用则可以改变实参。
9.网络层的协议是怎么传输报文的?

网络层引入了三个协议,分别是IP协议ARP协议路由协议。

【1】IP协议

通过前面的介绍我们知道,MAC地址只与厂商有关,与所处的网络无关,所以无法通过MAC地址来判断两台主机是否属于同一个子网。

因此,网络层引入了IP协议,制定了一套新地址,使得我们能够区分两台主机是否同属一个网络,这套地址就是网络地址,也就是所谓的IP地址。

IP地址目前有两个版本,分别是IPv4IPv6,IPv4是一个32位的地址,常采用4个十进制数字表示。IP协议将这个32位的地址分为两部分,前面部分代表网络地址,后面部分表示该主机在局域网中的地址。由于各类地址的分法不尽相同,以C类地址192.168.24.1为例其中前24位就是网络地址,后8位就是主机地址。因此, 如果两个IP地址在同一个子网内,则网络地址一定相同。为了判断IP地址中的网络地址,IP协议还引入了子网掩码, IP地址和子网掩码通过按位与运算后就可以得到网络地址。

由于发送者和接收者的IP地址是已知的(应用层的协议会传入), 因此我们只要通过子网掩码对两个IP地址进行AND运算后就能够判断双方是否在同一个子网了。

【2】ARP协议

即地址解析协议,是根据IP地址获取MAC地址的一个网络层协议。其工作原理如下:

ARP首先会发起一个请求数据包,数据包的首部包含了目标主机的IP地址,然后这个数据包会在链路层进行再次包装,生成以太网数据包,最终由以太网广播给子网内的所有主机,每一台主机都会接收到这个数据包,并取出标头里的IP地址,然后和自己的IP地址进行比较,如果相同就返回自己的MAC地址,如果不同就丢弃该数据包。ARP接收返回消息,以此确定目标机的MAC地址;与此同时,ARP还会将返回的MAC地址与对应的IP地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。cmd输入 arp -a 就可以查询本机缓存的ARP数据。

【3】路由协议

通过ARP协议的工作原理可以发现,ARP的MAC寻址还是局限在同一个子网中,因此网络层引入了路由协议,首先通过IP协议来判断两台主机是否在同一个子网中,如果在同一个子网,就通过ARP协议查询对应的MAC地址,然后以广播的形式向该子网内的主机发送数据包;如果不在同一个子网,以太网会将该数据包转发给本子网的网关进行路由。网关是互联网上子网与子网之间的桥梁,所以网关会进行多次转发,最终将该数据包转发到目标IP所在的子网中,然后再通过ARP获取目标机MAC,最终也是通过广播形式将数据包发送给接收方。

而完成这个路由协议的物理设备就是路由器,在错综复杂的网络世界里,路由器扮演者交通枢纽的角色,它会根据信道情况,选择并设定路由,以最佳路径来转发数据包。


目前就记得这么多,360的面试跟一般公司不太一样,他们喜欢一个点深挖
#360公司##面试题目##校招#
全部评论
这啥是时候面的啊
点赞 回复 分享
发布于 2019-09-04 14:12
你咋不说你面试前就收到了“您未能通过本轮面试筛选”这件事呢?
点赞 回复 分享
发布于 2019-09-04 14:12
你的预感很正确,听说转正的基本就一个名额。
点赞 回复 分享
发布于 2019-09-04 14:30

相关推荐

2 13 评论
分享
牛客网
牛客企业服务