初中级程序员面试题

本文汇总了初中级程序员面试中常见的C#和.NET面试题,涵盖JavaScript语法、异步编程、设计模式、数据库操作、ASP.NET框架等多个方面,深入探讨了各种编程概念和技术细节,旨在帮助面试者巩固基础知识,提升技能水平。
摘要由CSDN通过智能技术生成

自己整理的,也有摘自网络上的,如有侵权,请联系,我及时删除。

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

=赋值

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

===比较是否严格相等 "3"===3 //先比较类型,再进行值比较,false 

 

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

anull,也是一个对象,所以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变量的作用域是指:函数内定义的局部变量只在此函数内有效,而全局变量可以全局有效。

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

http://www.cnblogs.com/shinhwazt/p/6013045.html

var data = [];
  function demo(){
 
      var data = [];
      return{
 
          add:function(a){
 
              data.push(a);
          },
          print:function(){
 
              console.log(data);
          }
      }
  }
  var tool = demo();
  tool.add(1);
  tool.add(2);
  tool.add(3);
  tool.print();//[1, 2, 3]
 

闭包也可以帮我们解决一些小问题:

  for(var i=0;i<4;i++){

      setTimeout(function(){

          console.log(i);

      });

  }

  我们预期的结果是打印当前循环的i值结果输出全是4。先解释一下出现这么情况的原因:JS是一种单线程的语言,而setTimeout是异步的,只有当我们的代码执行完成以后setTimeout的处理函数才会执行,而执行的时候i的值已经是4了所以最终的输出全是4

  我们可以通过闭包来解决这一问题:

  for(var i=0;i<4;i++){

      (function(i){

          setTimeout(function(){

              console.log(i)

          })

      }(i))

  }

  闭包可以形成一个独立的作用域这样每次循环都会有一个独立的函数作用域,循环完成后虽然i的值仍然是4但是setTimeout的处理函数在寻找i的时候会优先找到作为参数的i,而每一个参数i都表示当次循环的i,利用闭包我们可以完美的解决这种问题。

  在我们实际开发的过程中,遇到这种情况我们就可以通过闭包来解决,我们所说的"这种情况"通常有三个特点:

1.首先有一个循环

2.循环里面会创建函数,并且函数是延后执行的

3.这些延后执行的函数会使用一个共同的变量,并且这个共同的变量和当前的循环值有关系

  我们按照这个规律套一下上面的代码:

  循环有了,每次循环也会生成一个函数,这些函数也都是在循环完成后才能执行,而且每一个函数都使用共同的i,而i就是当前的循环值,正好符合我们的三个特点。我们通过(function(){}())这种方式(匿名函数自执行)来形成一个闭包达到我们预期的目的。

 


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

js框架:jQuery EasyUIExtJSBootstrapAngularJS等等。

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

ExtJS:统一的前端UI开发框架,学习难度中等。尤其适合MIS系统的界面开发,开发文档和例子代码都比较完整。缺点是大量的js脚本,降低了运行速度。

Bootstrap:响应式网站开发框架,优点是降低了后端开发人员开发前端页面的难度,统一了界面风格,缺点是界面风格比较单一。

AngularJS:将java后端的优秀特性引入到了js前端,大而全的框架。缺点是学习曲线高,Angular2几乎重写。


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

Equals方法比较内容(值是否相等),==比较引用地址(是否指向同一个对象)。


7
ASP.NETApplicationSessionCookieViewStateCache等变量的区别是什么?

Application 应用程序级别

Session 会话级别用户跟踪

Cookie 客户端存储少量信息

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

Cache 缓存


8
、列举ASP.NET MVCActionResult的返回值有几种类型?

主要有View(视图)、PartialView(部分视图)、Content(内容)、JsonJson字符串)、Javascriptjs脚本)、File(文件)等几种类型。


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

WebApi消息处理管道独立于ASP.NET平台,支持多种寄宿方式。

 

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

用户从 Web 服务器请求应用程序资源->ASP.NET 接收对应用程序的第一个请求->为每个请求创建 ASP.NET 核心对象->HttpApplication对象分配给请求->HttpApplication 管线处理请求

refer:https://msdn.microsoft.com/zh-cn/library/ms178473(v=vs.100).aspx


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

延迟加载(Lazy Loading)只在真正需要进行数据操作的时候再进行加载数据,可以减少不必要的开销。


12
、简述Func<T>Action<T>的区别?

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


13
、开启一个异步线程的几种方式?多线程编程时的注意事项?

APMAsynchrocous Programming Model,比如:BeginXXXIAsyncResult)、EAPEvent-Based Asynchronous Pattern,比如:DownloadContentAsync)、TPLTask Parallel Library,比如:Task.Factory.StartNew)、async/await

线程饿死、线程死锁、线程同步、线程安全。


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

LinqLanguage Integrated Query),其中Linq to Object是对Enumberable扩展方法的调用,在执行时会转化为Lambda然后执行。

示例代码:Linq分组统计

var result = from p in list.AsEnumerable()

             group p by p.Province into g

             selectnew

             {

                 g.Key,

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

             };

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

{

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

});

 

 

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

继承(inheritance)、封装(encapsulation)、多态(polymorphism)。


16
、列举你所知道的设计模式?你在真实项目中使用过的有哪些?有什么心得?

单例模式、模板方法、工厂模式、外观模式、策略模式等。


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

查询Name字段记录重复三条以上的记录

select name from A groupby name havingcount(name)>3

 删除重复记录

ifexists(select*from sysobjects where name ='tempA')

  droptable tempA

select ROW_NUMBER() over (orderby name ) as rowid, name into tempA from A

 

select*from tempA

 

--删除重复记录,只保留rowid最小的那一行

deletefrom tempA where name in

(select name from tempA groupby name havingcount(name)>3)

and rowid notin (selectmin(rowid) from tempA group by name having count(name)>3)

 

select*from tempA

 

 

 

18.NetC#有什么区别

 答:.Net一般指 .net FrameWork框架,是一种平台,一种技术。

  C# 是一种编程语言,可以基于.Net 平台的应用。

19简述 private protected public internal 修饰符的访问权限。

. private : 私有成员, 在类的内部才可以访问。

protected : 保护成员,该类内部和继承类中可以访问。

public : 公共成员,完全公开,没有访问限制。

internal: 在同一命名空间内可以访问。

20 .列举ASP.NET 页面之间传递值的几种方式。

. 1.使用QueryString, ....?id=1; response. Redirect()....

2.使用Session变量

3.使用Server.Transfer

4.使用Application

5.使用Cache

6使用HttpContextItem属性

7.使用文件

8.使用数据库

9.使用Cookie

21. 一列数的规则如下: 112358132134...... 求第30位数是多少,用递归算法实现。

答:public class MainClass

{

public staticvoid Main()

{

Console.WriteLine(Foo(30));

}

public staticint Foo(int i)

{

if (i <= 0)

return 0;

else if(i > 0&& i <= 2)

return 1;

else returnFoo(i -1) + Foo(i - 2);

}

}

22.C#中的委托是什么?事件是不是一种委托?

委托可以把一个方法作为参数代入另一个方法。

委托可以理解为指向一个函数的引用。

是,是一种特殊的委托

23.override与重载的区别

override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要

Override 是进行基类中函数的重写。实现多态。

24.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用SessionCookieApplication,您有几种方法进行处理?

同第2

25.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值