追一科技-后台开发-一面

追一科技面经:nginx

 

时间:7.25晚上19:30面试

方式:电话一面安全

岗位:C++/GO后台开发工程师(20秋招提早批)服务器

时长:30分钟左右函数


1. 自我介绍spa

2. 介绍下单例模式线程

答:局部静态变量实现单例模式,在C++11中静态局部变量是线程安全的。(面试官但愿能答出:这里为何采用静态局部变量,怎么保证线程安全的)指针

3. 不一样进程访问静态变量是不是同一个实例?code

答:全局变量无论是否是静态的,在多进程模型下都是每一个子进程一份,互不影响,也就是说若是一个进程修改了这个变量的值,那只对该进程有效,其余子进程看不到修改后的值。(考察:进程的地址空间)
对象

4. 基类中new一个子类,讲下构造函数和析构函数的顺序?

答:先调用基类的构造函数,再调用子类的构造函数,析构函数调用顺序相反。(考察的是C++基础)

5. 讲下内存泄漏

答:new和delete成对使用,malloc和free成对使用;(考察的是C++基础)

6. 讲下野指针

答:野指针指向一个已删除的对象或 申请访问受限内存区域 的指针。好比delete后没有置空,free后没有置空,此时指针指向的就是垃圾内存,该指针就是野指针。(考察的是C++基础)

7. 介绍下TCP快重传

答:发送方只要一连收到三个重复确认就应当当即重传对方还没有收到的报文段,而没必要继续等待设置的重传计时器时间到期。(考察的是C++基础)

8. 讲下链表翻转

答:从原链表的头部一个一个取节点插入新链表的头部;

ListNode* ReverseList(ListNode*pHead){
    ListNode* prev=NULL;
    while(pHead)
    {
        ListNode* next=p->next;
        p->next= prev;
        prev =p;
        p= next;
    }
    return newh;
}

9. 讲下红黑树

答:R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每一个节点上都有存储位表示节点的颜色,能够是红(Red)或黑(Black)。

红黑树的特性:

(1)每一个节点或者是黑色,或者是红色。

(2)根节点是黑色。

(3)每一个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点

(4)若是一个节点是红色的,则它的子节点必须是黑色的。

(5)从一个节点到该节点的子孙节点的全部路径上包含相同数目的黑节点。

10. 红黑树左旋

答:红黑树的左旋操做

假设待左旋的结构中,P为父节点,S为孩子节点。左旋操做后,S节点代替P节点的位置,P节点成为S节点的左孩子,S节点的左孩子成为P节点的右孩子。

红黑树的右旋操做。

假设待右旋的结构中,P为父节点,S为孩子节点。右旋操做后,S节点代替P节点的位置,P节点成为S节点的右孩子,S节点的右孩子成为P节点的左孩子。

11. 讲下不一样进程怎么访问共享内存的?

答:一个进程建立共享内存区域,而后把共享区域的地址连接到本进程的地址空间;其余进程若访问该共享内存,只需把共享内存区域的地址连接到进程的地址空间便可。

12. 假如进程A和进程B访问共享内存(包括信号量),若是进程A和进程B异常退出,信号量是否还在?

答:我理解的是还在,只要代码里没有调用信号量的销毁函数,那信号量就一直在。

13. 不一样进程是否能够监听同一个端口?怎么作到多个进程监听同一个端口的?

答:能够,好比nginx服务器中的多个worker进程监听同一个端口,

14. 当有个请求到达,多个进程之间怎么处理这个请求?

答:好比在nginx服务器中,当有请求到达时,多个worker进程先去竞争互斥锁,谁拿到互斥锁谁来处理这个请求。

相关文章
相关标签/搜索