A.单进程、多线程
B.多进程、单线程
C.单进程
D.以上都不是
此题为判断题(对,错)。
下面关于进程、线程的说法正确的是()。
A.进程是程序的一次动态执行过程。一个进程在其执行过程中,可以产生多个线程——多线程,形成多条执行线索
B.线程是比进程更小的执行单位,是在一个进程中独立的控制流,即程序内部的控制流。线程本身不能自动运行,栖身于某个进程之中,由进程启动执行
C.Java多线程的运行与平台相关
D.对于单处理器系统,多个线程分时间片获取CPU或其他系统资源来运行。对于多处理器系统,线程可以分配到多个处理器中,从而真正的并发执行多任务
A.避免CPU周期的浪费
B.可以提高效率
C.可以最大限度使用CPU资源
D.符合面向过程编程思想
在多进程系统中,为了避免两个进程并行处理所带来的问题,可以采用( )的处理方式。
A.多进程
B.多线程
C.多通道
D.多任务
北京旷视科技有限公司2月招聘面试题面试题面试官常问到的一些题目整理如下:问题 Q1:Python里面match()和search()的区别?可用的回答 :re模块中match(pattern,string,flags),检查string的开头是否与pattern匹配。re模块中research(pattern,string,flags),在string搜索pattern的第一个匹配值。问题 Q2:写爬虫使用多进程好,还是用多线程好?可用的回答 : IO密集型代码(文件处理、网络爬虫等), 多线程能够有效提升效率(单线程下有IO操作会进行IO等待,造成不必要的时间浪费,而开启多线程能在线程A等待时,自动切换到线程B,可以不浪费CPU的资源,从而能提升程序执行效率)。 在实际的数据采集过程中,既考虑网速和响应的问题,也需要考虑自身机器的硬件情况,来设置多进程或多线程 问题 Q3:有哪些工具可以帮助查找错误或执行静态分析?可用的回答 : PyChecker是一个静态分析工具,可以检测Python源代码中的错误,并警告错误的风格和复杂性。 Pylint是另一种验证模块是否符合编码标准的工具。 auto-pep8工具也可以进行静态代码检查 问题 Q4: Tornado 的核心是什么?可用的回答 : Tornado 的核心是 ioloop 和 iostream 这两个模块, 前者提供了一个高效的 I/O 事件循环,后者则封装了 一个无阻塞的 socket 。 通过向 ioloop 中添加网络 I/O 事件,利用无阻塞的 socket, 再搭配相应的回调函数,便可达到梦寐以求的高效异步执行。 问题 Q5:大数据的文件读取?可用的回答 : 1. 利用生成器generator 2. 迭代器进行迭代遍历:for line in file 问题 Q6:Python中的反向索引是什么?可用的回答 :Python序列可以是正数和负数的索引。对于正索引,0是第一个索引,1是第二个索引,依此类推。对于负索引,( - 1)是最后一个索引,( - 2)是倒数第二个索引,依此类推。问题 Q7:提到Python中局部变量和全局变量的规则是什么?可用的回答 :局部变量:如果在函数体内的任何位置为变量赋值,则假定它是本地的。全局变量:仅在函数内引用的那些变量是隐式全局变量。问题 Q8:创建一个简单tcp服务器需要的流程?可用的回答 : 1.socket创建一个套接字 2.bind绑定ip和port 3.listen使套接字变为可以被动链接 4.accept等待客户端的链接 5.recv/send接收发送数据 问题 Q9:如何跨模块共享全局变量?可用的回答 :要在单个程序中跨模块共享全局变量,请创建一个特殊模块。在应用程序的所有模块中导入配置模块。该模块将作为跨模块的全局变量提供。问题 Q10:列举网络爬虫所用到的网络数据包,解析包?可用的回答 : 网络数据包 urllib、urllib2、requests 解析包 re、xpath、beautiful soup、lxml 算法题面试官常问到的一些算法题目整理如下(大概率会机考):算题题 A1:排序列表题目描述如下:Sort a linked list in O(n log n) time using constant space complexity.Example 1:Input: 4-2-1-3Output: 1-2-3-4Example 2:Input: -1-5-3-4-0Output: -1-0-3-4-5O (n log n) 用归并排序比较好。难点在于常量空间复杂度.暂不解决这个问题,再回顾下归并排序。归并排序的核心思路是分治,将大问题分成小问题,再将已经解决的小问题不断合并成一个解决方案。所以归并排序的话先分割,进行对半分割即可。_left = list:middle_right = listmiddle:分割成 _left 和 _right 后,要做的是归并。merge_sort(_left, _right)这里就归并用到底不做剪枝优化了。merge_sort的关键词是:1. _left 和 _right 分别挑剩余的最小的合并到一个集合里。2. 若 _left 耗尽,直接合并 _right。3. _right 同理。def merge_sort(_left, _right): _l_index = 0 _r_index = 0 _l_length = len(l) _r_length = len(r) while _l_i _l_l and _r_i _r_l: if l_l_i r_r_l: l_l_i _l_i += 1 else: r if _l_i = _l_l: extend _r if _r_i = _r_l: extend _l return result这是最原始的 split ,后面要扩展一下才能用。def split(list): _left = list:middle _right = listmiddle: return merge_sort(_left, _right)在初次分割之后,_left 和 _right 确实分成了两份,但都是未经过排序的,直接用merge_sort的话是不行的(这里展开思考的话,会想到另一种排序堆排序)。我们需要对_left和_right分别再次进行 分割-合并。def split(list): _left = split(list:middle) _right = split(listmiddle:) return merge_sort(_left, _right)写到这里还有点问题,这样会无限分割下去,在加一个判断用于结束递归。def split(list): if len(list) = 1: return list _left = split(list:middle) _right = split(listmiddle:) return merge_sort(_left, _right)元素=1个时就可以返回了。 1, 2, 4, 5 left right 1, 2 4, 5leftright leftright 1 2 4 5到这里不在分割 1 2 分别返回,然后执行了merge_sort(1, 2)merge_sort(4, 5)然后再返回.beat:84%测
下列关于线程叙述错误的是______。
A.线程也称为“轻量级进程”,任何进程都可以创建多个并发执行的进程
B.同一个进程内各线程可以访问整个进程所有的资源
C.Win 32应用程序通常是多线程的
D.Win 98将进程作为处理器调度对象,而把线程作为资源分配单位
下列说法中,错误的一项是______。
A.线程有其产生、存在和消亡的过程
B.一个进程可以创建多个线程
C.Java需要利用外部的线程支持库来实现多线程
D.在Java语言中支持多线程
怎么写能让多核CPU满载,也就是申请CPU多线程(不是任务多线程)
使用快车下载文件时,“文件分成n同时下载”就是常说的()。
A.单线程下载
B.单进程下载
C.多进程下载
D.多线程下载
在下列有关WindowsXP中进程与线程的叙述中,错误的是( )
A.进程是系统资源(除CPU)分配的基本单位
B.所有系统程序的进程均运行在内核模式,所有应用程序的进程运行在用户模式
C.线程的引入,有利于提高进程内程序执行的并发性,提高处理器的利用效率
D.有些进程是单线程的,有些进程是多线程的