面试集萃

1.有一个int数组,长度为10,并朝里擅自插入1~10,并且不能够再次复 

 1 static void Main(string[] args)
 2 {
 3     // a是要生成结果的数组
 4     int[] a = new int[10];
 5     int [] b=new  int[10];
 6     Random r = new Random();
 7     for (int i = 1; i < 11; i++)
 8     {
 9         b[i - 1] = i;
10     }
11     int temp = -1;
12     for (int i = 10; i > 0; i--)
13     {
14          int n = r.Next(1, i);
15          a[i - 1] = b[n-1];
16          temp = b[i-1];
17          b[i-1] = b[n-1];
18          b[n-1] = temp;
19     }
20     for (int i = 0; i < 100;i++ )
21     {
22          if (i % 10 != 0)
23          {
24              Console.Write(a[i] + "\t");
25          }
26          else
27 
28 {
29          Console.WriteLine();
30     }
31     Console.ReadKey();
32 }

2.一模一样排列数的规则如下:1,1,2,3,5,8,13,21,34…,求第30位数是啊?,使用递归实现

 1 public int GetNumberAtPos(int pos)
 2 {
 3 
 4  if(pos==0||pos==1)
 5 
 6 { 
 7 
 8               return 1;        
 9 
10 }
11       int res = GetNumberAtPos(pos - 1) + GetNumberAtPos(pos - 2);
12       return res;
13 }                                                                                                                                               

3.说出部分常用的近乎,接口,请各国列举5单

  常用的类:StreamReader,WebClient,StringBuilder,SqlConnection,FileStream,File,Regex,List<T>,Dictionary<K,V>。

  常用之接口:IDisposable,IList,IEnumerable,IDbConnection,IComparable,ICollection,IDictionary。

4.游说发生部分数据库优化点的经验

  索引内的法则:想象成Dictionary,插入,删除,更新的速缓慢了,加上索引也基本上占了上空,查询的进度快了,加上索引以后速度提升大显著。

         (1)在时常找的字段上(select * from Person Where
Name=@Name)使用索引提高查询速度。

            (2)select中仅仅排有必要之字段,而不是*。

           
(3)避免隐式类型转换造成的全表扫描,在目录上以函数也会招全表扫描(因为索引只是也字段建立之,一旦采用表达式或者函数,那么索引就是失效了,当然为得采用”函数索引”,”表达式索引”解决之问题),使用索引不必然能够增强查询速度

    (4)避免在索引列上使计算(where Name+’A’=@MyName)。

         
 (5)不要进行无意思之优化,根据性查看器的表,对极端耗时的SQL进行优化。

5.哟是数据库事务

  (1) 事务的老三单特点:一致性,原子性,隔离性

  (2)
几单SQL语句,要么全部实践成功,要么全部履破产,事务之老三单操作:Begin,Commit,RollBack。

  (3) 取刚插入数据的ID值,就要用工作来隔断,

6.要简单的求证数据库建立目录的优缺点

  (1)使用索引可以加快数据的询问速度,不过是因为数量插入过程中会建索引,所以会减低数据的插,更新快,索引还会占有磁盘空间。

7.JavaScript面向对象

 1 (1)     定义一个Person类,创建一个对象
 2 
 3 function Person(name.,age){
 4     this.name=name;
 5 
 6          this.age=age;
 7 
 8          this.sayHi=function(){
 9 
10                    alert(this.name);
11 
12                    alert(this.age);
13 
14   }
15 
16 }
17 
18 var p=new Person(“HYL”,18);
19 
20 p.sayHi();
21 
22 (2)第二种,当new对象的时候方法只在内存中被创建了一次
23 
24 function Person(name.,age){
25     this.name=name;
26 
27          this.age=age;
28 
29 }
30 //原型对象里面存储的是所有的实例成员共享的成员,这个方法在内存中只存了一次
31 
32 Person.prototype.sayHi=function(){
33 
34             alert(this.name);
35 
36 }
37 
38 var p=new Person(“HYL”,18);
39 
40 p.sayHi()

8.Repeater控件和GirdView控件的得失

  (1)GirdView控件的亮点是:功能特别有力,提供分页,编辑,删除,选择等等很多功效,使用最便宜,直接拖拽到页面及,建立新的数据源,点几下蛋鼠标就可维护一个阐明的浏览,删除和改动了。缺点是:占用系统资源大,他的分页是把全副表底数据取出来,到GirdView上面进行分页的,因此若数据量比较异常的言语,速度好繁忙,效率极低,而且以模版已经定制好,想自己活决定,不太可能。

  (2)repeater控件的优点是:功能简单,效率高,容易灵活决定转变的HTML代码,分页需要好实现,整体来说,适合前台使用。缺点是:功能简单,需要协调开过多之工作才能够成就有意义。

9.数据库实现分页的几乎种办法(总结)

 1 (1)使用存储过程实现SQL语句的分页
 2 
 3 create proc p_GetPageUsers
 4 (
 5 
 6             @pageIndex int,   --当前请求的页码
 7 
 8             @pageSize int,  --页的数量
 9 
10             @totalCount int output  --输出多少条数据
11 
12 )
13 
14 as
15 
16 ----动态拼接SQL语句
17 
18 declare @sql nvarchar(2000)
19 
20 set @sql=’select top ’+CAST(@pageSize as nvarchar(16))+’* from 表名 where ID not in
21 (
22 
23 select top ‘+CAST((@pageIndex-1)*@pageSize as nvarchar(20))+’ ID from 表名 order by ID’
24 ) order by ID’
25 
26 exec (@sql)
27 
28 select @totalCount=count(0) from 表名
29 
30 (2)     使用row_number函数实现SQL语句的分页
31 
32 create proc p_GetPager
33 
34 (
35 
36             @pageIndex int,
37 
38             @pageSize int,
39 
40             @totalCount int out
41 
42 )
43 
44 as select @totalCount=count(1) from表名
45 
46 select * from( select t.*,row_number() over(order by ID) as num from 表名 as t )as m
47 
48 where m.num between @pageSize*(pageIndex-1)+1 and @pageIndex*@pageSize
49 
50 (3)使用Linq实现分页
51 
52   public IQueryable<T> LoadEntities<S>(int pageSize,int pageIndex,out int total,Func<T,bool> whereLambda,Func<T,S> orderByLambda)
53 
54 {
55 
56 var tempData=db.Set<T>.Where<T>(whereLambda).OrderBy<T,S>(orderByLambda).Skip<T>(pageSize*(pageIndex-1)).Take<T>(pageSize).Asquerable();
57 }

10.使用JavaScript实现纯的异步Ajax请求

 1 <script type=”text/javascript” language=”javascript”>
 2 
 3            var request=false;
 4 
 5            //实现判断是否支持XMLHttpRequest的判定,这是一个通用方法
 6 
 7            function createXMLRequest(){
 8 
 9       try{
10 
11         request=new ActivexObject(“MSXML2.XMLHttP”);
12       }
13 
14            catch(e1){
15 
16               try{
17 
18                    request=new ActivexObject(“Microsoft.XMLHTTP”);
19 
20                }catch(e2){
21 
22                  Request =false;
23 
24           }
25 
26             }
27             if(!request&&typeof XMLHttpRequest!=’undefined’){
28 
29                     Request=new XMLHttpRequest();
30 
31            }
32 
33            //实现对后台的调用
34 
35            function getServerTime(){
36 
37                     createXMLRequest();
38 
39                     //构造URL地址(通过get方式发送request请求,true表示异步请求)
40 
41                     request.open(“GET”,”Default.ashx”,true);
42 
43                     request.onreadystatechange=function(){
44 
45                              if(request.readyState==4){
46 
47                                       document.getElementByID(“time”).innerHTML=request.responseText;
48 
49                              }
50 
51                     }
52 
53                     request.send(null);
54 
55            }
56 
57 </script>

11.C#倍受的寄托是什么?事件是无是同样栽委托,事件以及委托的涉及

  (1)委托可以拿一个方作为参数传递给另外一个术,委托可以理解啊对一个函数的指针,委托以及事件尚无可比性,因为委托是项目,事件是目标

12.short s=1;s=s+1;有错吗?short s=1;s+=1;有错吗?

  (1)第一种写法是发出误的,因为1凡是整形(int32),int+short的结果或者int,在此是心有余而力不足进展隐式类型转换的,改吧short
s=1; s=(short)s+1;就执行了

  (2)第二种写法没有错,因为该以其间自行就进行了隐式转换。

   小结未完待续

  

相关文章