博智林公司面试问题

上周末去碧桂园旗下的机器人公司面试,本来是约下午的,HR知道我提前到了,说上午人也不多,临时将时间改成上午。当时正在佛山闲逛,急匆匆赶过去,到了HR说前面还有好几个人,上午不一定能面试到我,只好先赶回酒店退房,又赶回碧桂园。总算是赶上上午最后一个面试,面了大概半个小时,接近到12点30。一面感觉还可以,到楼下领完快餐,刚吃完又通知二面,还是技术面。正好赶上中午时间,状态不好,可能由于我是最后一个,所以问的问题比较多,而且面试官问的问题也很有深度,答得不好,算是总结一下吧。其实下面的每个问题都可以用一篇blog展开来写,笑哭。

1、定时器与线程的区别

线程包含上下文管理;定时器基于软中断实现,不带上下文管理,其本质是事件或者消息循环。定时器可以与线程绑定。其实要回答好这个问题不是很容易,需要了解操作系统如何描述线程和进程的,涉及到资源及调度的问题。

线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。

线程是独立调度和分派的基本单位。

软件定时器其本质实际上是在消息循环中处理WM_TIMER消息,而WM_TIMER消息在消息队列中是一个低级别的消息,所以定时器并不能完全保证处理时间间隔的准确性。另外,Timer占用的是主线程的资源,看似并行实际上是串行,所以窗体的消息队列一旦堵塞,就会造成系统假死或者运行缓慢,这对于UI来说几乎是无法忍受的。 

多个线程是“同时”执行的多个任务;定时可以看作是在本线程内插入的任务。 
如果需要多个任务同时执行,就要用多线程;如果需要每隔一段时间做某件事就用定时。多线程相对复杂一些,占用系统资源略多一些,所以如果能不用多线程时尽量不用。

 

线程和进程

线程:线程是操作系统能够进行运算调度的最小单位。进程被包含在进程中,是进程中实际处理单位。一条线程就是一堆指令集合。

一条线程是指进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

     优点:共享内存,I/O操作时候,创造并发操作

     缺点:抢占资源(相当于建人)

进程:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

   优点:同事利用多个CPU,能够同时进行多个操作

   缺点:耗费资源(重新开辟内存空间相当于建房子)

进程不是越多越好,CPU个数 == 进程个数

线程也不是越多越好,具体案例具体分析,请求上下文切换耗时

进程和线程的目的:提高执行效率

计算机最小的任务执行单元:线程

I/O操作不占用CPU时间:

       1、I/O密集型(不用CPU)---》多线程

       2、计算机密集型(用CPU)-----》多进程

       3、存在大量且不需要CPU操作时------》协程  

2、如何将一个进程放到后台,需要关闭什么信号;

把任务放置到后台运行,一般使用nohup &处理,但是对于系统在这个过程中关闭了什么信号,答不上来。

其实这个问题包含linux进程管理的内容,问这个问题就是问如何让进程在后台稳定运行。

https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。所以为了让进程在后台稳定运行需要关闭hangup 信号。

3、使用过ioselect吗?解释下原理。

 

4、MQTT的优缺点和使用场景;

 

5、qt使用MVD模型,那么MVC与MVD有什么区别,什么场景下使用?

 

6、grpc的本质

7、C++ 11有哪些新特性,使用过哪些?

8、对设计模式有了解吗,能说出几个设计模式?现场能否写个单例模式?

9、描述下TCP的握手过程和挥手过程?对比TCP和UDP协议的异同,为什么TCP是可靠传输。

10、QT信号与槽的优缺点是什么?一个信号可以连接多个槽吗?一个槽可以连接多个信号吗?参数个数不一致的信号与槽可以连接吗?

 

你可能感兴趣的:(博智林公司面试问题)