多线程常见的问答题

关于多线程的笔试面试题 关于多线程方面的笔试面试题 阅读详情

麻麻说转载要注明出处:http://blog.youkuaiyun.com/morewindows/article/details/7392749,(经过本人整理)

一.概念性问答题

第一题:线程的基本概念、线程的基本状态及状态之间的关系?

 线程是进程的执行单位,又称为轻量级进程,线程只拥有一些必须的基本资源,线程共享进程的资源:如地址空间,内存,等等,线程是操作系统调度的基本单位,可以并发执行。线程的基本状态有:运行,阻塞,就绪。从就绪态转到运行态,从运行态转到阻塞态,从运行态到就绪态,从阻塞态到就绪态。Linux下创建一个线程使用的是pthread_create(pthread_t &id, pthread_attr_t *attr, void *(*begin_thread)(void*),void *param).

第二题:线程与进程的区别?

      线程和进行的区别有:

1、线程是程序执行的基本单位,线程是操作系统调度的基本单位。

2、线程的调度和切换比进程要容易的多。

3、线程只拥有一些需要执行的基本资源,进程拥有大部分的资源,如文件,地址空间等等。

4、进程之间不共享地址空间,线程之间共享地址空间

第三题:多线程有几种实现方法,都是什么?(在网上收到的都是java实现多线程的两种方法)

Linux创建线程函数的函数名为pthread_create;

 多线程的实现方法有两种:

1、用户级线程:操作系统提供一个库,所有关于多线程的操作都是在用户态下进行的,典型的如Soloris。为用户提供一个简明的同步并行编程环境,加入原文线程库将用户的同步请求转化成对操作系统的异步请求,用户级线程的调度算法和调度过程全部由用户自行选择和确定,由用户级线程库实现,与操作系统内核无关,因而不需操作系统内核的特殊支持,用户级线程的调度算法只进行线程上下 文切换而不进行处理机切换,且其线程上下文切换是在内核不参与的情况下进行的,即线程上下文切换只是在用户栈、用户寄存器等之间进行切换,不涉及处理机的状态,无运行模式的切换开销。新线程通过程序调用指针的变化使得程序计数器变化而得以执行,因而系统开销小。不能实现进程内线程在多处理机上真正并行运行。如果系统拥有多个处理机而操作系统的调度单位是进程,无法感知进程内多线程存在,因而无法使用户进程在多处理机上同时运行

2、内核级线程:操作系统本身实现了多线程,典型的如windows NT。可以支持进程内多线程在多处理机上真正并行执行;可以支持进程内多线程在多处理机上真正并行执行;核心级线程不会出现进程处于阻塞或等待状态,而线程处于执行状态的情况,核心级线程比用户级线程开销要大一些,因为核心级线程的管理都由内核程序进行,需要运行模式的切换。

第四题:多线程同步和互斥有几种实现方法,都是什么?

1、互斥量

Linux环境下使用pthread_mutex_t数据类型表示互斥量,

使用pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr *restrict attr)进行初始化,

加锁有两种pthread_mutex_lock(pthread_mutex_t *restrict mutex);pthread_mutex_trylock(pthread_mutex_t *restrict mutex);

释放锁为pthread_mutex_unlock(pthread_mutex_t *restrict mutex);

2、读写锁

        linux下使用pthread_rwlock_t表示读写锁,
初始化为pthread_rwlock_init(pthread_rwlock_t *restrict rwlock, const pthread_rwlockattr_t *restrict attr);
释放锁为pthread_rwlock_destroy(pthread_rwlock_t *rwlock);
获取读锁为pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock);
获取写锁为pthread_rwlock_wrlock(pthread_rwlock_t *rwlock);pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock);
释放锁为pthread_rwlock_unlock(pthread_rwlock_t *rwlock);

3、信号量

sem_t

4、条件变量

pthread_cond_t

第五题:多线程同步和互斥有何异同,在什么情况下分别使用他们?举例说明。

  同步包含互斥,互斥更强烈一些,只能有一个线程在访问某个共享资源,同步强调多个线程的合作。

二.选择题

第一题(百度笔试题):

以下多线程对int型变量x的操作,哪几个不需要进行同步: 
A. x=y;      B. x++;    C. ++x;    D. x=1;

 B,C放一块不需要同步

第二题(阿里巴巴笔试题)

多线程中栈与堆是公有的还是私有的

A:栈公有, 堆私有

B:栈公有,堆公有

C:栈私有, 堆公有

D:栈私有,堆私有

 

三.综合题

第一题(台湾某杀毒软件公司面试题):

在Windows编程中互斥量与临界区比较类似,请分析一下二者的主要区别。

 临界区不能用于进程间同步, 它不属于内核对象, 所以速度比较快
互斥量可以用于进程间同步, 属于内核对象, 速度较慢

第二题:

一个全局变量tally,两个线程并发执行(代码段都是ThreadProc),问两个线程都结束后,tally取值范围。

inttally = 0;//glable

void ThreadProc()

{

       for(inti = 1; i <= 50; i++)

              tally += 1;

}

 

第三题(某培训机构的练习题):

子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。

 

第四题(迅雷笔试题):

编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。

 

第五题(Google面试题)

有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD。初始都为空。现要让四个文件呈如下格式:

A:1 2 3 4 1 2....

B:2 3 4 1 2 3....

C:3 4 1 2 3 4....

D:4 1 2 3 4 1....

请设计程序。

 

下面的第六题与第七题也是在考研中或是程序员和软件设计师认证考试中的热门试题。

第六题

生产者消费者问题

这是一个非常经典的多线程题目,题目大意如下:有一个生产者在生产产品,这些产品将提供给若干个消费者去消费,为了使生产者和消费者能并发执行,在两者之间设置一个有多个缓冲区的缓冲池,生产者将它生产的产品放入一个缓冲区中,消费者可以从缓冲区中取走产品进行消费,所有生产者和消费者都是异步方式运行的,但它们必须保持同步,即不允许消费者到一个空的缓冲区中取产品,也不允许生产者向一个已经装满产品且尚未被取走的缓冲区中投放产品。


第七题

读者写者问题

这也是一个非常经典的多线程题目,题目大意如下:有一个写者很多读者,多个读者可以同时读文件,但写者在写文件时不允许有读者在读文件,同样有读者读时写者也不能写。

Java常问面试题——选择题和问答题 死锁是指两个或多个线程因争夺资源而造成的相互等待的状态,导致它们都无法继续执行。例如,线程 A 持有资源 1,等待资源 2,而线程 B 持有资源 2,等待资源 1。 阅读详情

相关推荐

基于Python爬虫的新闻热点分析与挖掘

本文介绍了基于Python爬虫的新闻热点分析与挖掘方法,主要包括数据收集、预处理、热点分析和可视化四个部分。首先通过爬虫抓取新浪新闻数据,利用文本清洗和存储技术进行数据预处理;接着采用TF-IDF和LDA算法进行关键词提取与主题建模;最后通过词云图和主题分布图实现数据可视化。该方法能有效识别新闻热点,为信息筛选和决策提供支持。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1545

iOS面试题8

iOS面试题8 1.多线程中栈与堆,分别是公有还是私有的(C) A.栈公有,堆私有 B.栈公有,堆公有 C.栈私有,堆公有 A.栈公有,堆私有 【解释】 一般来说栈是私有的,堆是公有的;但是可以为特定的线程创建私有的堆 在多线程环境下,每个线程拥有一个栈和一个程序计数器。栈和程序计数器用来保存线程的执行历史和线程的运行状态,是线程私有的资源。其他的资源(比如

Pandakingli的博客 684

FortiOS路径遍历漏洞CVE-2022-41328实战复现:从环境搭建到漏洞利用全记录

本文深入解析FortiOS路径遍历漏洞CVE-2022-41328,从漏洞背景、影响范围到技术原理进行全面剖析。提供详细的漏洞复现环境搭建步骤和实战利用方法,并给出官方修复方案与临时缓解措施,帮助企业有效防御此类防火墙漏洞风险。

weixin_30485379的博客 523

java面试题/认证答辩 ---多线程

Fuly的博客 833

大模型推理中Prefill与Decode、KV Cache三者说明

Prefill 阶段对输入 Prompt 并行编码,一次性构建KV Cache,属于计算密集型任务。Decode 阶段逐 token 迭代生成,复用KV Cache避免重复计算,属于显存带宽密集型任务。KV Cache是自回归推理的核心基石,用显存换时间,实现两阶段衔接与高效生成。PD 分离通过任务解耦、异构硬件、异步调度、独立批处理,解决传统一体化推理的资源冲突与利用率低下问题,是当前云端大模型推理服务的主流工程优化方向。

a486259的博客 1489

实战六十四:基于机器学习朴素贝叶斯的豆瓣Top250影评的情感分析与预测 附完整源码和数据

实战六十四:基于机器学习朴素贝叶斯的豆瓣Top250影评的情感分析与预测 附完整源码和数据

1564

多线程笔试面试概念问答

题目转自http://blog.youkuaiyun.com/morewindows/article/details/7392749 第一题:线程的基本概念、线程的基本状态及状态之间的关系? 线程,有时称为轻量级进程,是CPU使用的基本单元;它由线程ID、程序计数器、寄存器集合和堆栈组成。它与属于同一进程的其他线程共享其代码段、数据段和其他操作系统资源(如打开文件和信号)。 线程有四种状态:新生

wolenski的专栏 5万+

华为OD机试 - 不含101的数(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。小明在学习二进制时,发现了一类不含101的数,也就是:现在给定一个正整数区间,请问这个区间内包含了多少个不含101的数?输入的唯一一行包含两个正整数。输出的唯一一行包含一个整数,表示在区间内一共有几个不含101的数。8 1668 → “1000”

学Java,找哪吒 1250

在多线程中体会堆和栈的区别

在多线程中体会堆和栈的区别  (2010-01-06 08:50:38) 转载▼ 标签:  c   多线程   内存管理   堆栈分配区别   it      最初涉及多线程程序涉及的时候经常会出现一些令人难以思议的事情,用堆和栈分配一个变量可能在以后的执行中产生意想不到的结果,而这个结果的表现

boshuzhang的专栏 5770

提取游戏音频文件.bnk

bnk其实是一种对音频的加密方式,一个.bnk文件中通常包含了多个语音文件,一般可以使用Wwise-Unpacker来解码.bnk格式文件该工具命名没有规律,需要手动整理文件名。市面上很多的游戏都把音频文件打成.bnk文件(比如永劫无间),用这种方式可以将你想要的游戏的音频都提取出来,本文内容仅供自己娱乐。

类人_猿的博客 8749

Android软键盘系统深度解析:架构、原理与实现

Android软键盘系统深度解析:架构与实现原理 本文系统剖析了Android软键盘的核心工作机制。作为系统级输入服务,软键盘具有双重属性:既是可安装的独立应用,又深度集成于系统框架中。文章详细解读了软键盘的系统架构,包括其与InputMethodManagerService(IMMS)和WindowManagerService(WMS)的交互机制,以及通过InputConnection实现的跨进程通信流程。同时分析了输入法窗口的特殊管理策略、布局调整模式,并深入探讨了输入预测引擎的实现原理,包括词典加载、

保持专注,保持热爱 115

多线程经典面试题

多线程在笔试面试中经常出现,下面列出一些公司的多线程笔试面试题。首先是一些概念性的问答题,这些是多线程的基础知识,经常出现在面试中的第一轮面试(我参加2011年腾讯研究院实习生招聘时就被问到了几个概念性题目)。然后是一些选择题,这些一般在笔试时出现,虽然不是太难,但如果在选择题上花费大多时间无疑会对后面的编程题造成影响,因此必须迅速的解决掉。最后是综合题即难一些的问答题或是编程题。这种题目当然是最

jjj19891128的专栏 5万+

用 SAP XCO XLSX 模块优雅读 Excel:坐标、选择模式与实战案例全解析

SAP ABAP Cloud 中的 XCO XLSX 模块为 Excel 文件处理提供了官方解决方案。文章介绍了三个核心概念:通过 XCO_CP_XLSX=>DOCUMENT 获取文档句柄;使用 CL_XCO_XLSX_COORDINATE 坐标系统定位单元格;利用 Selection Pattern 精确读取数据区域。这些功能在 RAP 批量导入等业务场景中尤为实用,相比传统方案更加简洁可靠。文章还分享了真实项目中的最佳实践,如动态列定位和相对偏移技巧,帮助开发者构建更健壮的 Excel 导入逻辑。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 193

多线程面试题

多线程在笔试面试中经常出现,下面列出一些公司的多线程笔试面试题。首先是一些概念性的问答题,这些是多线程的基础知识,经常出现在面试中的第一轮面试(我参加2011年腾讯研究院实习生招聘时就被问到了几个概念性题目)。然后是一些选择题,这些一般在笔试时出现,虽然不是太难,但如果在选择题上花费大多时间无疑会对后面的编程题造成影响,因此必须迅速的解决掉。最后是综合题即难一些的问答题或是编程题。这种题目当然是最

Linux学习 750

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

秒杀多线程系列

第一篇    多线程笔试面试题汇总       多线程在笔试面试中经常出现,下面列出一些公司的多线程笔试面试题。首先是一些概念性的问答题,这些是多线程的基础知识,经常出现在面试中的第一轮面试(我参加2011年腾讯研究院实习生招聘时就被问到了几个概念性题目)。然后是一些选择题,这些一般在笔试时出现,虽然不是太难,但如果在选择题上花费大多时间无疑会对后面的编程题造成影响,因此必须迅速的解决

cc198877的专栏 883

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

1.《秒杀多线程第一篇 多线程笔试面试题汇总》_答案

第一篇    多线程笔试面试题汇总     多线程在笔试面试中经常出现,下面列出一些公司的多线程笔试面试题。首先是一些概念性的问答题,这些是多线程的基础知识,经常出现在面试中的第一轮面试(我参加2011年腾讯研究院实习生招聘时就被问到了几个概念性题目)。然后是一些选择题,这些一般在笔试时出现,虽然不是太难,但如果在选择题上花费大多时间无疑会对后面的编程题造成影响,因此必须迅速的解决掉。最后是

gmaker2020的专栏 608

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

多线程面试题系列(1):多线程笔试面试题汇总

第一篇 多线程笔试面试题汇总 多线程在笔试面试中经常出现,下面列出一些公司的多线程笔试面试题。首先是一些概念性的问答题,这些是多线程的基础知识,经常出现在面试中的第一轮面试(我参加2011年腾讯研究院实习生招聘时就被问到了几个概念性题目)。然后是一些选择题,这些一般在笔试时出现,虽然不是太难,但如果在选择题上花费大多时间无疑会对后面的编程题造成影响,因此必须迅速的解决掉。最后...

weixin_34043301的博客 262

多线程面试(2)

系列前言     本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些其它IT公司如百度,阿里巴巴的笔试面试题目,因此具有很强的针对性。系列中不但会详细讲解多线程同步互斥的各种“招式”,而且会进一步的讲解多线程同步互斥的“内功心法”。有了“招式”和“内功心法”,相信你也能对多线程挥洒自如,在笔试面试中顺利的秒杀多线程试题。               -----

愿世界和平的IT劝退师 328

Java面试题汇总 (一)

Java面试题汇总 (一)一,基础题二,问答题三,算法题 一,基础题 常见的Java问题 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个...

kyl282889543的博客 408

java接口添加时会出现并发吗_北京科蓝java笔试题及答案

选择题String s = new("helloworld")创建几个String实例答:2个怎么定义一个接口interface B { void print();}http协议中,状态码500的意思为服务器内容报错A派生出子类B,B派生出子类C,并且在Java源代码中有如下声明1. A a0=new A();2. A a1 =new B();3. A a2=new C();编译会报错吗?都正确J...

weixin_30824577的博客 186

UML设计模式笔试题

软件工程师面试 UML设计模式笔试题 2011 - 08 - 15 更新 一、选择题(4分/题 共20分) a) 以下程序段执行后的K值为(A)。 int x = 20; y = 30; k = (x>y)?y:x; A.20   B.30  C.10  D.50 1.以下代码中,this只指(A) class bird{ int x,y;

Young_Xu的专栏 2942

目录

序 常见问答题 值类型和引用类型的区别 面向对象主要概念 什么是多线程 另类的string GC的工作原理 常见编程题 寻找失落的SubString 字符串倒序 数组合并 ...

weixin_33943347的博客 63

Java常见经典问答题

1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。2.JDK和JRE的区别是什么?

jcw的博客 7169

秒杀多线程第一篇 多线程笔试面试题汇总

系列前言    本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些其它IT公司如百度,阿里巴巴的笔试面试题目,因此具有很强的针对性。系列中不但会详细讲解多线程同步互斥的各种“招式”,而且会进一步的讲解多线程同步互斥的“内功心法”。有了“招式”和“内功心法”,相信你也能对多线程挥洒自如,在笔试面试中顺利的秒杀多线程试题。              -------------

MoreWindows Blog 21万+

ajax请求方式 问答题,java spring mvc面试题,九大常见问答题

上次已经为大家介绍过java spring面试题,八大常见问答题的主要内容了,今天再来为大家介绍一些其他的常见问答题,一起来了解一下吧。常见问答题如下:1、springmvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?问题:单例模式,在多线程访问时有线程安全问题解决方法:不要用同步,在控制器里面不能写字段2、springmvc中控制器的注解?@Controller:该注解表明该类扮演控制...

weixin_39710966的博客 191

Java常见面试笔试问答题:

Java常见面试笔试问答题: 1. final、finally、fianlize有何区别 答: 1)final final是一个关键字 当他修饰一个类时 该类无法被继承;当他修饰一个方法时;该方法无法被覆盖;当他修饰一个变量时 该变量只能赋值一次 static final 修饰的变量,一般也叫做常量,常量一般用大写字母表示如 static final int A=5; 2)finally finally也是一个关键字 finally一般与try联合使用 有finally时,不管try有没有执行,finall

Auto1123735786的博客 301
上一篇: Alpha-Beta 剪枝算法
下一篇: Windows MFC下的线程(待完善)
和道一文字JC
博客等级 码龄19年 24粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值