.net 开发人员面试题 多线程_多线程常见面试题
.net 开发人员面试题 多线程由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“多线程常见面试题”。
.net 开发人员面试题-多线程
最近园子里好多人谈到了招聘面试,特别是多线程这个问题出现了很多次;多线程也是我在面试中很喜欢问的一个题目,和大家分享一下(仅限.net)
为什么喜欢在面试中问这个问题
因为这是一个很好的了解面试者知识深度的问题,在现代CPU都是多核的背景下,多线程作为一种能充分发挥CPU资源的技术使用的越来越广泛.而且这个问题可以把普通的应用开发人员(增删改查)和有一定技术深度/专研精神的人区分出来
背景:
面试.net中高级软件工程师/架构师(事先可能不知道对方的目标等级,要在这次面试过程中确定)
本文只是单纯的一个技术面试的一个问题而已,不是完整的一个面试
以下是我的一般面试流程(不是所有的,不过60%都会在下面,所有问题都不是定死的,会看对方的情况再安排)
A 了解(要求简述,看回答的水平和方向选择2,3,4,5中的一个)
B 不了解(到结论1)
A 准确描述线程池的意义和使用场景;并且能深入介绍线程的资源消耗 [最好还能列举多种类似设计的比较](到问题4)
B 准确了描述了池的意义,并能描述对应的使用场景, 例如很多短时间的操作会用线程池中以避免构建线程的资源消耗(到问题3)
C 能描述使用场景,但是无法系统的说明原因(到结论2)
D 能系统的的介绍线程池,但是无法描述使用场景(到结论0)
A 能准确描述意义和优劣势, [例如性能,逻辑独立性,额外的性能消耗,线程调度和切换](到问题4 看起来技术细节/底子不错 继续问技术细节)
B 能描述一个准确的使用多线程的场景,但是无法系统的描述多线程的意义(到问题5, 想了解一下这个场景是否真的是他设计解决的,还是他只是其中的一个开发人员)
C 什么都说不出来,或者说不到点子上(结论2)
A 什么都说不出来(结论0/2 太奇怪了之前的问题是背的?这里同步居然说不出来)
B 知道lock关键字,然后其他的不懂(结论2)
C 知道lock autoresetevent 信号量等常见的.net中的同步方式,偶尔还能说跨进程同步(结论3-)
D 知道spinlock monitor event等基本上所有的常用同步方式,知道在某些场景适合用某种方式,但是说不出原因(到问题5 或者结论3)
E 知道user mode和kernel mode.对两者有一些细节上的了解,明白一个线程所持有的资源,能描述出不同同步方式的差别和使用场景,可以对monitor的内部原理作出介绍(结论4 或者到问题5)
A 没有具体的使用场景,(到结论0/2/3)
B 能从某一个角度介绍使用场景,并且能表述为什么当初使用了这个场景(到结论3)
C 作为团队的一员,参加过某个大型项目, 所以有一个很适合的使用场景,但是只讲过猪cucci女包、香奈儿包包、爱马仕包包:|冬装外套、冬装女装、时尚冬装:
:|皮草外套、水貂皮草、皮草大衣: www.daodoc.com
跑,没吃过猪肉(到结论3)
D 能系统的描述和介绍一些很适合的使用场景,并结合自己的项目经验介绍当初为什么使用这样的设计,同时还能提出优化建议以便能做的更好(到结论4)[可能会提出一个场景让他按照他的经验做现场设计]
初步结论0: 这人可能是事先准备的面试题,或者是听别人介绍过,但是自己从来没用过;接下来我会问问他其他方面的技术问题(特别是细节),确认他是否只会吹牛
初步结论1: 能力
初步结论2: 能力在中级开发人员附近 [有过不少实践经验,但是没有系统的想过原因,知其然而不知其所以然]
初步结论3: 能力在中级开发人员到高级开发人员之间 [知道点东西,不知道更详细的, 别人交代的任务可以完成的比较顺利,但是想做的很好有点难,需要架构师帮忙控制设计]
初步结论4: 能力在高级开发人员和架构师之间 [对多线程有较深入的了解,能在架构设计的时候选择适合的解决方案,能系统的描述多线程的意义,并给团队其他成员技术支持]
所有的结论都不是定死的,一般还会补充一些问题,或者最后让面试者自由问问题;希望面试者能充分表现他的技术能力在这个点
某些可能会被问到的技术细节:(上面已经提到的就不问了)
1.如果你是个leader/manager 如何解决掉产品里面存在的多线程的bug(你的团队成员水平可能很一般,会写出一些BUG)
2.IO线程和worker线程(window 和.net)
3.后台线程和前台线程
4.Stackoverflow的问题排查(询问线程栈)
5.线程池的配置和影响范围(有没有通过配置优化.net应用程序的性能)
6.有没有做过多线程程序的debug
如何排查某个进程中CPU 100% 的根本原因(假设只在生产环境出现)
出现意料之外的数据怎么处理
8.是否了解TLS thread local storage(可能会问到CallContext)
9.经典案例, 每隔一分钟执行一次的定时任务, 用 thread+ while(true)还是timer
10.一个.net线程的资源消耗
11..net线程和window线程的异同几种常用的概念的性能差别asp.net的线程机制和一些关键配置一些常见的多线程设计的场景 例如 thread1-queue-theads多线程和异步有什么关系和区别
本文描述了一些我个人比较喜欢的多线程方面的问题,以确定面试者是不是有足够的能力和技术深度
顺便看看他是否有系统的分析和解决问题的能力以及足够的知识面,顺便看看面试者的经验和知识体系
此外如此多的描述也是考验对方表达和沟通能力(这是架构师的重要能力)
当然,肯定有遗漏,不足或者误判..还请大家一起讨论讨论
补充(感谢各位在评论中的提醒)
1.这不是一个完整的面试,完整的面试更多是考核面试者是不是适合我们的公司的这个职位;包括说 性格,解决问题的能力,学习能力,团队合作,目前的技术水平
而这只是询问一个技术细节
2.这个目标职位的范围比较大,要看面试者的能力/回答给他做适合的定位,大部分人一般回答2,3分钟他就没啥可说的了......3.之前我们公司招聘的高级职位对高性能/架构设计有些要求,而多线程在这个领域还是挺重要的4.这只是一个简单的技术面试题 答不出也没什么,毕竟不是所有人之前都做过多线程;每个人都有自己擅长的方向.
Face to Face内容有可能有笔试:两份英文写作测试题:1、将高知特的中文描述翻译成英文;(看一下高知特的网站就可以啦,但不要完全照搬,那样很容易看出来)2、根据一个特定的情景来写一......
1、简述 private、protected、public、internal 修饰符的访问权限。2、C#中的委托是什么?编写一个简单的委托代码。3、C#中抽象类是什么?编写一个简单的抽象类代码。4、例举AS......
转].NET面试题集[收藏此页] [打印] 【IT168知识库】 1.C#中 property 与 attribute的区别,他们各有什么用处,这种机制的好处在哪里?2.讲一讲你理解的web service,在dot net fra......
1.有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析.2.A类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程......
Java开发人员面试题(JavaScript部分)填空1.如果一个分为左右两个框架的框架组,要想使左侧的框架宽度不变,应该用 ___________单位来定制其宽度,而右侧框架则使用___________单位......
