.Net程序员面试 每个人都应知道篇 (回答Scott Hanselman的问题)

 昨天回答了Scott Hanselman在他清单上关于C#那部分的题目,.Net 程序员面试 C# 语言篇 (回答Scott Hanselman的问题),今天接着回答他在清单上列出的"每个写代码的人都应该知道"部分的题目。

1. 描述线程跟进程的区别 (Describe the difference between a Thread and a Process?)

进程是指处于运行状态中的程序, 例如在windoe 环境下Ctrl + Alt + Delete 可以看见此时本台window运行中的程序。

线程是指在运行状态中的程序的一个可能路径。

所以一个进程至少有一个线程,多个线程可以在一个进程(多线程的程序)。一个进程开始的时候,会被分配属于它自己的内存地址,但是线程只能拥有所属进程的内存地址。还有同一个进程的线程跟线程之间可以直接访问。但进程跟进程之间需要通过interprocess communication才能相互访问(这一点我没有用过,也不大明白,google上看到的)。

2. 什么是Windows Service, 跟一般的EXE的生命周期由何不同 (What is a Windows Service and how does its lifecycle differ from a "standard" EXE?)

没有写过Windows Service相关的程序, 不太清楚, 上MSDN, Introduction to Windows Service Applications, 才知道Windows Service是写给服务器用的程序. 这种程序没有用户界面, 可以设定随着服务器开启而自动启动或重起, 不依赖于登陆的用户.

至于与EXE生命周期不同的问题, 不是非常得清楚, 有谁了解吗? 请赐教.

3. 在Windows平台下一个单进程最多可获得的内存有多大? 跟这个系统本省允许的最大虚拟内存是一样的吗? 知道这些问题的答案对系统设计有什么影响? (What is the maximum amount of memory any single process on Windows can address? Is this different than the maximum virtual memory for the system? How would this affect a system design?)

自己不知道这个问题的答案, 在Stackoverflow上 http://stackoverflow.com/questions/716798/maximum-net-achievable-memory, 读到对于32bit的,是2GB, 对于64bit的是8TB. MSND上有个表, 对不同版本的Windows系统给出一个介绍, Memory Limits for Windows Releases .

一台系统的最大虚拟内存取决于很多因素, 在Coding Horror 上有一篇文章讲的很详细, Dude, Where‘s My 4 Gigabytes of RAM?  对于32位的系统基本公式是:

2

32

 = 4,294,967,2964,294,967,296 / (1,024 x 1,024) = 4,096

所以是4G. 所以系统允许的最大虚拟内存不等同于Windwo平台下一个单进程可获得的最大内存.

知道这一点对于系统设计的影响是, 当你跟一些对内存要求比较大的系统打交道时, 比如数据库之类的, 一定要考虑内存这一块.

4. EXE 和 DLL 有什么区别 (What is the difference between an EXE and a DLL?)

Exe是Executable, 可执行的文件, 其中包括可以让这个程序执行的起始点 Public Static Void Main() in .Net. DLL是一个exe可以调用的包含有功能的文件.

5. 什么是强类型跟弱类型? 哪个好, 为什么? What is strong-typing versus weak-typing? Which is preferred? Why?

strong-typing是指尽量早的检查变量的类型, 通常在编译的时候就检查. week-typing是指尽量退后对变量类型的检查, 通常在运行时检查. 到底哪个好? 其实各有各的好, 像ruby, javascript, 都属于week-typing, 好处是写代码的时候比较快. C#属于strong-typing, 好处是如果变量类型不对的话, 编译不会通过, Visual Studio 还会有提示. 至于写代码的速度上讲, 自从C# 3.0以来, 使用var来定义变量, 简单了很多.

6. Corillian‘s product is a "Component Container." Name at least 3 component containers that ship now with the Windows Server Family.

谁能回答一下这个问题, 我不懂.

7. 什么是PID, 在解决系统问题时有用吗? (What is a PID? How is it useful when troubleshooting a system?)

PID全称是 Process Identifier, 就是进程的一个号码, 通常当系统哪个程序不听使唤的时候, 可以用它来把这个程序关闭. 而且Debug的时候, 也有用.

8. 一个TCP/IP端口可以被多少个进程分享? (How many processes can listen on a single TCP/IP port?)

一个

9. 什么是GAC,它的用处是什么? (What is the GAC? What problem does it solve?)

GAC 是指 Global Assembly Cache, 用处是放在这里的程序集可以被多个程序共同调用, 就像microsoft的很多程序集都在这里. 解决的问题是, 省点硬盘空间. 但是不好的地方是Why should I NOT use the GAC? 管理起不同版本的程序集很麻烦, 可以升级了一个, 不只不觉破坏了很多引用它的程序.

今天的问题比较的难, 虽然被Scott分类在每个写代码的人都应该知道的问题类型里面, 但好多都是google了之后, 才搞明白. 看来基础的东西还需要加强. 欢迎大家补充, 探讨.

时间: 2024-10-27 07:30:27

.Net程序员面试 每个人都应知道篇 (回答Scott Hanselman的问题)的相关文章

《PHP程序员面试笔试宝典》——如何巧妙地回答面试官的问题?

如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 所谓"来者不善,善者不来",程序员面试中,求职者不可避免地需要回答面试官各种"刁钻".犀利的问题,回答面试官的问题千万不能简单地回答"是"或者"不是",而应该具体分析"是"或者"不是"的理由. 回答面试官的问题是一门很深的学问.那么,面对面试官提出的各类问题,如何才能条理清晰地回答呢?如何才能让自己的回答不至

.Net 程序员面试 C# 语言篇 (回答Scott Hanselman的问题)

过去几年都在忙着找项目,赶项目,没有时间好好整理深究自己在工作中学到的东西.现在好了,趁着找工作的这段空余时间,正好可以总结和再继续夯实自己的.Net, C#基本功.在05年的时候,Scott Hanselman(微软的一个Principal Program Manager)在他的博客上列出了一张清单, 清单上是关于"一个好的.Net程序员应该知道的东东 What Great .NET Developers Ought To Know (More .NET Interview Questions

JAVA程序员面试总结,高手整理加强版

每个程序员.或者说每个工作者都应该有自己的职业规划,分享高手整理的java程序员面试总结给愿意思考自己未来的朋友们. 第一阶段:三年 我 认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人.这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本 上的内容迈向真正的企业级开发.我们知道如何团队协作.如何使用项目管理工具.项目版本如何控制.我们写的代码如何测试如何在线上运行等等,积累了一定的 开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段. 第二

两年Java程序员面试经验分享,从简历制作到面试总结!

前言 工作两年左右,实习一年左右,正式工作一年左右,其实挺尴尬的,高不成低不就.因此在面试许多公司,找到了目前最适合自己的公司之后.于是做一个关于面试的总结.希望能够给那些依旧在找工作的同学提供帮助. 面试 其实关于面试总结这块,我也看过不少文章,但是大部分都是关于面试题以及面试中的问题所谈.但是对于一个不擅长找工作的同学来说,其实在简历制作这一块很重要.因为简历没写好的话,连面试邀请都没,何谈面试呢.所以我准备谈谈我对简历制作这块的一些见解.如有不妥,欢迎指出! 简历制作 在写简历这方面,需要

《Java程序员面试笔试宝典》终于在万众期待中出版啦~

<Java程序员面试笔试宝典>终于在万众期待中出版啦~它是知名畅销书<程序员面试笔试宝典>的姊妹篇,而定价只要48元哦,恰逢求职季节,希望本书的出版能够让更多的求职者能够走进理想的企业 在这里,众多知名企业面试官将为你撕开神秘的求职面纱: 在这里,各种求职达人将现身说法为你揭开求职谜团: 在这里,各种类型的企业招聘细节都会被展露无疑: 在这里,我们将为你抽丝剥茧,还原IT行业的真相: 在这里,我们将为你指点迷津,告诉你职场上的风风雨雨: 在这里,我们将为你点石成金,成为那盏指引你前

《JAVA 程序员面试宝典(第四版)》读书笔记之前言

工作五年了一直在小的软件公司混,总感觉自己的专业知识没有太大的提升.当然了中间也换了一两家公司,面试的公司就很多家,总感觉正规的软件公司(无论大小)对于基础知识的考核都非常重视,而不管你说你之前服务过什么NB公司,做过什么样NB的项目,上来就先拿一份基础的题目来考核你看一下你的水平.一开始我是排斥的,总感觉考这些东西没有什么用,反正有的东西工作中不一定就用得到,只要自己能够做出东西来就可以了.问题来了怎么样子才算“做出东西”呢?这个问题总感觉很难从理论上来回答,就拿我这几年工作的事情来说吧,在这

Java程序员面试失败的5大原因

下面是Java程序员面试失败最有可能的5大原因,当然也许这5点原因适用于所有的程序员,所以,如果你是程序员,请认真阅读以下内容. #1 说得太少 尤其是那些开放式的问题,如“请介绍下你自己”或“请讲一下你曾经解决过的复杂问题”.面试官会通过你对这些技术和非技术问题的回答来评估你的激情.他们也会通过模拟团队氛围和与你的交流互动来判断你的经验和能力. 所以,仅仅只用两三句话来回答不但不能显示出你对这个专业的兴趣,还会让整个面试过程显得非常无聊.如果你不能很好地说明你的经验.成就和技能可以给企业带来的

程序员面试中常见10大算法汇总

以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念.由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍.本文将从Java的角度看问题,包含下面的这些概念: 1. 字符串 如果IDE没有代码自动补全功能,所以你应该记住下面的这些方法. 1 2 3 4 5 6 toCharArray() // 获得字符串对应的char数组 Arrays.sort() // 数组排序 Arrays.toString(char[] a) // 数组转成字符串 charAt(

Java程序员面试体会,还没找到工作的“猿猿们”看过来!

类似的话题,我大约在几个月前跟大家聊过.这一次,我要根据这段时间的体会,再给大家整理一下. 今天,很轻松地拿到了神州数码的offer.虽然工资不是特别高,虽然很多人一毕业就能进入这样的公司,但是对我这个半路出家的大专生来说,能进去纯属意外. 今天的面试,谈到了以前我接过一些私单,项目经理问我,那你现在还有没有做私活的想法?我说,彻底没有!他问我,为什么?我说,这几年,虽然做私活挣了一些钱,但我损失的远远不止那点钱.那些重复.繁琐,很难有技术水平提升的工作,占用了我大部份的业余时间,如果这些时间用