我的公司即将雇用.NET开发人员.我们在各种.NET平台上工作:ASP.NET,Compact Framework,Windowsforms,Web Services.我想编制好的问题列表/目录,这是一种最低标准,以确定申请人是否有经验.所以,我的问题是:
您认为一个优秀的.NET程序员应该回答什么问题?
我也将它视为自己的清单,以便了解我自己的赤字在哪里(有很多......).

*更新:它想明确我们不仅仅测试.NET知识,解决问题的能力和一般编程技能对我们来说更为重要.
最近,我在面试中被问到一个问题,即流程和线程之间的区别.真的,我不知道答案.我想了一会儿,给了一个非常奇怪的答案.
线程共享相同的内存,而进程则没有.在回答这个问题之后,面试官给了我一个邪恶的微笑,并向我解释了以下问题:
问:你知道程序划分的部分吗?
我的回答:是的(认为这是一个简单的)堆栈,数据,代码,堆
问:那么,告诉我:线程共享哪些段?
我无法回答这个问题并最终说出了所有这些.
请问,任何人都可以为流程和线程之间的差异提供正确和令人印象深刻的答案吗?
谁能告诉我在这两种情况下究竟做了什么?每个人的主要成本是多少?
我正在阅读SašaJurić的"Elixir in Action"一书,在第一章中它说:
Erlang进程完全相互隔离.它们不共享内存,一个进程崩溃不会导致其他进程崩溃.
Java线程也不是这样吗?我的意思是当Java线程崩溃时,它也不会崩溃其他线程 - 特别是,如果我们正在查看请求处理线程(让我们main从这个讨论中排除线程)
我经常在Bash中使用管道,例如:
dmesg | less
Run Code Online (Sandbox Code Playgroud)
虽然我知道这是什么输出,它需要dmesg并让我滚动它less,我不明白|它在做什么.它恰恰相反>吗?
|?是的,我读过许多与操作系统相关的资料.我还在读书.但似乎所有这些都是以"抽象"的方式描述过程和线程,这使得他们的行为和逻辑组织得到了很多高层次的阐述.我想知道他们身体上是什么?在我看来,它们只是一些内存中的"数据结构",它们由内核代码维护和使用,以便于程序的执行.例如,操作系统使用一些过程数据结构(PCB)来描述为某个程序分配的过程的各个方面,例如其优先级,地址空间等.这样可以吗?
我试图了解ThreadingNodeJS 及其工作原理。
目前我的理解是:
集群: -
子进程:
也使用不同的可用内核,但它很糟糕,因为它会创建虚拟内存,因为它会花费大量资源来分叉子进程。
分叉进程可以通过事件与主线程通信,反之亦然,但分叉进程之间没有通信。
工作线程:
bufferArray1)为什么worker threads比child process以及何时我们应该使用它们中的每一个都更好?
2)如果我们有 4 个内核和集群/分叉 nodeJS webserver 4 次(每个内核 1 个进程),然后我们使用worker threads(没有可用的内核)会发生什么?
我在这里找到了问题的答案.但我不明白答案中的一些想法.例如,据说轻量级进程与其他进程共享其逻辑地址空间.这是什么意思?我可以理解2个线程的相同情况:它们共享一个地址空间,因此它们都可以从bss段读取任何变量(例如).但是我们有很多不同的流程和不同的bss部分,我不知道如何分享它们.