华为暑期实习通用软开一面

1、 自我介绍

2、 选一个项目进行介绍(webserver)

3、 项目的亮点

答:实现了一个proactor模型,和一个半同步/半反应堆的线程池。实现了小根堆的时间堆处理非活动连接

4、 介绍一下小根堆的原理:

答:堆是用数组实现的完全二叉树,没有使用指针,根据数组的下标构建堆。小根堆的根节点数据是最小的数据,每个节点的数据都比其子节点小。底层是一个数组,通过元素交换,形成小根堆。在stl中是优先级队列

5、 epolloneshot如何确保一个套接字只会被一个线程处理?

答:epoll底层是红黑树和一个就绪队列(链表)。

如果某个socket注册了该标志,则其注册监听的事件在触发一次后再也不会触发,除非重新注册监听该事件类型。

当有epoll_wait()请求时,内核通过对epitem链表的遍历,获取事件发生的文件描述符信息,并返回给相应的应用程序。如果该文件描述符的EPOLLONESHOT标志被设置,那么在事件处理后,该文件描述符会被标记为不可用,并从epoll队列(就绪队列)中删除。注意,从就绪队列里删除则该fd不会被添加到

此时需要再次调用epoll_ctl()函数重新添加该文件描述符的事件。如果该文件描述符的EPOLLONESHOT标志未被设置,则在事件处理完毕后,该文件描述符会继续保持在epoll队列中等待下一次事件的到来。

6、 C++中的多态是怎么实现的?

答:父类有一个虚函数指针和虚函数表,如果子类也会有一个虚函数指针和虚函数表,如果子类重写了父类的虚方法,子类的虚函数表就会更新自己重写过的函数。在传入基类指针时,通过类首部的虚函数表指针找到该类自己的虚函数表,调用虚函数表中的对应方法即可。对于A的实例化,如a1,a2都指向的同一块虚函数表。

7、 C++中的static关键字

答:C/C++共有:

修饰全局变量,该变量只在同一文件中的函数可见

修饰函数,该函数只在同一文件中调用

修饰局部变量,该变量的值不会因为函数终止而销毁

C++独有:

修饰类的数据成员,该数据成员为所有类共有且只有一个实例。

静态成员函数只能访问静态成员变量和全局变量。因为非静态成员变量只有实例化后才能访问。

手撕:力扣第二题 两数相加

全部评论
面了多长时间啊
1 回复 分享
发布于 2023-05-25 22:55 北京
楼主是今天面的一面吗?base成都?
点赞 回复 分享
发布于 2023-05-25 23:20 四川
点赞 回复 分享
发布于 2023-05-26 00:36 四川
老哥面了多久?
点赞 回复 分享
发布于 2023-05-26 09:09 湖北
请问是今天面的吗?
点赞 回复 分享
发布于 2023-05-26 09:42 湖北

相关推荐

2024-12-06 10:50
门头沟学院 C++
SlovinG:重要的是实习所在的平台和能不能学到真东西,打杂的实习就没必要。 此外提醒你一句,不要向学校的老师寻求什么就业建议,这帮象牙塔里的老师哪里清楚外面市场的波谲云诡。
点赞 评论 收藏
分享
2024-12-18 20:04
已编辑
哈尔滨工程大学 算法工程师
中电 信号处理 21w
点赞 评论 收藏
分享
评论
4
52
分享
牛客网
牛客企业服务