腾讯WXG后台开发实习一面凉经
腾讯WXG后台开发实习一面凉经
WXG春招实习生面试,方向软件后台开发方向,二十分钟后凉了。 面试官和蔼可亲,我说不会的他就不问了……然后当天下午就被其他部门捞了……一、基础知识
一开始个人介绍,然后开始问基础知识,由计网和操作系统和C艹组成:
加粗为我个人不懂的,日后强化。
1,多线程和多进程的实现。
2,守护进程的实现。。。
3,网络编程是否熟悉,答socket,问我linux系统的socket,不知道(Linux相关都不知道)。。。
4,TCP的time-wait状态和作用。
5,服务器每个网络连接用什么标识(传输层端口,网络层IP,数据链路层MAC)。
6,多个进程本机内如何通信。
7,对内核态有了解吗。。。
8,I/O的多路复用(答了很浅的,复盘的时候发现原理很复杂,面试官估计想知道底层)
9,IP连接的最大数量。
10,左值和右值是什么(随便答了很浅的。。。)
11,C++多线程。。。
12,C++新特性。。。
12,协程。。。
二、easy算法题
只需要保存头结点,将尾节点的next指向头结点。然后返回新的头结点即第K个节点。
题目是很简单,我很快就有了思路但是指针操作失误越界了。。。。。。。。。。最后还花了很长时间才搞好,于是做完这题直接打出“时间差不多了”这张牌,GG
三、总结
计网操作系统这些都是八股文,看一下就行。
主要需要加强了解的:Linux、多线程、C++新特性。
算法这个自己脑子抽风,这都不算算法题,最基础的指针操作都炸了,自认倒霉。
四、部分答案补充
守护进程(Daemon)是脱离于终端并且在后台运行的进程:
特点是独立于控制终端、周期性地执行某种任务或等待处理某些发生事件,不会随终端关闭而停止,没有控制终端,不能直接和用户交互,不受用户登录、注销的影响直到接受停止信息才会结束,且一般采用以d结尾的名字。
脱离终端是为了避免在执行的过程中的信息在终端上显示,并且进程也不会被任何终端所产生的终端信息所打断。很多守护进程在系统引导的时候启动,并且一直运行直到系统关闭。另一些只在需要的时候才启动,完成任务后就自动结束。
Linux 的大多数服务器就是用守护进程实现的。比如,Internet 服务器 inetd,Web 服务器 httpd 、读入缓输出机制的实现、ftp服务器(借助vsftpd实现),nfs服务器。
创建方法略(篇幅较长)。
内核态
当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核状态。此时处理器处于特权级最高的(0级)内核代码。当进程处于内核态时,执行的内核代码会使用当前的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户态。即此时处理器在特权级最低的用户代码中运行。
用户态切换到内核态的3种方式:a.系统调用 b.异常 c.外围设备的中断
a.系统调用
这是用户进程主动要求切换到内核态的一种方式,用户进程通过系统调用申请操作系统提供的服务程序完成工作。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,该中断是程序人员自己开发出的一种正常的异常(软中断)。
b.异常
当CPU在执行运行在用户态的程序时,发现了某些事件不可知的异常,这会触发由当前运行进程切换到处理此异常的内核相关程序中,也就到了内核态,比如缺页异常(硬中断)。
c.外围设备的中断
当外围设备完成用户请求的操作之后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条将要执行的指令
转而去执行中断信号的处理程序,如果先执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了有用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。