zoukankan      html  css  js  c++  java
  • 面试集萃

    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)第二种写法没有错误,因为其在内部自动已经进行了隐式转换。

       总结未完待续

      

  • 相关阅读:
    HttpWebRequest.GetRequestStream方法timeout的原因及解决办法
    C#随机函数random()典型用法集锦
    windows 2008 开启默认共享
    Window xp命令大全
    大并发处理解决方案
    库特Z配置
    SQL Server 返回了错误 21(设备未就绪。) 解决方法
    C# 执行bat批处理文件
    sql索引从入门到精通(十亿行数据测试报告)
    DataTable使用时的小问题
  • 原文地址:https://www.cnblogs.com/hanyinglong/p/2827246.html
Copyright © 2011-2022 走看看