`
xitonga
  • 浏览: 583851 次
文章分类
社区版块
存档分类
最新评论

.NET面试题C卷

 
阅读更多

1 在一个进程里面有多少个finalizer个线程?

A1个堆一个

B1CPU一个

C1

D2

E我不知道怎么回答

2 在分析过程中检查检查数据结构可以判别方法是否被JIT编译过?

AMethodTable

BEEClass

CMethodDescriptor

DPEHeader

E我不知道怎么回答

3 什么命令能够检查对象被根化?

Afindroots

Broot

CDumpObj

D!gcroot

E我不知道怎么回答

4 在过CPU挂起的时候,什么命令能够检查CPU的线程耗时?

A!analyze

B!runaway

C!threads

D~*

E我不知道怎么回答

5 DotNet三种GC的模式?

AConcurrentWorkstationGC

BNon-ConcurrentWrokStationGC

CFinalizerGC

DServerGC

E我不知道怎么回答

6 当对象超过多大时,系统将对象放入到LOH中?

A4000bytes

B无固定的值

C85000bytes

D1M

E我不知道怎么回答

7、如何定位内存泄漏出现在托管堆上?(分别采取2种方式来判别)

【方法一】打开性能计数器,设置监视对象为“.NetCLRMemory”和“Process”,启动监视。运行待分析的应用程序一段时间后,停止监视。点击查看日志数据,选择“.NETCLRMemory/#BytesinallHeaps”和“Process/PrivateBytes”节点。查看此时的图表,如果二者同增同减,说明系统内存增加很大程度上都是.Net程序导致的,即内存泄露于托管堆。

【方法二】用WinDbg肯定可以,不会。

8 内存泄漏的分析流程是什么?并描述如何在堆中寻找对应的对象地址?

1. 再WinDbg中打开应用程序的dump文件(由调试器生成)。

2. 使用命令“!addresssummary”查看内存,判断内存是否泄漏于GC堆上。

3. 如果内存泄露与GC堆,说明.Net应用程序的问题。

4. 使用命令“!dumpheapstat”分析程序中对象的情况。该命令执行结果的第一列就是对应对象的地址。

5. 可以重点分析string对象。使用同样的命令,获取stringMethodTable,使用“!do”命令查看string对象的信息。

6. 使用“!gcroot”命令查看对象被根化在何处,大量的根化意味着GC处理的异常。

7. 使用“!finalizequeue”命令查看终止化队列。分析这些正在被终止的对象,正是这些数据导致内存异常的大量占用。

9 从应用角度分析什么操作可能导致CPU长时间处在High状态下,什么情况会导致资源消耗比较低,但是应用却出现延迟?

1. 大数据排序、申请回收大空间、复杂数值运算(包括如视频播放、游戏环境贴图等的应用)等都会使CPU长期高负荷占用。

2. 资源(理解为内存)消耗比较低,说明没有过多的空间申请,或者只是空间调换。延迟,说明线程或进程被阻塞。所以下面是几个可能的原因:

1 线程死锁或暂停。

2 线程工作负荷超重(如1中的某些情况),导致响应不及时,并且可能连带阻塞了下游线程的访问。

3 程序死循环。

10、请描述对象的Finalizer流程?

这里将Finalizer流程理解为.Net的析构流程,不包括.NetDispose模式。

1. GC会以一定的优化算法轮询所有的对象,如果该对象不会再被引用到,则GC认为该对象可以在适当的时候进行垃圾回收了。

2. GC会寻找一个合适的机会(如0代对象饱和、应用程序域被卸载、CLR异常等)启动回收操作。

3. 内存回收分两种情况:

a) 如果该对象没有显式定义Finalize方法,则直接回收内存。

b) 如果该对象已显式定义了Finalize方法,GC在第一次回收时,将其从终止化队列(即第8个问题的FinalizeQueue)中转移到准备回收的对象列表。在第二次回收时,GC调用该对象的Finalize方法,完成用户自定义析构,然后,将这些项从列表中移除。完成回收对象的内存。

分享到:
评论

相关推荐

    C#与.NET程序员面试宝典

    《C#与.NET程序员面试宝典》取材于各大IT公司的历年面试题252个(包括研发类笔试及口试题目、情商及智商类题目),详细分析了应聘C#与.NET程序员职位的常见考点。《C#与.NET程序员面试宝典》主要内容包括:面试流程...

    java面试题以及技巧

    │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...

    android和java面试大全集

    C语言面试题大汇总面试题及答案.doc Java23种设计模式(总结)1.doc JAVA_WEB面试笔试题.doc 实施人员初试题20091009.doc 笔试智力题.doc C语言面试题.doc 2011android面试题目及其答案大全.doc java基础笔试题.doc ...

    java面试题及技巧4

    │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...

    java面试题及技巧3

    │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...

    java面试题以及技巧6

    │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...

    C++面试题基础知识回顾

    1、C 和 C++ 中 struct 有什么区别? Protection行为 能否定义函数 C 无 否,但可以有函数指针 C++ 有 可以,默认是public 2、C++中的 struct 和 class 有什么区别? 【参考答案】从语法上讲,class和struct做...

    仿通达OA系统ERPASP.NET.rar

    f、档案卷库(卷库管理,档案管理,档案销毁) g、考试管理(题库管理,试卷管理,在线考试,考试结果,题库分类) h、学习管理(在线学习,学习心得,心得管理) 8、客户关系 a、会员管理(我的会员,会员...

    java面试题目与技巧1

    │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...

    OA系统+手机版源码t源代码

    利用最新的ASP.NET平台、javascript和AJAX、SQLSERVER关系型数据库等技术,结合OA思想的独特设计,建立一个开放的信息资源管理平台。 利用数据库及分布式处理技术、模块化功能设计,构造信息存储与事务处理平台。该...

Global site tag (gtag.js) - Google Analytics