昨天回答了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,296
4,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了之后, 才搞明白. 看来基础的东西还需要加强. 欢迎大家补充, 探讨.

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

  1. .Net程序员面试 中级篇 (回答Scott Hanselman的问题)

    继<.Net 程序员面试 C# 语言篇 (回答Scott Hanselman的问题)>跟<.Net程序员面试 每个人都应知道篇 (回答Scott Hanselman的问题)>之 ...

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

    如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 所谓"来者不善,善者不来",程序员面试中,求职者不可避免地需要回答面试官各种"刁钻&quo ...

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

    过去几年都在忙着找项目,赶项目,没有时间好好整理深究自己在工作中学到的东西.现在好了,趁着找工作的这段空余时间,正好可以总结和再继续夯实自己的.Net, C#基本功.在05年的时候,Scott Han ...

  4. 程序员面试大揭秘——应聘微软、亚马逊、谷歌、苹果等IT公司你都要做什么准备?

    对于多数求职者而言,面试好似一个迷局.你去了,见了几个面试官,答了一堆问题,然后,或两手空空离开,或幸运地拿到录用通知. 你有没有想过: 面试结果是怎么得出的? 面试官会不会互相交流? 公司最看重哪些 ...

  5. JAVA程序员面试宝典

    程序员面试之葵花宝典 面向对象的特征有哪些方面    1. 抽象:抽象就是忽略一个主题中与当前目标2. 无关的那些方面,3. 以便更充分地注意与当前目标4. 有关的方面.抽象并不5. 打算了解全部问题 ...

  6. Java程序员面试之葵花宝典

    程序员面试之葵花宝典 1.面向对象的特征有哪些方面   抽象:抽象就是忽略一个主题中与当前目标 无关的那些方面, 以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而 只是选择其中的一部 ...

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

    前言 工作两年左右,实习一年左右,正式工作一年左右,其实挺尴尬的,高不成低不就.因此在面试许多公司,找到了目前最适合自己的公司之后.于是做一个关于面试的总结.希望能够给那些依旧在找工作的同学提供帮助. ...

  8. 《PHP程序员面试笔试宝典》——签约和违约需要注意哪些事情?

    本文摘自<PHP程序员面试笔试宝典>. PHP面试技巧分享,PHP面试题,PHP宝典尽在"琉忆编程库". 经过了紧张激烈的笔试面试后,最后过五关斩六将,终于得到了用人单 ...

  9. 《PHP程序员面试笔试宝典》——如何准备集体面试?

    本文摘自<PHP程序员面试笔试宝典>. PHP面试技巧分享,PHP面试题,PHP宝典尽在"琉忆编程库". 集体面试也被称为群面.无领导小组面试.由于计算机发展至今,软件 ...

随机推荐

  1. leetcode 576. Out of Boundary Paths

    leetcode 576 题意大概就是在一个m*n的网格中,在坐标为[i,j]的网格上放一个物体,在规定时间N(t<=N)中,有多少种方法把物体移动出去.物体只能上下左右移动,一次移动一格,移动 ...

  2. dump备份mysql库

    Auth: Jin Date: 20140403 Content: #!/bin/bash - ### auth: Jin ### ### Desc: 根据配置文件里的ip,端口(dblist文件格式 ...

  3. MYSQL复习笔记2-自带工具介绍

    Date: 20140102Auth: Jin 一.mysql 命令行客户端1)base-h host-P port--socket=path,-S path用于连接的套接字文件替换使用IP PORT ...

  4. 按树型显示BOM的结构

    在制造企业中,生产的每一个产品都由一道或多道工序组成,在组成成品之前,每一道工序经由物料--物料组成半成品,或物料--半成品组成新的半成品,亦或由半成品--半成品组成新的半成品.复杂的成品经由多道工序 ...

  5. python中出现 “'gbk' codec can't decode byte 0xf3 in position 20: illegal multibyte sequence”问题

    其实是打开文件方法open()中的模式有r,w,a等. 请看: r 以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式. rb 以二进制格式打开一个文件用于只读.文件指针将会放在文件的开头 ...

  6. es6数组去重复

    var arr=[1,1,2,3,5,7,7,7] arr=Array.from(new Set(arr))

  7. .NET MVC 验证码

    .NET MVC 验证码

  8. material.setTexture("sampler",tex) assetbundle 下失效

    做镜面反射本来写很顺 在手机上测的时候 发现settexture这里绑不上 查好久 是assetbundle的缘故 因为动态加载的 obj用了mat01 我在反射脚本里动态修改mat01而不是拿 re ...

  9. jquery触发/失去焦点事件

    触发焦点: $("Element").focus() 触发每一个匹配元素获得焦点事件. $("Element").focus(function) 事件会在获得焦 ...

  10. 开发 nodejs REST 个人感想

    本来想拿 nodejs 做个 ip 查询小应用的,做的时候想着把基础弄好再做应用,没想到做着做着就变成 spring 了 可能太多数人觉得不知道怎么用,以后我会写详细点使用教程 个人感觉自己做出来的东 ...