北京紫光华宇软件股份有限公司5月招聘面试题162道2020526

下列关于线程的说法中,正确的是

A.一个线程一旦被创建,就立即开始运行

B.使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行

C.当运行状态的线程因为调用了yield()方法而停止运行,它一定被放在可运行线程队列的前面

D.当因等待对象锁而被阻塞的线程获得锁后,将直接进入运行状态


正确答案:B
解析:线程被创建后,如果调用start()方法,线程便处于就绪状态,即可执行状态,但并不一定立即得到执行。当调用了yield()方法之后,线程放在处于同一个优先级的可执行的线程队列的后面。当阻塞的线程获得锁后,将进入就绪状态,并不一定立即执行。


以下描述中,( )并不是多线程系统的特长。

A 利用线程并行地执行矩阵乘法运算。

B web服务器利用线程请求http服务

C 键盘驱动程序为每一个正在运行的应用配备一个线程,用来响应相应的键盘输入。

D 基于GUI的debugger用不同线程处理用户的输入、计算、跟踪等操作。


参考答案C


为应用程序开发人员上班Certkiller.com。您需要修改应用程序的代码。应用程序使用两个线程命名线程A和线程B.要完成执行之前线程开始执行线程B。您将如何完成这项任务?()

A.定义线程A在较低的优先级运行。

B.定义线程B在更高的优先级运行。

C.执行WaitCallback委托来同步线程。

D.调用线程A睡眠的方法

E.调用线程A自旋锁的方法


参考答案:C


下面关于进程、线程的说法正确的是()。

A.进程是程序的一次动态执行过程。一个进程在其执行过程中,可以产生多个线程——多线程,形成多条执行线索

B.线程是比进程更小的执行单位,是在一个进程中独立的控制流,即程序内部的控制流。线程本身不能自动运行,栖身于某个进程之中,由进程启动执行

C.Java多线程的运行与平台相关

D.对于单处理器系统,多个线程分时间片获取CPU或其他系统资源来运行。对于多处理器系统,线程可以分配到多个处理器中,从而真正的并发执行多任务


正确答案:ABCD


以下多线程程序的设计步骤,其中错误的是()

A.在主程序中创建线程对象;

B.调用线程对象的start函数来启动线程;

C.在Windows中注册一个现成;

D.由Thread类派生出一个线程类;


参考答案:C


北京紫光华宇软件股份有限公司5月招聘面试题面试题面试官常问到的一些题目整理如下:问题 Q1:什么是Python pass?可用的回答 :pass意味着,无操作的Python语句,或者换句话说,它是复合语句中的占位符,其中应该留有空白,并且不必在那里写入任何内容。问题 Q2:简单谈下GIL?可用的回答 : Python代码的执行由Python 虚拟机(也叫解释器主循环,CPython版本)来控制, Python 在设计之初就考虑到要在解释器的主循环中,同时只有一个线程在执行,即在任意时刻,只有一个线程在解释器中运行。 对Python 虚拟机的访问由全局解释器锁(GIL)来控制,正是这个锁能保证同一时刻只有一个线程在运行。 在多线程环境中,Python 虚拟机按以下方式执行: 1. 设置GIL 2. 切换到一个线程去运行 3. 运行: a. 指定数量的字节码指令,或者 b. 线程主动让出控制(可以调用time.sleep(0)) 4. 把线程设置为睡眠状态 5. 解锁GIL 6. 再次重复以上所有步骤 在调用外部代码(如C/C+扩展函数)的时候,GIL 将会被锁定, 直到这个函数结束为止(由于在这期间没有Python 的字节码被运行,所以不会做线程切换)。 问题 Q3:简述 三次握手、四次挥手的流程?可用的回答 : 三次握手: 初始状态:客户端A和服务器B均处于CLOSED状态,然后服务器B创建socket,调用监听接口使得服务器处于LISTEN状态,等待客户端连接。(后续内容用A,B简称代替) 1、A首先向B发起连接,这时TCP头部中的SYN标识位值为1,然后选定一个初始序号seq=x(一般是随机的), 消息发送后,A进入SYN_SENT状态,SYN=1的报文段不能携带数据,但要消耗一个序号。 2、B收到A的连接请求后,同意建立连接,向A发送确认数据,这时TCP头部中的SYN和ACK标识位值均为1,确认序号为ack=x+1, 然后选定自己的初始序号seq=y(一般是随机的),确认消息发送后, B进 入SYN_RCVD状态,与连接消息一样,这条消息也不能携带数据,同时消耗一个序号。 3、A收到B的确认消息后,需要给B回复确认数据,这时TCP头部中的ACK标识位值为1, 确认序号是ack=y+1,自己的序号在连接请求的序号上加1,也就是seq=x+1, 此时A进入ESTABLISHED状态,当B收到A的确认回复后,B也进入ESTABLISHED状态, 至此TCP成功建立连接,A和B之间就可以通过这个连接互相发送数据了。 四次挥手: 初始状态:客户端A和服务器B之间已经建立了TCP连接,并且数据发送完成,打算断开连接, 此时客户端A和服务器B是等价的,双方都可以发送断开请求,下面以客户端A主动发起断开请求为例。(后续内 容用A,B简称代替) 1、A首先向B发送断开连接消息,这时TCP头部中的FIN标识位值为1,序号是seq=m,m为A前面正常发送数据最后一个字节序号加1得到的, 消息发送后A进入FNI_WAIT_1状态,FIN=1的报文段不能携带数据,但要消耗一个序号。 2、B收到A的断开连接请求需要发出确认消息,这时TCP头部中的ACK标识位值为1,确认号为 ack=m+1, 而自己的序号为seq=n,n为B前面正常发送数据最后一个字节序号加1得到的, 然后B进入 CLOSE_WAIT状态,此时就关闭了A到B的连接, A无法再给B发数据,但是B仍然可以给A发数据,同时B端通知上方应用层,处理完成后被动关闭连接。 然后A收到B的确认信息后,就进入了 FIN_WAIT_2状态。 3、B端应用层处理完数据后,通知关闭连接, B向A发送关闭连接的消息,这时TCP头部中的FIN和ACK标识位值均为1, 确认号ack=m+1,自己的序号为seq=k,消息发送后B进入LACK_ACK状态。 4、A收到B的断开连接的消息后,需要发送确认消息, 这是这时TCP头部中的ACK标识位值为1,确认号ack=k+1,序号为m+1(因为A向B发送断开连接的消息时消耗了一个消息号), 然后A进入TIME_WAIT 状态,若等待时间经过2MSL后,没有收到B的重传请求, 则表明B收到了自己的确认,A进入CLOSED状态, B收到A的确认消息后则直接进入CLOSED状态。至此TCP成功断开连接。 问题 Q4:什么是Python pass?可用的回答 :pass意味着,无操作的Python语句,或者换句话说,它是复合语句中的占位符,其中应该留有空白,并且不必在那里写入任何内容。问题 Q5:如何解释Python?可用的回答 :Python语言是一种解释语言。Python程序直接从源代码运行。它将程序员编写的源代码转换为中间语言,再次转换为必须执行的机器语言。问题 Q6:描述数组、链表、队列、堆栈的区别?可用的回答 : 数组与链表是数据存储方式的概念,数组在连续的空间中存储数据,而链表可以在非连续的空间中存储数据; 队列和堆栈是描述数据存取方式的概念,队列是先进先出,而堆栈是后进先出; 队列和堆栈可以用数组来实现,也可以用链表实现。 问题 Q7:什么是PYTHONPATH?可用的回答 :它是导入模块时使用的环境变量。每当导入模块时,也会查找PYTHONPATH以检查各个目录中是否存在导入的模块。解释器使用它来确定要加载的模块。问题 Q8:scrapy和requests的使用情况?可用的回答 : requests 是 polling 方式的,会被网络阻塞,不适合爬取大量数据 scapy 底层是异步框架 twisted ,并发是最大优势 问题 Q9:如何在Flask中访问会话?可用的回答 :会话基本上允许您记住从一个请求到另一个请求的信息。在一个Flask中,它使用签名cookie,以便用户可以查看会话内容并进行修改。如果只有密钥Flask.secret_key,则用户可以修改会话。问题 Q10:什么是socket?简述基于tcp协议的套接字通信流程?可用的回答 : 套接字: 也称为BSD套接字,是支持TCP/IP的网络通信的基本操作单元, 可以看做是不同主机之间的进程进行双向通信的端点,

在Java中,负责对字节代码解释执行的是( )。

A.垃圾回收器

B.虚拟机

C.编译器

D.多线程机制


正确答案:B
解析: 本题考查Java语言的虚拟机。Java语言的执行模式是半编译半解释型。Java编写好的程序首先由编译器转换为标准字节代码,然后由Java虚拟机去解释执行。字节代码是—种二进制文件,但不能直接在操作系统,上运行,可看作是虚拟机的机器码。虚拟机把字节码程序与各操作系统和硬件分开,使Java程序独立于平台。Java中的虚拟机是非常重要的概念;是Java语言的撕扎掌握后有助于理解Java语言的实现。


Window98虽然只支持单处理器结构的PC机,但它通过提供虚拟机、进程和线程等机制能很好地支持多道程序在PC机中运行。下面是关于Window98处理器管理功能的一些叙述:

Ⅰ.在保护模式下,虚拟机的个数随着运行的Windows应用程序个数的增加而增加

Ⅱ.Windows虚拟机分为两种基本类型:系统虚拟机和DOS虚拟机

Ⅲ.进程(线程)的优先级是动态的,一个进程(线程)在就绪队列中等待的时间越长,其优先级就会越高

Ⅳ.所有的Windows应用程序都是多线程的

叙述错误的是______。

A.Ⅰ和Ⅱ

B.Ⅱ和Ⅲ

C.Ⅲ和Ⅳ

D.Ⅰ和Ⅳ


正确答案:D
解析:在保护模式下,MSDOS虚拟机为每一个DOS应用程序提供一个单独的虚拟机,而System虚拟机中所有Windows应用程序都在其中运行;Windows应用程序不一定都是多线程的。


有如下C语言程序针对上述程序,下列叙述中哪一个是正确的()

A.线程th_f运行后主动退出

B.线程th_f运行后等待一个特定的线程退出

C.线程th_f运行后主动释放CPU给其他线程

D.线程th_f运行后进入等待态


正确答案:A


下列关于线程状态和生命周期的说法不正确的是

A.一个线程组内不仅可以包含线程,还可以包含其他线程组

B.线程在终止状态可以调用start()方法使它可运行

C.在Java中,最顶层的线程组是main

D.线程执行过程中,有一个更高优先级的线程进入可运行状态,这个线程立即被调度执行,当前线程占有的CPU被抢占


正确答案:B
解析:终止状态是线程执行结束的状态,没有方法可以改变它。


关于线程,下列叙述正确的是______。

A.线程本身也是一个程序,它自己能独立运行

B.多个线程中,每一个线程都有自己独立的一块内存空间、一组系统资源

C.线程就是一个程序内部的顺序控制流

D.多线程就是多次启动一个程序


正确答案:C
解析:线程本身并不是程序,而是一个程序内部的顺序控制流,它自己本身并不能运行,必须在程序中运行,所以选项A错误。对于进程而言,每个进程都有自己独立的一块内存空间、一组系统资源。而线程不同于进程,多个线程共享一块内存空间和一组系统资源,所有选项B错误。多线程指在一个程序中可以定义多个线程并同时运行它们,每个线程可以执行不同的任务,即在同一个程序中多行语句同时执行,而不是多次启动一个程序,所以选项D错误。多线程是针对一个程序而言的,代表着一个程序内部可以同时执行的线程个数。只有选项C叙述正确。

更多 “北京紫光华宇软件股份有限公司5月招聘面试题162道2020526” 相关考题
考题 Windows 98虽然只支持单处理器结构的PC机,但它通过提供虚拟机、多进程和多线程等机制能很好地支持多道程序在PC机中运行。下面是关于Windows 98处理器管理功能的一些叙述:Ⅰ.在保护模式下,虚拟机的个数随着运行的Windows应用程序个数的增加而增加Ⅱ.Windows虚拟机分为两种基本类型:系统虚拟机和DOS虚拟机Ⅲ.进程(线程)的优先级是动态的,一个进程(线程)在就绪队列中等待的时间越长,其优先级就会越高Ⅳ.所有的Windows应用程序都是多线程的其中错误的两个叙述是( )。A.Ⅰ和ⅡB.Ⅱ和ⅢC.Ⅲ和ⅣD.Ⅰ和Ⅳ正确答案:D解析:动态优先级是指在一个进程的生命期内,给它指定的优先级会随情况变化而变化,比如,随着一个进程实际占有CPU总时间的增长,就适当地降低它的优先级。Windows应用程序支持多线程的,但并不是所有的Windows应用程序都是多线程的。

考题 下面四个选项中,对线程同步的目的描述正确的有哪些?()A、锁定资源,使同一时刻只有一个线程去访问它,防止多个线程操作同一个资源引发错误B、提高线程的执行效率C、让线程独占一个资源D、让多个线程同时使用一个资源正确答案:A,B

考题 在Java中,负责对字节代码解释执行的是( )。A.垃圾回收器B.虚拟机C.编译器S在Java中,负责对字节代码解释执行的是( )。A.垃圾回收器B.虚拟机C.编译器D.多线程机制正确答案:B本题考查Java语言的虚拟机。Java语言的执行模式是半编译半解释型。Java编写好的程序首先由编译器转换为标准字节代码,然后由Java虚拟机去解释执行。字节代码是-种二进制文件,但不能直接在操作系统上运行,可看做虚拟机的机器码。虚拟机把字节码程序与各操作系统和硬件分开,使Java程序独立于平台。Java中的虚拟机是非常重要的概念,是Java语言的基础,掌握后有助于理解Java语言的实现。

考题 下列说法正确的是______。A.即使高优先级的线程调用slee()方法睡眠时,低优先级的线程也没有办法获得处理器资源B.一个暂时终止运行的线程,在排除了终止原因后直接运行C.一个正在执行的线程使用yield()方法将处理器让出给同优先级的其他线程D.调用suspend()方法暂停自己的线程,也可以自行调用resume()方法恢复自身正确答案:C解析:线程调用sleep()方法后,相同优先级的线程和低优先级的线程都将获得可执行的机会,所以选项A错误。yield()方法使当前线程暂停执行,以允许其他线程执行。调用yield()方法后,线程仍处于可运行状态,此时,可以选择其他已进入可运行状态且优先级相同的线程执行。若无同优先级线程,当前线程会继续执行,所以选项C正确。调用suspend()方法使线程暂停执行,由可运行状态切换到不可运行状态,要想恢复执行必须由其他线程而非自身来调用resume()方法,所以选项B和D错误。

考题 单选题在Java中,负责对字节代码解释执行的是()A垃圾回收器B虚拟机C编译器D多线程机制正确答案:D解析:暂无解析

考题 为应用程序开发人员上班Certkiller.com。 您需要修改应用程序的代码。 应用程序使用两个线程命名线程A和线程B.要完成执行之前线程开始执行线程B。 您将如何完成这项任务?()A、定义线程A在较低的优先级运行。B、定义线程B在更高的优先级运行。C、执行WaitCallback委托来同步线程。D、调用线程A睡眠的方法E、调用线程A自旋锁的方法正确答案:C

考题 下列关于Java语言中线程的说法正确的有()。A、支持多线程机制B、一个线程创建并启动后,它将执行自己的run()方法,如果通过派生Thread类实现多线程,则需要在子类中重新定义run()方法,把需要执行的代码写入run()方法中;如果通过实现Runnable接口实现多线程,则要编写接口中的抽象方法----run()方法的方法体C、要在程序中实现多线程,必须导入类:importjava.lang.Thread;D、一个程序中的主类不是Thread的子类,该类也没有实现Runnable接口,则这个主类运行不能控制主线程的休眠正确答案:A,B,C

考题 Java中,线程必须属于一个进程,线程是程序运行中的( )。A.字节流B.字符流C.对象流D.执行流正确答案:DD。【解析】一个进程的执行过程中会产生多个线程即执行流。

考题 以下哪些问题是Python的GIL导致的?()A、无法创建系统级别的线程B、GIL导致了线程间的不公平调度C、计算密集型程序会因为GIL而变得更慢D、IO密集型程序也无法使用多线程模型加速正确答案:B,C

考题 单选题关于线程以下说法错误的有()A 新起一个线程,都要使用Thread.setName(“…”)设置线程名B 在JDK1.5或更新的版本中,若字符串拼接发生在单线程环境,使用StringBufferC 对多线程访问的变量、方法,必须加锁保护,避免出现多线程并发访问引起的问题D 线程使用时,要在代码框架中使用线程池,避免创建不可复用的线程;禁止在循环中创建新线程,否则会引起JVM资源耗尽正确答案:A解析:暂无解析