您的当前位置:首页正文

.NET研发人员面试题(一)

2020-01-18 来源:易榕旅网
.NET研发⼈员⾯试题(⼀)

1、简述javascript中的“=、==、===”的区别?=赋值

==⽐较是否⼀般相等 \"3\"==3 //会做类型的隐式转换,true

===⽐较是否严格相等 \"3\"===3 //先⽐较类型,再进⾏值⽐较,false

2、看下列代码输出为何?解释原因var a = null;alert(typeof a); var b;

alert(typeof b);alert(c);

a为null,也是⼀个对象,所以typeof(a)为object.b只有声明没有初始化,因此typeof(b)为undefined.c没有定义,因此alert(c)会出现error.

3、编写javascript代码实现把两个数组合并,并删除第⼆个元素。合并js数组⽤concat⽅法,array1.concat(array2)。

删除元素⽤splice⽅法,splice(1,1),函数原型splice(index,count),指从数组索引1处开始删除1个元素,即删除第⼆个元素。4、简述javascript的作⽤域和闭包

js变量的作⽤域是指:函数内定义的局部变量只在此函数内有效,⽽全局变量可以全局有效。

闭包的作⽤就在于能够改变局部变量的作⽤域,将值保存下来,但是如果使⽤不当会造成⽆法回收变量,引起性能问题,甚⾄崩溃。

5、列举你⽤过的javascript框架,并简述它们的优缺点

js框架:jQuery EasyUI、ExtJS、Bootstrap、AngularJS等等。

jQuery EasyUI:轻量级web前端ui开发框架,尤其适合MIS系统的界⾯开发,能够重⽤jquery插件。

ExtJS:统⼀的前端UI开发框架,学习难度中等。尤其适合MIS系统的界⾯开发,开发⽂档和例⼦代码都⽐较完整。缺点是⼤量的js脚本,降低了运⾏速度。Bootstrap:响应式⽹站开发框架,优点是降低了后端开发⼈员开发前端页⾯的难度,统⼀了界⾯风格,缺点是界⾯风格⽐较单⼀。AngularJS:将java后端的优秀特性引⼊到了js前端,⼤⽽全的框架。缺点是学习曲线⾼,Angular2⼏乎重写。

6、简述a.Equals(b)和a==b的区别?

Equals⽅法⽐较内容(值是否相等),==⽐较引⽤地址(是否指向同⼀个对象)。——————

更正⼀下,在Java中上述结论是正确的,但在C#中却正好反过来,即:==⽐较内容是否相等,Equals先⽐较值,然后再⽐较引⽤。7、ASP.NET的Application、Session、Cookie、ViewState和Cache等变量的区别是什么?Application 应⽤程序级别Session 会话级别⽤户跟踪Cookie 客户端存储少量信息

ViewState 保持ASP.NET控件状态的机制Cache 缓存

8、列举ASP.NET MVC ActionResult的返回值有⼏种类型?

主要有View(视图)、PartialView(部分视图)、Content(内容)、Json(Json字符串)、Javascript(js脚本)、File(⽂件)等⼏种类型。

9、简述ASP.NET WebApi相对于ASP.NET MVC的优点?

WebApi消息处理管道独⽴于ASP.NET平台,⽀持多种寄宿⽅式。

10、简述ASP.NET请求的⽣命周期?

⽤户从 Web 服务器请求应⽤程序资源->ASP.NET 接收对应⽤程序的第⼀个请求->为每个请求创建 ASP.NET 核⼼对象->将对象分配给请求->由 管线处理请求refer: https://msdn.microsoft.com/zh-cn/library/ms178473(v=vs.100).aspx

11、ORM中的延迟加载与直接加载有什么异同?

延迟加载(Lazy Loading)只在真正需要进⾏数据操作的时候再进⾏加载数据,可以减少不必要的开销。12、简述Func与Action的区别?

Func是有返回值的委托,Action是没有返回值的委托。

13、开启⼀个异步线程的⼏种⽅式?多线程编程时的注意事项?

APM(Asynchrocous Programming Model,⽐如:BeginXXX、IAsyncResult)、EAP(Event-Based Asynchronous Pattern,⽐如:DownloadContentAsync)、TPL(Task Parallel Library,⽐如:Task.Factory.StartNew)、async/await。线程饿死、线程死锁、线程同步、线程安全。

14、简述Linq是什么,以及Linq的原理?并编写⼀个Linq to Object的⽰例代码

Linq(Language Integrated Query),其中Linq to Object是对Enumberable扩展⽅法的调⽤,在执⾏时会转化为Lambda然后执⾏。⽰例代码:Linq分组统计

var result = from p in list.AsEnumerable() group p by p.Province into g select new {

g.Key,

SumValue = g.Sum(p => p.Value) };

result.ToList().ForEach((i) => {

Console.WriteLine(i.Key + \":\" + i.SumValue); });

15、简述⾯向对象的特性有哪些?你是如何理解的?

继承(inheritance)、封装(encapsulation)、多态(polymorphism)。16、列举你所知道的设计模式?你在真实项⽬中使⽤过的有哪些?有什么⼼得?单例模式、模板⽅法、⼯⼚模式、外观模式、策略模式等。

17、编写SQL从A表中查出Name字段重复三条以上的记录,并编写SQL删除这些重复记录查询Name字段记录重复三条以上的记录

select name from A group by name having count(name)>3 删除重复记录

if exists(select * from sysobjects where name = 'tempA') drop table tempA

select ROW_NUMBER() over (order by name ) as rowid, name into tempA from Aselect * from tempA

--删除重复记录,只保留rowid最⼩的那⼀⾏delete from tempA where name in

(select name from tempA group by name having count(name)>3)

and rowid not in (select min(rowid) from tempA group by name having count(name)>3)select * from tempA

因篇幅问题不能全部显示,请点此查看更多更全内容