NET面试技巧.docx
- 文档编号:9555072
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:37
- 大小:42.32KB
NET面试技巧.docx
《NET面试技巧.docx》由会员分享,可在线阅读,更多相关《NET面试技巧.docx(37页珍藏版)》请在冰豆网上搜索。
NET面试技巧
培训班常见问题(作者:
张孝祥):
1.你们会带着我们做完整个完整的项目吗?
答:
小的项目会,大的项目则不可能,
1.众所周知,随便拿出一个中等大小的项目,也需要好多个熟练的开发人员开发好多个月才能勉强做得差不多,培训期间没有这么多时间,并且你还要先学会了很多技术后才能开始做项目。
2.一个项目中的很多东西都是重复性的工作量的累积,技术方面都大同小异。
做一个项目就好比盖一座楼房,只要告诉你整个楼房的整体结构,然后带着你盖上一间两间房子,其他剩下的几百间房子,老师想继续盖给你看,或者让你自己盖剩下的房间,你肯定也不愿意吧。
以后有的是练手的机会,拿着人家发给你的工资,你再去做这些重复性的工作也不迟,岂不是更好!
2.业务重要?
还是编码实战更重要?
答:
2.对程序员来说,编码实战更重要,业务则不算什么!
程序员和软件公司的工作就是要把用户的需求和业务变成代码,即为人作嫁,一开始,需求和业务都在用户那里,用户最懂业务,你不用了解业务,你的任务就是了解用户的业务后编写代码,在开始做项目前,用户会把业务告诉给你的。
一个软件公司从来都不是只做自己熟悉业务的项目,而是来了业务不熟悉的项目机会,肯定也会冲上去做,软件公司通常都是在做自己以前没做过的项目,即做以前不了解业务的项目,只有项目做完了才完全熟悉了业务,这才叫做项目,否则就成了卖产品了,所以,软件工程里说的需求调研和理解业务的过程,也是在从侧面说明,程序员是在接到项目之后才开始了解其业务的,而在此之前,对业务可以是完全不懂的。
3.是培训内容和信息量大好?
还是培训内容少而精的好?
答:
内容和信息量大培训课程体系,对大多人来说是更合适的。
程序员做的工作总是在变化的,没有一成不变的工作,为了适应这种变化,你的知识面必须很广泛。
如果你学的知识内容很少,即使你把这些内容练的滚瓜烂熟了,除非你出去找的一份工作正好就是你以前练习的那些东西,这时候会让人感觉你比谁都厉害,但这种千载难逢的好事怎么就被你碰上了呢?
软件开发毕竟不同于刷盘子,不是在重复干一件事情。
软件开发的工作总是要面临不同的需求和问题,如果培训课程的内容和信息量很大,即使由于时间关系,你暂时没有完全消化和熟练这么多内容,但是,你在工作中不管遇到什么新问题,都有那么一点点印象,知道大概的解决办法和思路,你就可以慢慢地通过查阅资料和最终解决这个问题,软件开发的工作本来就是这么一种现状,如果你学的知识量很少,一旦遇到了新问题,你完全就没有了思路,完全无从下手,这是何等痛苦,只有灰溜溜走人的份了吧。
4.我们培养的不是it蚁族和it民工
先看看it蚁族和it民工的悲惨命运吧!
.net不只是有+sqlserver这套,我们不培养it蚁族,如果你不想厌烦软件开发,那就不能只学
+sqlserver,这个没有太多技术含量的单一熟练工种。
别的培训机构培养的是技术单一的熟练技工,传智播客培养的是具有很强学习和解决问题能力的技术高手和未来技术经理。
很多工厂说,清华毕业的学生刚进工厂时的动手操作不如技校毕业的学生熟练,但过一段时间后,清华学生则能解决工厂生成过程出现中的各种新问题和弊端,甚至能提出创新和发明,后劲十足,因为清华培养的就不是一个单一工种的熟练工人,而是知识全面和具有创新能力的高级工程师。
别的机构和传智播客培养出来的学生差别好比如此。
这套面试题主要目的是帮助那些还没有.net软件开发实际工作经验,而正在努力寻找.net软件开发工作的朋友在笔试时更好地赢得笔试和面试。
由于这套面试题涉及的范围很泛,很广,很杂,大家不可能一天两天就看完和学完这套面试宝典,即使你已经学过了有关的技术,那么至少也需要一个月的时间才能消化和掌握这套面试宝典,所以,大家应该早作准备,从拿到这套面试宝典之日起,就要坚持在每天闲暇之余学习其中几道题目,日积月累,等到出去面试时,一切都水到渠成,面试时就自然会游刃有余了。
回答问题的思路:
先正面叙述一些基本的核心知识,然后描述一些特殊的东西,最后再来一些锦上添花的东西。
要注意有些不是锦上添花,而是画蛇添足的东西,不要随便写上。
把答题像写书一样写。
我要回答一个新技术的问题大概思路和步骤是:
我们想干什么,干这个遇到了什么问题,现在用什么方式来解决。
其实我们讲课也是这样一个思路。
例如,讲ajax时,我们希望不改变原来的整个网页,而只是改变网页中的局部内容,例如,用户名校验,级联下拉列表,下拉树状菜单。
用传统方式,就是浏览器自己直接向服务器发请求,服务器返回新页面会盖掉老页面,这样就不流畅了。
答题时,先答是什么,再答有什么作用和要注意什么(这部分最重要,展现自己的心得)
答案的段落分别,层次分明,条理清楚都非常重要,从这些表面的东西也可以看出一个人的习惯、办事风格、条理等。
要讲你做出答案的思路过程,或者说你记住答案的思想都写下来。
把答题想着是辩论赛。
答题就是给别人讲道理、摆事实。
答题不局限于什么格式和形式,就是要将自己的学识展现出来!
别因为人家题目本来就模棱两可,你就心里胆怯和没底气了,不敢回答了。
你要大胆地指出对方题目很模糊和你的观点,不要把面试官想得有多高,其实他和你就是差不多的,你想想,如果他把你招进去了,你们以后就是同事了,可不是差不多的吗?
关于就业薪水,如果你是应届生,那不能要高工资,要拿高工资,就去中关村!
少数人基础确实很好,在校期间确实又做过一些项目,那仍然是可以要到相对高的工资的。
初级程序员薪水:
2000-4500
中级程序员薪水:
4000-7000
高级程序员薪水:
7000以上
公司招聘程序员更看重的要用到的编码技术、而不是那些业务不太相关的所谓项目经历:
1.公司想招什么样的人2.公司面试会问什么,.3.简历怎么写4怎样达到简历上的标准(培训中心教项目的目的)
对于一些公司接到了一些项目,想招聘一些初中级的程序员过来帮助写代码,完成这个项目,你更看重的是他的专业技术功底,还是以前做过几个项目的经历呢?
我们先排除掉那些编码技术功底好,又正好做过相似项目的情况,实际上,这种鱼和熊掌兼得的情况并不常见。
其实公司很清楚,只要招聘进来的人技术真的很明白,那他什么项目都可以做出来,公司招人不是让你去重复做你以前的项目,而是做一个新项目,业务方面,你只
要进了项目团队,自然就能掌握。
所以,大多数招聘单位在招聘那些编码级别的程序员时也没指望能招聘到做过类似项目的人,也不会刻意去找做过类似项目的人,用人单位也不是想把你招进,然后把你以前做过的项目重做一遍,所以,用人单位更看重招进来的人对要用到的编码技术的功底到底怎样,技术扎实不扎实,项目则只要跟着开发团队走,自然就没问题。
除非是一些非常专业的行业,要招聘特别高级的开发人员和系统分析师,招聘单位才特别注重他的项目经验和行业经验,要去找到行业高手,公司才关心项目和与你聊项目的细节,这样的人通常都不是通过常规招聘渠道去招聘进来的,而是通过各种手段挖过来的,这情况不再我今天要讨论的范围中。
技术学得明白不明白,人家几个问题就把你的深浅问出来了,只要问一些具体的技术点,就很容易看出你是真懂还是假懂,很容看出你的技术深度和实力,所以,技术是来不得半点虚假的,必须扎扎实实。
由于项目的种类繁多,涉及到现实生活中的各行各业,什么五花八门的业务都有,例如,酒店房间预定管理,公司车辆调度管理,学校课程教室管理,超市进销存管理,知识内容管理,等等?
?
成千上万等等,但是,不管是什么项目,采用的无非都是我们学习的那些目前流行和常用的技术。
技术好、经验丰富,则项目做出来的效率高些,程序更稳定和更容易维护些;技术差点,碰碰磕磕最后也能把项目做出来,无非是做的周期长点、返工的次数多点,程序代码写得差些,用的技术笨拙点。
如果一个人不是完完全全做过某个项目,他是不太关心该项目的业务的,对其中的一些具体细节更是一窍不知,(如果我招你来做图书管理,你项目经历说你做过汽车调度,那我能问你汽车调度具体怎么回事吗?
不会,所以,你很容易蒙混过去的)而一个程序员的整个职业生涯中能实实在在和完完整整做出来的项目没几个,更别说在多个不同行业的项目了,有的程序员更是一辈子都只是在做某一个行业的项目,结果他就成了这个行业的专家(专门干一件事的家伙)。
所以,技术面试官通常没正好亲身经历过你简历写的那些项目,他不可能去问你写的那些项目的具体细节,而是只能泛泛地问你这个项目是多少人做的,做了多长时间,开发的过程,你在做项目的过程中有什么心得和收获,用的什么技术等面上的问题,所以,简历上的项目经历可以含有很多水分,很容易作假,技术面试官也无法在项目上甄别你的真伪。
简历该怎么写:
精通那些技术,有一些什么项目经历
教项目是为了巩固和灵活整合运用技术,增强学习的趣味性,熟悉做项目的流程,或得一些专业课程中无法获得的特有项目经验,增强自己面试的信心。
讲的项目应该真实可靠才有价值,否则,表面上是项目,实际上还是知识点的整合,对巩固技术点和增强学习的趣味性,但无法获得实际的项目经验。
(项目主要是增加你经验的可信度,获得更多面试机会,真正能不能找到工作,找到好工作,主要看你键盘上的功夫了)
建议大家尽量开自己的blog,坚持每天写技术blog。
在简历上写上自己的blog地址,可以多转载一些技术文章。
1.如何过简历关?
善意的谎言
我先讲解几个软件求职相关的真实故事,以帮助大家了解大多数软件开发企业是如何赛选简历和录用新员工的。
1.传智播客学员a是大四在读的应届毕业生,他自信技术学得很不错,实质上确实也达到用人单位的标准,他不愿意编写两年工作经验的虚假简历,希望凭借自己的真实情况去面对求职,投递了很多份简历,都没有回应;而他周围的很多相似背景的学员因为使用了假简历,都很快找到了薪水4.5k/月左右的工作,最后万不得已,他修改了自己的简历,增加了一些水分,以两年工作经验的身份去投递简历,结果就很快找到了满意的工作。
2.一个穿着和气质给人的印象都很不错的女生咨询时,问:
“如果在传智播客学完了,能找到工作吗?
”,我问了她一些基本情况后,得知她是郑州航空工业管理学院本科毕业,并且毕业时间已经有两年,谈话中感觉很有工作经验,英语也不错,所以,我斩钉截铁地告诉她:
“她学完后绝对能找到一份满意的工作”,并说出了一些原因:
(1)她本身的谈吐气质就决定了她找工作没问题,应聘工作除了要求有那些必需的技能外,关键一点还要看这个人的性格和素养,按她的条件,如果她要找软件开发方面的工作,只需要把技术补上就可以了,这一点在传智播客学习是很容易补上的;
(2)要想找到好工作,除了掌握必需的技术外,通常都需要编写两年工作经验的简历,她的毕业是证确实两年前的,编造两年软件开发的工作经验更容易,至少不用专门去做假的毕业证了。
她听完后,很赞同我的观念,说她现在就在一家软件公司做人力资源,负责挑选应聘者的简历,按领导的吩咐:
“凡是工作经验低于两年的简历直接删除到垃圾桶”,可见,如果你是以社会招聘的身份应聘的,那么
你的简历首先到达了类似这个女生的人力资源之手,即使你的技术再厉害,如果你的工作经验一栏上写得低于了两年,那简历就永无露脸之日了,何谈后来的笔试和面试呢?
3.与传智播客同一楼的一个软件开发单位,因为项目经理读过传智播客老师们的书籍和看过传智播客的视频,所以他们公司想到了从传智播客学员中招聘开发人员,提出薪水在2800元左后,我们公司老师对他们谁,2800元,我们学员肯定不会去!
他们公司说对于没有实际经验的新手开出2800元的薪水已经很不错了,我们老师说,传智播客学员通过简历包装都能找到平均4500元的工资,楼下公司说假简历他们一聊就能聊出来,没工作经验的人是骗不住他们的,我们的老师当时就无语了,?
,因为就在前几天,我们就有一个学员成功潜伏进了他们公司,并且工资是4500元,但我们老师不能当他们的面来说这事,就让他们一直蒙在鼓里还很自信吧!
4.前面谈到简历上的工作经验很重要,可是大多数要找工作的同学往往是没有工作经验的,所以,只能在简历上加点水分。
但是,只要你将简历上写成了两年以上的工作经验,是不是一定就能得到笔试和面试的机会呢?
写两年工作经验只是有效简历的开始,离简历被用人单位相中还有一段差距。
一个好的毕业学校、优秀的英语水平、中共党员的政治面貌、某省或直辖市的优秀毕业生、奥林匹克竞赛获几等奖等荣耀都会给用人单位一个很好的印象,如果你有这些荣耀,一定要在简历的基本信息部分写清楚。
但是,很多人是没有这些荣耀的,那么只能平平淡淡列出自己的一些基本信息,这也没有很大的关系,顶多就是自己的简历不能脱颖而出。
如果你没有上过大学,学历一栏怎么着也不能写为高中,起码也要写个大专或以上,毕业院校编个二线城市的不知名的小学院,如果你不愿意去做假证,等到别人面试你时,再说“闲弃以前上的学校不好,因为对编程太感兴趣,就辍学了!
”
技术类面试、笔试题汇总(整理者:
杨中科,部分内容从互联网中整理而来)注:
标明*的问题属于选择性掌握的内容,能掌握更好,没掌握也没关系。
下面的参考解答只是帮助大家理解,不用背,面试题、笔试题千变万化,不要梦想着把题覆盖了,下面的题是供大家查漏补缺用的,真正的把这些题搞懂了,才能“以不变应万变”。
回答问题的时候能联系做过项目的例子是最好的,有的问题后面我已经补充联系到项目中的对应的案例了。
1、简述private、protected、public、internal修饰符的访问权限。
private:
私有成员,在类的内部才可以访问。
protected:
保护成员,该类内部和继承类中可以访问。
public:
公共成员,完全公开,没有访问限制。
internal:
当前程序集内可以访问。
2、中的五个主要对象
connection:
主要是开启程序和数据库之间的连接。
没有利用连接对象将数据库打开,是无法从数据库中取得数据的。
close和dispose的区别,close以后还可以open,dispose以后则不能再用。
dataset:
这个对象可以视为一个暂存区(cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来,dataset是放在内存中的。
dataset的能力不只是可以储存多个table而已,还可以透过
dataadapter对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。
dataset对象可以说是中重量级的对象,这个对象架构在dataadapter对象上,本身不具备和数据源沟通的能力;也就是说我们是将dataadapter对象当做dataset对象以及数据源间传输数据的桥梁。
dataset包含若干datatable、datatabletable包含若干datarow。
datareader:
当我们只需要循序的读取数据而不需要其它操作时,可以使用datareader对象。
datareader对象只是一次一笔向下循序的读取数据源中的数据,这些数据是存在数据库服务器中的,而不是一次性加载到程序的内存中的,只能(通过游标)读取当前行的数据,而且这些数据是只读的,并不允许作其它的操作。
因为datareader在读取数据的时候限制了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好。
使用datareader对象除了效率较好之外,因为不用把数据全部传回,故可以降低网络的负载。
3、列举页面之间传递值的几种方式。
1.使用querystring,如....?
id=1;response.redirect()....
2.使用session变量
3.使用server.transfer
4.cookie传值
5.application传值
6.previospage
4、c#中的委托是什么?
事件是不是一种委托?
事件和委托的关系。
委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的指针。
委托和事件没有可比性,因为委托是类型,事件是对象,下面说的是委托的对象(用委托方式实现的事件)和(标准的event方式实现)事件的区别。
事件的内部是用委托实现的。
因为对于事件来讲,外部只能“注册自己+=、注销自己-=”,外界不可以注销其他的注册者,外界不可以主动触发事件,因此如果用delegate就没法进行上面的控制,因此诞生了事件这种语法。
事件是用来阉割委托实例的,类比用一个自定义类阉割list。
事件只能add、remove自己,不能赋值。
事件只能+=、-=,不能=。
加分的补充回答:
事件内部就是一个private的委托和add、remove两个方法
面试聊:
用reflector查看.net的类的内部实现,解决问题。
5、override与重载(overload)的区别
重载是方法的名称相同。
参数或参数类型不同,进行多次重载以适应不同的需要。
重载(overload)是面向过程的概念。
override是进行基类中函数的重写。
override是面向对象的概念篇二:
.net面试题大全(个人整理)
2.列举页面之间传递值的几种方式。
答:
?
querystring是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。
如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。
但是对于传递数组或对象的话,就不能用这个方法了。
?
application对象的作用范围是整个全局,也就是说对所有用户都有效。
其常用的方法用
lock和unlock。
?
session变量想必这个肯定是大家使用中最常见的用法了,作用于用户个人,所以,过
量的存储会导致服务器内存资源的耗尽。
?
cookie对象变量这个也是大家常使用的方法,与session一样,其是什对每一个用户而
言的,但是有个本质的区别,即cookie是存放在客户端的,而session是存放在服务器端的。
而且cookie的使用要配合内置对象request来使用。
?
server.transfer方法这个才可以说是面象对象开发所使用的方法,其使用server.transfer
方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。
3.一列数的规则如下:
1、1、2、3、5、8、13、21、34......求第30位数是多少,用递归算法实现。
答:
publicstaticintcalculate(intx)
{
intretint=1;
if(x>2)
{
returncalculate(x-2)+calculate(x-1);
}
else
returnretint;
}
4.c#中的委托是什么?
事件是不是一种委托?
答:
委托是一种定义方法签名的类型,可以与具有兼容签名的任何方法关联。
可以通过委
托调用方法。
委托用于将方法作为参数传递给其他方法。
委托具有以下特点:
?
委托类似于c++函数指针,但它们是类型安全的。
?
委托允许将方法作为参数进行传递。
?
委托可用于定义回调方法。
?
委托可以链接在一起;例如,可以对一个事件调用多个方法。
?
方法不必与委托签名完全匹配。
事件是一种特殊的委托。
5.override与重载的区别
答:
override:
要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,重写的基方法必须与override方法具有相同的签名。
方法重载:
一个类中可以有一个以上的方法拥有相同的名称。
但必须有不相同的签名。
6.如果在一个b/s结构的系统中需要传递变量值,但是又不能使用session、cookie、application,您有几种方法进行处理?
答:
querystring、server.transfer方法。
7.请编程遍历页面上所有textbox控件并给它赋值为string.empty?
答:
foreach(controlcontrolinthis.controls)
{
if(controlistextbox)
{
textboxtb=(textbox)control;
tb.text=string.empty;
}
}
8.请编程实现一个冒泡排序算法?
答:
//冒泡排序
publicstaticvoidmaopaosort(refint[]arrays)
{
if(arrays!
=null&&arrays.length>0)
{
for(inti=1;i<arrays.length;i++)
{
boolischange=false;
for(intj=0;j<arrays.length-i;j++)
{
if(arrays[j]>arrays[j+1])
{
inttempvalue=arrays[j];
arrays[j]=arrays[j+1];
arrays[j+1]=tempvalue;
ischange=true;
}
}
if(!
ischange)
break;
}
}
}
9.描述一下c#中索引器的实现过程,是否只能根据数字进行索引?
答:
索引器允许类或结构的实例就像数组一样进行索引。
索引器类似于属性,不同之处在于它们的访问器采用参数。
publicreturntypethis[paramtypeindex]{get{}set{}},可以用任何类型进行索引。
10.求以下表达式的值,写出您想到的一种或几种实现方法:
1-2+3-4+?
?
+m
答:
publicstaticintsummethod1(intm)
{
intsum=0;
for(inti=1;i<=m;i++)
{
if(i%2!
=0)
sum+=i;
else
sum-=i;
}
returnsum;
}
publicstaticintsummethod2(intm)
{
intsum=0;
if(m%2!
=0)
sum=m/2+1;
else
sum=-(m/2);
returnsum;
}
12.在下面的例子里
classa
{
publica()
{
printfields();
}
publicvirtualvoidprintfields(){}
}
classb:
a
{
intx=1;
inty;
publicb()
{
y=-1;
}
publicoverridevoidp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NET 面试 技巧