1.手写画出系统架构图,系统代码架构,有什么技术难点? 

2.手写画出系统部署图 CDN(一般购买别人的服务器会自动CDN,他们自己配置就OK啦)

3.asp.net 的session怎么实现会话共享?SessionId

4.谈谈你对asp.net生命周期的理解?

初始化,加载视图状态,回发数据,加载页面的用户代码,执行回发服务器端事件。

页面生命周期:

(1)、PreInit:设置master Page、设置主题、初始化控件
 (2)、Init:此事件发生在所有的控件被初始化以后,读取或者初始化控件的属性。
 (3)、InitComplete:初始化完成事件
 (4)、PreLoad:加载页面的ViewState和所有控件,然后处理包含在Request中的Postback数据。
 (5)、Load:此事件先递归调用控件的onload事件,直到所有的控件被加载完成。这个事件主要用来设置控件的属性的值。
 (6)、LoadComplete:加载完成事件。
 (7)、PreRender:在HTML被生成之前的最后一个事件,这个事件也是修改被返回的HTML的最后机会。
 (8)、Render:主要把HTML返回到客户端。
 (9)、UnLoad:清理页面,递归清理页面控件,例如关闭打开文件,关闭数据库连接等等。

5.聚集索引和非聚集索引,怎么用?

(1)、聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。

(2)、聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。

为什么索引越多越不好? 因为每次要重建索引。

6.事务,事务的机制,怎么创建?事物的名称空间,System.Transactions.Transaction。

可参考:http://www.cnblogs.com/wang726zq/archive/2012/05/17/Transaction.html

7.viewstate 为什么要用?因为要保存数据,提交到post提交。

8.ado.net 缓存,缓存多久从数据库中更新数据?可以设置过期时间

9.javascript,jquery

10.自我介绍,为什么换工作?

11.自定义服务器控件

12.js字符串转时间

//1.方法1
function GetDate(strDate)
{
   var st = strDate;
   var a = st.split(" ");
   var b = a[0].split("-");
   var c = a[1].split(":");
   var date = new Date(b[0],b[1],b[2],c[0],c[1],c[2]);
   return date;
}
var begin ="2016-01-19 21:05:18";
var end = "2016-01-20 21:05:18";
var s = GetDate(begin);
var d = GetDate(end);
if(d > s)
{
   alert("结束时间不能大于开始时间");
}
//2.方法2
//字符串转日期格式,strDate要转为日期格式的字符串
function getDate(strDate){
  var date = eval('new Date(' + strDate.replace(/\d+(?=-[^-]+$)/,
   function (a) { return parseInt(a, 10) - 1; }).match(/\d+/g) + ')');
  return date;
}
//测试
alert(getDate("2012-05-09"));//方法3var s = new Date(Date.parse("2013-12-12"));var d = new Date(Date.parse("2016-01-19 21:05:18"));

13.擅长做什么?

14. 以下叙述正确的是: B C

A. 接口中可以有虚方法。
B. 一个类可以实现多个接口。
C. 接口不能被实例化。
D. 接口中可以包含已实现的方法。 不行。可以用抽象类

15. 从数据库读取记录,你可能用到的方法有:BCD

A. ExecuteNonQuery
B. ExecuteScalar
C. Fill
D. ExecuteReader

16.简述private、protected、public、internal修饰符的访问权限
     pivate:私有成员,在类的内部才可以访问
     protected:保护成员,该类内部和继承类中可以访问
     public:公共成员,完全公开,没有访问限制。
     internal:在同一命名空间内可以访问。

17.一列数的规则如下: 1、1、2、3、5、8、13、21、34......求第30位数是多少, 用递归算法实现。

分析:

1、1、2、3((3-1)+(3-2))、5((4-1) + (4-2))、8、13、21、34
1   2   3   4

public class MainClass
{
    public static void Main()
    {
        Console.WriteLine(Foo(30));
    }
    public static int Foo(int i)
    {
        if (i <= 0)
        {
            return 0;
        }
        else if (i > 0 && i <= 2)
        {
            return 1;
        }
        else
        {
            return Foo(i - 1) + Foo(i - 2);
        }
    }
}

18. 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)

要求: 1.要有联动性,老鼠和主人的行为是被动的。
         2.考虑可扩展性,猫的叫声可能引起其他联动效应。

要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象
评分标准:
<1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分)
<2>从Mouse和Master中提取抽象(5分)
<3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒。(3分)
public interface Subject
{
    void AimAt(Observer obs);//针对哪些观察者,这里指猫的要扑捉的对象--老鼠
}

public interface Observer
{
    void Response();//观察者的响应,如是老鼠见到猫的响应
}

public class Master:Observer
{
    public Master(Subject subj)
    {
        subj.AimAt(this);
    }

    public void Response()
    {
        Console.WriteLine("Host waken!");
    }
}

public class Cat:Subject
{
    private ArrayList observers;
    public Cat()
    {
        this.observers = new ArrayList();
    }

    public void AimAt(Observer obs)
    {
        this.observers.Add(obs);
    }

    public void Cry()
    {
        Console.WriteLine("Cat cryed");

        foreach (Observer item in this.observers)
        {
            item.Response();
        }

    }
}

public class Mouse:Observer
{
    private string name;
    public Mouse(string name, Subject subj)
    {
        this.name = name;
        subj.AimAt(this);
    }

    public void Response()
    {
        Console.WriteLine(name +"attempt to escape!");
    }
}

static void Main(string[] args)
{
    Cat cat = new Cat();

    Mouse mouse1 = new Mouse("mouse1", cat);

    Mouse mouse2 = new Mouse("mouse2", cat);

    Master master = new Master(cat);

    cat.Cry();
}
 设计方法二: 使用event -- delegate设计..

    public delegate void SubEventHandler();

    public abstract class Subject

    {

        public event SubEventHandler SubEvent;

        protected void FireAway()

        {

            if (this.SubEvent != null)

                this.SubEvent();

        }

    }

    public class Cat : Subject

    {

        public void Cry()

        {

            Console.WriteLine("cat cryed.");

            this.FireAway();

        }

    }

    public abstract class Observer
    {

        public Observer(Subject sub)

        {

            sub.SubEvent += new SubEventHandler(Response);

        }

        public abstract void Response();

    }

    public class Mouse : Observer
    {

        private string name;

        public Mouse(string name, Subject sub) : base(sub)

        {

            this.name = name;

        }

        public override void Response()

        {

            Console.WriteLine(name + " attempt to escape!");

        }

    }

    public class Master : Observer
    {

        public Master(Subject sub) : base(sub){}

        public override void Response()

        {

            Console.WriteLine("host waken");

        }

    }

    class Class1
    {

        static voidMain(string[] args)

        {

            Cat cat = new Cat();

            Mouse mouse1 = new Mouse("mouse1", cat);

            Mouse mouse2 = new Mouse("mouse2", cat);

            Master master = new Master(cat);

            cat.Cry();

        }

    }

19. 有一组数字:20, 3, 79, 12, 6, 9, 10, 18, 100, 1请用编程的方式冒泡排序法进行由小到大的方式排序。

(1).方法一:

static void Main(string[] args)
{
    //声明一个int类型的数组
    , , , , , , , , ,  };
    //用两层for循环实现冒泡排序
    ; i < arr.Length; i++)
    {
        ; j < arr.Length- -i; j++)
        {
            //从小到大排序
            ])
            {
                int temp = arr[j];
                arr[j] = arr[j + ];
                arr[j + ] = temp;
            }

        }
    }

    Console.WriteLine("该数组经过冒泡排序后,从小到大的排列顺序为:");
    //输出经过排序后的数组
    ; i < arr.Length; i++)
    {
        Console.WriteLine(arr[i] + " ");
    }
    Console.ReadLine();
}

(2)方法二:

    public static void Sort(int[] myArray)
    {
        //取长度最长的词组 - 冒泡法
        for (int j = 1; j < myArray.Length; j++)
        {
            for (int i = 0; i < myArray.Length - 1; i++)
            {
                // 如果 myArray[i] > myArray[i+1] ,则 myArray[i] 上浮一位 (从小到大的排序)
                /*if (myArray[i] > myArray[i + 1])
                {
                    int temp = myArray[i];
                    myArray[i] = myArray[i + 1];
                    myArray[i + 1] = temp;
                }*/

                // 如果 myArray[i] < myArray[i+1] ,则 myArray[i] 下沉一位 (从大到小的排序)
                if (myArray[i] < myArray[i + 1])
                {
                    int temp = myArray[i];
                    myArray[i] = myArray[i + 1];
                    myArray[i + 1] = temp;
                }
            }
        }
    }
    static void Main(string[] args)
    {
        int[] myArray = new int[] { 20, 10, 8, 30, 5, 1, 2, 22 };

        Sort(myArray);

        for (int m = 0; m < myArray.Length; m++)
        {
            Console.WriteLine(myArray[m]);
        }

        Console.ReadLine();
        }
    }

20.请说出下面程序的输出结果:

(1).

class Class1
{
    private string str = "Class1.str";
    ;
    static void StringConvert(string str)
    {
        str = "string being converted.";
    }
    static void StringConvert(Class1 c)
    {
        c.str = "string being converted.";
    }

    static void Add(int i)
    {
        i++;
    }

    static void AddWithRef(ref int i)
    {
        i++;
    }

    static void Main(string[] args)
    {
        ;
        ;

        string str = "str";
        Class1 c = new Class1();
        Add(i1);
        AddWithRef(ref i2);
        Add(c.i);
        StringConvert(str);
        StringConvert(c);
        Console.WriteLine(i1);
        Console.WriteLine(i2);
        Console.WriteLine(c.i);
        Console.WriteLine(str);//str
        Console.WriteLine(c.str);//string being converted.
        Console.ReadLine();
    }
}

(2).

public abstract class A
{
    public A()
    {
        Console.WriteLine('A');
    }

    public virtual void Fun()
    {
        Console.WriteLine("A.Fun()");
    }
}
public class B:A
{
    public B()
    {
        Console.WriteLine('B');
    }
    public new void Fun()
    {
        Console.WriteLine("B.Fun()");
    }
    public static void Main()
    {
        A a = new B();
        a.Fun();
        Console.ReadLine() ;//A,B,A.Fun()

    }
}

21.C#读取文本文件

StreamReader objReader = new StreamReader("c:\\test.txt");
string sLine = "";
ArrayList arrText = new ArrayList();

sLine = objReader.ReadLine();//读取第一行的数据,读取所有行的的用objReader.ReadToEnd()
objReader.Close();
Console.WriteLine(sLine);
Console.ReadLine();
/*while (sLine != null)
{
    sLine = objReader.ReadLine();
    if (sLine != null)
        arrText.Add(sLine);
}*/

22.冒泡排序,文件读取和输出,读取数据库。

(1)数据库脚本:

create database test2016

create table testA
(
   Id int identity(1,1) primary key,
   data nvarchar(100)
)

insert into testA values('20, 3, 79, 12, 6, 9, 10, 18, 100, 1')

(2)C#代码

SqlConnection conn = new SqlConnection("server=.;database=test2016;uid=test;pwd=123123");
conn.Open();
SqlCommand cmd = new SqlCommand("select top 1 data from testA", conn);
string data = (string)cmd.ExecuteScalar();

Response.Write(data);

23.order_item.taxrate = orderItem.TaxRate ?? 0M;//可空类型和引用类型为null或空就取0,值类型不可能为null.

24.asp.net MVC中能够实现接收表单提交过来是数据的是? C
A.Session B.FormCollection C.ViewData D.Cookie

25.下面哪一个是用来追加到指定元素的末尾的? C
A.InsertAfter() B.append() C.appendTo() D.after()

26.为一个图片设置成背景图像后,设置背景图像在纵向和横向上平铺,下面哪个是实现该功能的? B

A.no-repeat B.repeat C.repeat-x D.repeat-y

27.下面哪个是diplay布局中用来设置对象以块显示,并添加新行的? C
A.inline B.none C.block D.compact

28.在Jquery中指定一个类,如果存在就执行删除功能,如果不存在就执行添加功能,下面哪一个是可以

直接完成该功能的? C
A.removeClass() B.deleteClass() C.toggleClass(class) D.addClass()

29.如果想要找到一个表格的指定行数的元素,用下面哪个方法可以快速找到指定元素?C

A.text() B.get() C.eq() D.contents()

30.在jquery中,想让一个元素隐藏,用(hide() )实现,显示隐藏的元素用( show() )实现。

31.Asp.Net中项目中,提供一个接口供第三方调用,一般可以采用( WebService )或( ASP.NET Web

API)技术实现。

32.在一个表单中,如果将所有的div元素都设置为绿色,功能实现代码是($("div").css

("color","green"); )

33.ASP.NET 页面之间传值的方式有几种?请举例说明。

(1).使用QueryString,如...?id=1;reponse.Redirect()......
(2).使用Session变量
(3).使用Server.Transfer
(4).Cookie
(5).Application
(6).Cache
Cache在页面传值这里用的不是太普遍,但也有这方面的功能。Cache主要是将用户数据存储在服务器数据缓存中,可以直接存储对象,但是对数据的更新不及时。用法:Cache["username"]="xiaosy";

34.ASP.NET 中使用保存用户登录信息的方式有几种?各有什么优缺点?

Session
Cookie
Application

以下是关于ASP.NET中保存各种信息的对象的比较,理解这些对象的原理,对制作完善的程序来说是相当有必要的。

在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么?
    为了更清楚的了解,我们总结出每一种对象应用的具体环境,如下表所示:

方法 信息量大小 保存时间 应用范围 保存位置
Application 任意大小 整个应用程序的生命期 所有用户 服务器端
Session 小量,简单的数据

用户活动时间+一段延迟时间(一般
为20分钟)

单个用户 服务器端
Cookie 小量,简单的数据 可以根据需要设定 单个用户 客户端
Viewstate 小量,简单的数据 一个Web页面的生命期 单个用户 客户端
Cache 任意大小 可以根据需要设定 所有用户 服务器端
隐藏域 小量,简单的数据 一个Web页面的生命期 单个用户 客户端
查询字符串 小量,简单的数据 直到下次页面跳转请求 单个用户 客户端
Web.Config文件 不变或极少改变的小量数据 直到配置文件被更新 单个用户 服务器端

(1).Application对象 
    Application用于保存所有用户的公共的数据信息,如果使用Application对象,一个需要考虑的问题是任何写操作都要在 Application_OnStart事件(global.asax)中完成.尽管使用Application.Lock和 Applicaiton.Unlock方法来避免写操作的同步,但是它串行化了对Application对象的请求,当网站访问量大的时候会产生严重的性 能瓶颈.因此最好不要用此对象保存大的数据集合. 
      (2).Session对象
    Session用于保存每个用户的专用信息.她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右).S
ession中的信息保存在Web服务器内容中,保存的数据量可大可小.当Session超时或被关闭时将自动释放保存的数据信息.由于用户停止使用应用 程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低.对于小量的数据,使用Session对象保存还是一个不错 的选择.使用Session对象保存信息的代码如下:

//存放信息
Session["username"]="zhouhuan";
//读取数据
string UserName=Session["username"].ToString();

(3).Cookie对象
    Cookie用于保存客户浏览器请求服务器页面的请求信息,程序员也可以用它存放非敏感性的用户信息,信息保存的时间可以根据需要设置.如果没有设置 Cookie失效日期,它们仅保存到关闭浏览器程序为止.如果将Cookie对象的Expires属性设置为Minvalue,则表示Cookie永远不 会过期.Cookie存储的数据量很受限制,大多数浏览器支持最大容量为4096,因此不要用来保存数据集及其他大量数据.由于并非所有的浏览器都支持 Cookie,并且数据信息是以明文文本的形式保存在客户端的计算机中,因此最好不要保存敏感的,未加密的数据,否则会影响网站的安全性.使用 Cookie对象保存的代码如下:

//存放信息
Response.Cookies["UserID"].Value="0001";
//读取信息
string UserID=Response.Cookies["UserID"].Value;

(4).ViewState对象
    ViewState 常用于保存单个用户的状态信息,有效期等于页面的生存期。ViewState容器可以保持大量的数据,但是必须谨慎使用,因为过多使用会影响应用程序的性 能。所有Web服务器控件都使用ViewState在页面回发期音保存自己的状态信息。如果某个控件不需要在回发期间保存状态信息,最好关闭该对象的 ViewState,避免不必要的资源浪费。通过给@Page指令添加“EnableViewState=false”属性可以禁止整个页面的 ViewState。使用ViewState对象保存信息的代码如下。

  //存放信息
   ViewState["nameID"]="0001";
  //读取信息
   string NameID=ViewState["nameID"].ToString();

(5).Cache对象
    Cache对象用于在HTTP请求间保存页面或数据。该对象的使用可以极大地提高整个应用程序的效率。它允许将频繁访问的大量服务器资源存储在内存 中,当用户发出相同的请求后服务器不再次处理而是将Cache中保存的信息返回给用户,节省了服务器处理请求的时间。此对象的实例是每个应用程序专用的, 其生存期依赖于该应用程序的生存期。当重新启动应用程序时,将重新创建其Cache对象的实例。使用Cache对象保存信息的代码如下。

  //存放信息
   Cache["nameID"]="0001";
  //存放信息
   Cache.Insert("nameID","0001"1);
  //读取信息
  string NameID=Cache["nameID"].ToString();

(6).隐藏域
Hidden控件是属于HTML类型的服务器控件,使用此控件可以实现隐藏域的功能。其实此控件和其它服务器控件的使用没有太大区别,只是它不会在用户端 的浏览器中显示,始终处于隐藏状态。但是每次页面提交的时候,此控件和其它服务器控件一同提交到服务器端,因此在服务器端可以使用Value属性获取或保 存一些数据信息。使用Hidden控件保存信息的代码如下。

  //存放信息
  Hidden.Value="0001";
  //获取信息
  string NameID=Hidden.Value;

(7).查询字符串
查询字符串的方式是将要传递的值连接在URL后面,然后通过Response.Redirect方法实现客户端的重定向。这种方式可以实现在两个页面之间传递信息。由于URL的长度有一定的限制,因此不能传递太大的信息,加外安全性也不是很好。
传递信息如下。

   Response.Redirect("List.aspx?nameID=0001&gradeID=002");
  //执行上面的语句后在IE地址栏显示的URL的代码如下。
   http://localhost/List.aspx?nameID=0001&grade=002
  //当跳转到List.aspx后,可以通过以下代码获得所传递的信息。
  string NameID.GradeID;
   NameID=Request.Params["nameID"];
   GradeID=Request.Params["gradeID"];

除了以上介绍的几种对象外,还可以使用Context对象和Web.Config配置文件。

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

委托可以把一个方法作为参数代入另一个方法。
委托可以理解为指向一个函数的引用。

是,是一种特殊的委托。

36.sql server 数据库中的view和MVC里面的view 是否一样?有何区别?

不一样,SQL 中的view 是表的查询或关联查询组合的语句可以创建为视图。

View(视图)显示数据(数据库记录)

View(视图)是应用程序中处理数据显示的部分。
通常视图是依据模型数据创建的。

37.MVC由几部分组成?简单说明每一部分的作用。

MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式。
Model(模型)表示应用程序核心(比如数据库记录列表)。
View(视图)显示数据(数据库记录)。
Controller(控制器)处理输入(写入数据库记录)。

MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
  通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
  通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
  通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。

38.ASP.NET MVC view与controller 传值方式有几种?请列举

ViewData

ViewBag

TempData

参考:http://www.cnblogs.com/allenhua/p/4129478.html

39.MVC 中模型(Model)的概念是?

Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
  通常模型对象负责在数据库中存取数据。

40.MVC中的views文件夹一般可以存放哪些类型的文件?

.cshtml,web.config

41.请说出margin-right:-200px和margin-left:200px的区别?

(1).效果是一样的,能不用负数最好,因为有时候会超出元素本身,使元素看不到了。

(2).不一样,有没有浮动和定位。

42.用.net做b/s结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层。

一般为三层
数据访问层,业务层,表示层
业务层一般分为二层,业务表观层实现与表示层的沟通,业务规则层实现用户密码的安全等。
表示层为了与用户交互,例如用户添加表单。

优点:分工明确,条理清晰,易于调试,而且具有可扩展性。

缺点:增加成本。

43.有一张表,里面有3个知道:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语

90分,请用一条SQL语句查询出这三条记录并按以下条件显示出来(并写出您的思路):
大雨或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。

显示格式:
语文 数学 英语
及格 优秀 不及格。

select case when 语文>=80 then '优秀' when 语文>=60 then '及格' else '不及格' end 语文 ,
case when 数学>=80 then '优秀' when 数学>=60 then '及格' else '不及格' end 数学 ,
case when 英语>=80 then '优秀' when 英语>=60 then '及格' else '不及格' end 英语 from student

44.在本机上实现用户管理功能

功能要求:(1).能通过不同的用户名和密码登录。
(2).用户登录后可以进行账号的增删改查功能。

技术要求:(1).项目中需体现B/S三层架构思想
(2).通过ASP.net MVC 方式实现
(3).开发语言使用C#
(4).自行设计数据库表
(5).其他方面根据您的经验发挥,以体现您的技术优势。

45.在本机上实现公司部门的管理功能

功能要求:(1).实现添加修改删除部门的操作
(2).能支持至少3个层级部门的管理。
(3).选择部门树的节点后进行部门的修改及子部门的添加功能

技术要求:(1).用您最擅长的前端ajax技术(不限javascript,jQuery,extjs等前端框架)展现部门树
(2).开发语言使用C#
(3).自行设计数据库表
(4).能通过asp.net mvc方式实现更好。
(5).其他方面根据您的经验发挥,以体现您的技术优势。

46.在SQL Server 中,有Table1记录如下表

ID                                                                    Name
828C81C3-8077-491F-8C54-52C413146801    张三
828C81C3-8077-491F-8C54-52C413146801    张三
770BDF76-A9E7-492E-989C-FF1337C54F63    王五

1) 请使用SQL,查询出Name重复的记录。
select * from Table1
where ID in(
select ID from Table1 group by ID,Name having count(*) > 1
)

2) 请使用SQL语句将有重复记录删除(只保留一个)。

select ID,name from Table1 group by ID,Name having count(*) > 1

创建SQL:
create table Table1
(
   ID uniqueidentifier,
   Name nvarchar(40)
)

insert into Table1(Id,Name)
values(newid(),'张三')

insert into Table1(Id,Name)
values(newid(),'王五')

--把张三的ID改成一样
update Table1 set ID='828C81C3-8077-491F-8C54-52C413146801'
where ID='7F2CBAD5-7B32-41E8-B3C3-793C8BE40D35'

47.写出一条SQL语句:取出表A中第31到第40记录(sqlserver,以自动增长的Id作为主键,注意:id可能不是连续的,至少2种写法)

(1).select top 10 * from A where Id not in(select top 30 ID from A)

(2).select * from (select row_number() over(order by Id) as rownumber,id,name from A) as B
where rownumber between 31 and 40

(3).select * from A order by id offset 31 rows fetch next 10 rows only (sql2012)

48.abstract class和interface有什么区别?
答:
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

49.页面之间传值有哪几种方法?

使用QueryString,如...?id=1;reponse.Redirect()......
使用Server.Transfer

session(viewstate) 简单,但易丢失 
application 全局 
cookie 简单,但可能不支持,可能被伪造 
input ttype="hidden" 简单,可能被伪造 
url参数 简单,显示于地址栏,长度有限 
数据库 稳定,安全,但性能相对弱

50.请描述下ASP.NET 页面事件的执行步骤。

参考: http://www.cnblogs.com/dachie/archive/2010/05/14/1735526.html

Page 执行中将按照如下顺序激活事件:
Page.PreInit
Page.Init
Page.InitComplite
Page.PreLoad
Page.Load
Page.LoadComplete
Page.PreRender
Page.PreRenderComplete

51.请使用javascript给表单中所有的文本框控件赋值。

var texts = document.forms[name].document.getElementsByTagName("input");
for(var i=0;i< texts.length;i++)
{
if(texts[i].type =="text")
{
texts[i].value ="";
}
}

52.描述一下JS跨域限制的问题,并提出绕过浏览器对JS跨域的访问限制的几种方法?

参考:http://www.jb51.net/article/68815.htm

JSONP方式
表单POST方式
服务器代理
html5的xDomainRequest
Flash request

53.分布式系统有哪几种技术,分别有什么优缺点?

常用的有EJB、rmi、Web Service,还有Hessian、NIO等,它们的优缺点比较比下:
(1):EJB
优势:可扩展性好,安全性强,支持分布式事务处理。
劣势:不能跨语言;配置相对复杂,不同J2EE容器之间很难做无缝迁移。

(2):rmi
优势:面向对象的远程服务模型;基于TCP协议上的服务,执行速度快。
劣势:不能跨语言;每个远程对象都要绑定端口,不易维护;不支持分布式事务JTA,RMI框架对于安全性、事务、可扩展性的支持非常有限。

(3): Web Service
优势:跨语言、跨平台,SOA思想的实现;安全性高;可以用来兼容legacy系统的功能
劣势:性能相对差,不支持两阶段事务

(4):Hessian
优势:使用简单,速度快;跨语言,跨平台;可以用来兼容legacy系统的功能。
劣势:安全性的支持不够强,不支持两阶段事务。

(5):NIO(Mina/Netty)
优点:基于TCP通信,效率上高于HTTP的方式,非阻塞IO应对高并发绰绰有余。根据具体的需要制定数据传输的格式,可扩展性强。
缺点:不能跨语言,无法穿透防火墙

54.请描述下你所熟悉的设计模式及应用场景。

55.SOA的架构中,大都通过XML格式的消息来传递调用和消息。对于特定的行业,会有一些特定的XML标

准,请列举出某些行业标准。

1.请将你心目中的软件开发工程的生产流程简要地写出来。

可行性分析,需求分析,概要设计,总体设计,详细设计,编码实现,单元和集成测试,软件验收。

2.简述private、protected、public、internal 修饰符的访问权限。

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

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

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

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

3..Net的错误处理机制是什么?

try,catch,finally; 发生异常时,系统找到匹配的 catch 子句后,系统将把控制转移到该 catch 子句的第一条语句,catch处理完成后,执行finally语句块,finally是可选的,如果有,则必须是否出现异常都会执行。

4.ASP.NET 中<%# %>和<% %>有什么区别?

<%# %>表示绑定的数据源,<% %>是服务器端代码块

在asp.net中经常出现包含这种形式<%%>的html代码,总的来说包含下面这样几种格式:
一.  <%%>
这种格式实际上就是和asp的用法一样的,只是asp中里面是vbscript或者javascript代码,而在asp.net中是.net平台下支持的语言。
特别注意:服务器控件中不能有<%%>语法
(这里用C#代码)
  <%
        int a = 2;
        int b = 3;
        int c = a + b;
        Response.Write(c);
    %>二. <%#%>
如果是这种格式的话那就是asp.net下特有的,它是控件数据绑定的语法,且必须要调用该控件的DataBind()方法才执行(或者整个页面Page.DataBind()也就是对所得控件都调用DataBind()方法,在这种情况下不管是服务器控件还是客户端控件都会绑定)
特别注意:只有服务器控件才能用<%#%>语法(不准确的)
当整个页面调用this.DataBinder()方法时,不管是服务器控件还是客户端控件都会绑定
<div>
Server Control:<asp:TextBox ID="TextBox1" runat="server" Text="<%#text%>"></asp:TextBox><br /><!--Server Control-->
Client Control:<input type="text" id="textbox2" value="<%#text%>" /><!--Client Control-->
 </div>aspx.cs代码如下:   protected string text;//注意这里必须申明为public或protected,否则aspx页面(子类)无法访问
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                this.text = "aaaaaaaaaaaaa";
                this.TextBox1.DataBind();//或this.DataBind();
            }
        }
当this.TextBox1.DataBind()  运行显示出来的效果。
this.DataBind() 运行显示出来的效果。

5.在C#中,string str= null与string str=""有何区别?

string str = null 没有创建内存空间,str中存放的是空引用指针;

string str = "" 创建了内存空间,str中存放的是指向堆中的指针。

简单地说:

string str =""; 给你一张白纸。

string str = null; 连白纸也没有。

6.页面A.aspx中的变量temps值传给B.aspx中有几种方法?

QueryString,session,cookie,application,server.transfer

参考:http://www.cnblogs.com/allenhua/p/5215283.html

7.如果需要实现用户登录的密码加密,简要描述你会如何做?

public static string MD5(string str)
{
    byte[] b = Encoding.Default.GetBytes(str);
    b = new MD5CryptoServiceProvider().ComputeHash(b);
    string ret = "";
    ; i < b.Length; i++)
        ret += b[i].ToString(, ');
    return ret;
}

8.什么叫SQL注入,如何防止?

SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。常见的SQL注入式攻击过程类如:
⑴ 某个ASP.NET Web应用有一个登录页面,这个登录页面控制着用户是否有权访问应用,它要求用户输入一个名称和密码。
⑵ 登录页面中输入的内容将直接用来构造动态的SQL命令,或者直接用作存储过程的参数。下面是ASP.NET应用构造查询的一个例子:
System.Text.StringBuilder query = new System.Text.StringBuilder(”select * from Users where login = ’”)。Append(txtLogin.Text)。Append(”’ AND password=’”)。Append(txtPassword.Text)。Append(”’”);
⑶ 攻击者在用户名字和密码输入框中输入”’或’1’=’1″之类的内容。
⑷ 用户输入的内容提交给服务器之后,服务器运行上面的ASP.NET代码构造出查询用户的SQL命令,但由于攻击者输入的内容非常特殊,所以最后得到的 SQL命令变成:select * from Users where login = ’’ or ’1’=’1’ AND password = ’’ or ’1’=’1’.
⑸ 服务器执行查询或存储过程,将用户输入的身份信息和服务器中保存的身份信息进行对比。
⑹ 由于SQL命令实际上已被注入式攻击修改,已经不能真正验证用户身份,所以系统会错误地授权给攻击者。
如果攻击者知道应用会将表单中输入的内容直接用于验证身份的查询,他就会尝试输入某些特殊的SQL字符串篡改查询改变其原来的功能,欺骗系统授予访问权限。
系统环境不同,攻击者可能造成的损害也不同,这主要由应用访问数据库的安全权限决定。如果用户的帐户具有管理员或其他比较高级的权限,攻击者就可能对数据库的表执行各种他想要做的操作,包括添加、删除或更新数据,甚至可能直接删除表。
  如何防范?
好在要防止ASP.NET应用被SQL注入式攻击闯入并不是一件特别困难的事情,只要在利用表单输入的内容构造SQL命令之前,把所有输入内容过滤一番就可以了。过滤输入内容可以按多种方式进行。
⑴ 对于动态构造SQL查询的场合,可以使用下面的技术:
第一:替换单引号,即把所有单独出现的单引号改成两个单引号,防止攻击者修改SQL命令的含义。再来看前面的例子,”select * from Users where login = ’’’ or ’’1’’=’’1’ AND password = ’’’ or ’’1’’=’’1’”显然会得到与”select * from Users where login = ’’ or ’1’=’1’ AND password = ’’ or ’1’=’1’”不同的结果。
第二:删除用户输入内容中的所有连字符,防止攻击者构造出类如”select * from Users where login = ’mas’ —— AND password =’’”之类的查询,因为这类查询的后半部分已经被注释掉,不再有效,攻击者只要知道一个合法的用户登录名称,根本不需要知道用户的密码就可以顺利获得访问权限。
第三:对于用来执行查询的数据库帐户,限制其权限。用不同的用户帐户执行查询、插入、更新、删除操作。由于隔离了不同帐户可执行的操作,因而也就防止了原本用于执行select命令的地方却被用于执行insert、update或delete命令。
⑵ 用存储过程来执行所有的查询。SQL参数的传递方式将防止攻击者利用单引号和连字符实施攻击。此外,它还使得数据库权限可以限制到只允许特定的存储过程执行,所有的用户输入必须遵从被调用的存储过程的安全上下文,这样就很难再发生注入式攻击了。
⑶ 限制表单或查询字符串输入的长度。如果用户的登录名字最多只有10个字符,那么不要认可表单中输入的10个以上的字符,这将大大增加攻击者在SQL命令中插入有害代码的难度。
⑷ 检查用户输入的合法性,确信输入的内容只包含合法的数据。数据检查应当在客户端和服务器端都执行——之所以要执行服务器端验证,是为了弥补客户端验证机制脆弱的安全性。
在客户端,攻击者完全有可能获得网页的源代码,修改验证合法性的脚本(或者直接删除脚本),然后将非法内容通过修改后的表单提交给服务器。因此,要保证验证操作确实已经执行,唯一的办法就是在服务器端也执行验证。你可以使用许多内建的验证对象,例如 RegularExpressionValidator,它们能够自动生成验证用的客户端脚本,当然你也可以插入服务器端的方法调用。如果找不到现成的验证对象,你可以通过CustomValidator自己创建一个。
⑸ 将用户登录名称、密码等数据加密保存。加密用户输入的数据,然后再将它与数据库中保存的数据比较,这相当于对用户输入的数据进行了”消毒”处理,用户输入的数据不再对数据库有任何特殊的意义,从而也就防止了攻击者注入SQL命令。 System.Web.Security.FormsAuthentication类有一个 HashPasswordForStoringInConfigFile,非常适合于对输入数据进行消毒处理。
⑹ 检查提取数据的查询所返回的记录数量。如果程序只要求返回一个记录,但实际返回的记录却超过一行,那就当作出错处理。

9.请用C#简要写出连接SQL Server或者Oracle的代码。

SqlConnection conn = new SqlConnection("server=.;database=testdb;uid=sa;pwd=1234");

conn.open();

10.请用C#写一个函数,验证输入的日期格式是YYYY-MM-DD

http://blog.csdn.net/dl020840504/article/details/17055531

11.写出一条SQL语音,取出表A中第31到第40记录(SQLServer以自动增长的ID作为主键,注意:ID可能不是连续的)

12.编程写出二分查找(又称折半查找)的算法。

13.Write a Javascript function,which retrieves a form object by the argument,and then,check all checkboxes in the form.

一、选择题

1.以下描述正确的是(BC)
A.接口中可以有虚方法
B.一个类可以实现多个接口
C.接口不能被实例化
D.接口中可以包含已实现的方法

2.声明一个委托(public delegate int CallBack(int x);则该委托产生的回调方法的原型为( B )
A.void callBack(int x)
B.int receive(int num)
C.string receive(int x)
D.不确定的

你把委托想像成一个类就行了.申明方法,放的位置啥的都像个类
委托产生的回调方法的原型就和那个(现在假定就叫它委托类)委托类申明一样的 ,
即B,参数int ,返回类型int .就它了,

3.下列描述错误的是(D)
A.类不可以多重继承而接口可以
B.抽象类自身可以定义成员而接口不可以
C.抽象类和接口都不能被实例化
D.一个类可以有多个基类和多个基接口

不可以
C#中一个类只能有一个基类,但可以有多个基接口。
C#中提供了类的继承机制,但只支持单继承,而不支持多继承,即在C#中一次只允许继承一个类,不能同时继承多个类

4.下列关于构造函数的描述正确的是( C )
A.构造函数可以声明返回类型
B.构造函数可以用private修饰
C.构造函数必须与类名相同
D.构造函数不能带参数

B。【解析】构造函数没有返回值,虽然叫函数但是它没有任何返回值,包括void型都不是,官方叫法为“构造器”。

5.接口是一种引用类型,在接口中可以声明( A ),但不可以声明共有的域或私有的成员变量。
A.方法,熟悉,索引器和事件
B.方法,属性信息,属性
C.索引器和字段
D.事件和字段

6.Class Class1
{

Public static int Count = 0;
Static Class1(){
Count++;
}

Public Class1(){
Count++;
}
}

Class1 o1 = new Class1();
Class2 o2 = new Class1();

请问,Class1.Count的值为多少?( C )
A.1
B.2
C.3
D.4

7.如何理解封装(可用简单代码示例) 参考:http://www.jb51.net/article/41553.htm

public class User
{
    /// <summary>
    /// 用户名
    /// </summary>
    private string name;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }
}

8.如何理解继承(可以简单代码示例)

public class BaseClass
    {
        ;

        public BaseClass(int index)
        {
            i = index;
        }
    }

    public class DerivedClass : BaseClass
    {
        ;

        public DerivedClass(int index)
            : base(index)
        {
            j = index;
        }
    } 

9.如何理解多态(可以用简单代码示例) http://www.jb51.net/article/45927.htm

通过继承实现的不同对象调用相同的方法,表现出不同的行为,称之为多态。

public class Animal
    {
        public virtual void Eat()
        {
            Console.WriteLine("Animal eat");
        }
    }
    public class Cat : Animal
    {
        public override void Eat()
        {
            Console.WriteLine("Cat eat");
        }
    }
    public class Dog : Animal
    {
        public override void Eat()
        {
            Console.WriteLine("Dog eat");
        }
    }
    class Tester
    {
        static void Main(string[] args)
        {
            Animal[] animals = ];
            animals[] = new Animal();
            animals[] = new Cat();
            animals[] = new Dog();
            ; i < ; i++)
            {
                animals[i].Eat();
            }
        }
    }

10.泛型(T)的具体作用与常见使用泛型的对象类型。

11.什么是委托,委托的具体作用。

委托就是把方面的参数名传到到另一个方法中。

委托可以在window 窗体之间传值。

12.多线程环境中如何保证线程安全。

13.抽象类和接口类的异同。

抽象类可以有自己的实现,接口却仅有声明,可以有自己的静态数据字段;
java和C#中可以实现多个接口,却只能继承一个抽象类(或者非抽象类)(单继承,和c++的多继承不同);

接 口是一个纯粹的抽象类,没有任何实际的东西,只是定义了一个框架,而抽象类里面可以有实际的一个方法,并不要求所有的方法都是抽象的。可以实现一个接口中 的所有方法,也可以继承一个抽象的类,然后覆写其中的方法。接口一般只有方法,而没有数据成员或属性。抽象类有方法,也有数据成员或属性,一般情况下,优先考虑用接口,只有当可能要访问到数据成员或属性时,用抽象类。

14.什么是Socket,为什么要使用Socket。

15.简述List和String[]的区别。

16.什么是WCF,WCF的作用。

Views文件夹。该Views文件夹是推荐的放置你的视图的位置。视图组件主要使用.aspx,.ascx和.master文件实现;此外,也有可能使用其他任何与视图有关联的文件

32.值类型和引用类型的区别?写出C#的样例代码。

基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。所有的值类型均隐式派生自 System.ValueType。与引用类型不同,从值类型不可能派生出新的类型。但与引用类型相同的是,结构也可以实现接口。与引用类型不同,值类型不可能包含 null 值。然而,可空类型功能允许将 null 赋给值类型。每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。值类型主要由两类组成:结构、枚举,结构分为以下几类:Numeric(数值)类型、整型、浮点型、decimal、bool、用户定义的结构。引用类型的变量又称为对象,可存储对实际数据的引用。声明引用类型的关键字:class、interface、delegate、内置引用类型: object、string

(2).

值类型的值是存放在栈中的,改变其值,不改变变量原有的值(为什么),而引用类型的值是存放在栈中的,其引用的地址是存放在堆栈中的,改变其值也就改变了变量原有的值。值类型不允许包含null值,然而可空类型可以将null赋值给值类型。

一、选择题
1.以下关于ASP.NET MVC 的运行过程,描述正确的是。B

A.浏览器请求-> 模型->视图->控制器->显示结果
B.浏览器请求->控制器->模型->视图->显示结果
C.浏览器请求->模型->控制器->视图->显示结果
D.浏览器请求->视图->模型->控制器->显示结果

2.对于ASP.NET网站中使用Ajax技术,服务器端哪些形式可供客户端的访问。(多选)
A.自定义控件
B.ASP.NET页面
C.HttpHandler
D.HttpModule

3.在.NET中,当使用try-catch-finally对程序进行异常处理时,下列说明错误的是。
A.每一个异常处理语句中,只可以有1个try
B.每一个异常处理语句中,只可以有1个catch
C.每一个异常处理语句中,只可以有1个finally
D.try 不可单独使用,必须和catch或finally配合使用

4.下面C#程序片段,不需要拆/装箱的是。
A.int i=0;object obj = i;
B.int i=0;string str = i.ToString();
C.int i=-1;int r = Math.(i);
D.int i=0;object obj =0;if(obj=i)..

5.如下程序的运行结果是( A )
public abstract class A
{
public A()
{
Console.WriteLint('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
}

public class B:A
{
public B()
{
Console.WriteLine('B');
}

public new void Fun()
{
Console.WriteLine("B.Fun()");
}
}

public static void Main()
{
A a = new B();
a.Fun();
}

A. A B A.Fun() B.A B B.Fun() C.B A A.Fun() D.B A B.Fun()

在类实例化时,程序会自动执行类的默认构造函数,因为B继承A,所以先执行类A的默认构造函数,然后是B。用父类实例化子类(A a=new B()),对于(a.Fun)来说,是调用的父类中的Fun函数,如果用(B a=new B()),a.Fun就会调用类B中的Fun函数,输出结果会是B.Fun

6.以下关于ref和out的描述哪些项是正确的?(多选)( ACD)

A.使用ref参数,传递到ref参数的参数必须最先初始化。
B.使用out参数,传递到out参数的参数必须最先初始化。
C.使用ref参数,必须将参数作为ref参数显式传递到方法。
D.使用out参数,必须将参数作为out参数显式传递到方法。

7.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁? 不会锁死 (同一线程可以递归调用lock语句)

public void test(int i)
{
    lock (this)
    {
        )
        {
            i--;
            test(i);//i始终会变为10,10不满足条件,不会进这里递归调用
        }
    }
}
protected void Page_Load(object sender, EventArgs e)
{
    test();
    ";//这里可以输出来。

}

二、填空题
1.面向对象的语言具有(继承 )性,(封装 )性,(多态 )性
2.能用foreach 遍历访问的对象需要实现(IEumberator )接口或声明( GetEnumberator)方法的类型。

但是我在平常使用foreach in 的时候都是直接用的呀,也没出什么问题呀。请问,这是为什么呢。 如果按题目中问的那样去实现超级接口IEnumerator或被声明 GetEnumerator 方法的类型,应该怎样去做呢? 谢谢

答:平常使用foreach in 的时候都是用的系统定义好的集合类(实现ICollection接口)。比如 arrayList,stringDictionary ,数组等。这些是平台封装好的,已近实现了IEnumerator 接口了。要让自己写的类也能时候foreach 就必须 在编写类的时候实现该接口。这样就可以事后foreach遍历了。比如 定义一个 people 的类,实现了IEnumerator接口。有一个数组 People[] tempPeople ,那么 就可以用: foreach( p in tempPeople){ console.writeline(p.name);}这样就免去了用for 循环的麻烦。至于怎么样去实现Iemumerator接口。查一下MSDN 就可以啦。

3.String s = new String("xyz");创建了几个String Object?
两个,new的时候一个,还有一个s

4.分析以下代码,完成填空
string strTmp="abcdefg 某某某";
int i = System.Text.Encoding.Default.GetBytes(strTmp).Length;//一个汉字占两个字节
int j = strTmp.Length;
以上代码执行完后,i=(14 ),j=( 11)

5..net中读写数据库中数据存储器的类是( DataSet ),执行语句命令的类是( DataCommand ),数据的集合,用户填充的类是( DataAdapter)。
6.用sealed修饰的类有什么特点?
sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其他类的基类,则会发生编译时错误。

三、问答题

1.new 有几种用法?
(1).作为运算符用来创建一个对象和调用构造函数。
(2).作为修饰符,就是在子类中隐藏基类的成员(包括数据成员和成员函数)。
(3).用于在泛型声明中约束可能用作类型参数的参数的类型。

2.简述private,protected,public,internal修饰符的访问权限。
3.C#中的委托是什么?事件是不是一种委托?
4.在C#中,string str = null 与string str ="",请尽量使用文字或图像说明其中的区别。
5.override与重载的区别。
重载是方法的名称相同。参数或参数类型不同,进行多 次重载以适应不同的需要 Override 是进行基类中函数的重写。为了适应需要
6.string和StringBuilder区别。

String对象是不可改变的,每次使用String类中的方法时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的String对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可使用StringBuilder类。

1.如果要操作少量的数据用 = String
2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder

7.列举ASP.NET 页面之间传递值的几种方式。
8.请编程实现一个冒泡排序算法?

int [] array = new int [*] ;
 ;
 ; i < array.Length -  ; i++)
{
 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}
}
}
int[] arr = new int[*];
;i<arr.Length;i++)
{
   ;j<arr.Length--i;j++)
   {
       ]) //从 小到大
       {
           int temp = arr[j];
           arr[j] = arr[j+];
           arr[j+] = temp;
       }

   }
}

;i < arr.Length;i++)
{
   Consoele.WriteLine(arr[i]+" ");
}

四、SQL语句编写应用
1.查询出所有学生的姓名,性别,年龄排序排列。
2.修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”
3.删除学生表的数据,姓名以C开头,性别为‘男’的记录删除。
4.查出表payinfo中薪水(pay)在8000到10000的工号(Uid)

五、
用SQL编写语句
1) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话
2) 修改学生表的结构,添加一列信息,学历
3) 修改学生表的结构,删除一列信息,家庭住址
4) 向学生表添加如下信息:
5) 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”
6) 删除学生表的数据,姓名以C开头,性别为‘男’的记录删除
7) 查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号示出来
8) 查询学生表的数据,查询所有信息,列出前25%的记录
9) 查询出所有学生的姓名,性别,年龄降序排列
10) 按照性别分组查询所有的平均年龄

--1) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话
CREATE TABLE student
(
[id] [int] IDENTITY(1,1) NOT NULL,
[student_id] [nvarchar](50) NULL,
[studen_name] [nvarchar](50) NULL,
[age] [int] NULL ,
[sex] [nvarchar](5) NULL,
[address] [nvarchar](200) NULL,
[tel] [nvarchar](20) NULL
)

--2) 修改学生表的结构,添加一列信息,学历 education
alter table student add education nvarchar(10) NULL

--3) 修改学生表的结构,删除一列信息,家庭住址
alter table student drop column address

--5) 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”

update student set education='大专' where tel like '11%'

--6) 删除学生表的数据,姓名以C开头,性别为‘男’的记录删除

delete student where studen_name like 'C%' and sex='男'

--7) 查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号示出来
select studen_name,student_id from student
where age<22 and education='大专'

--8) 查询学生表的数据,查询所有信息,列出前25%的记录
select TOP 25 PERCENT * from student

--9) 查询出所有学生的姓名,性别,年龄降序排列
select studen_name,sex,age from studen order by age desc

--10) 按照性别分组查询所有的平均年龄

select avg(age) as age from studen group by sex

9.一列数的规则如下:1、1、3、5、8、13、21、34....求第30位数是多少,用递归算法实现。

10.读程序判断结果

class A
{
    public A()
    {
        PrintFields();
    }

    public virtual void PrintFields(){ }
}

class B:A
{
    ;
    int y;
    public B()
    {
        y=-;
    }

    public override void PrintFields()
    {
        Console.WriteLine("x={0},y={1}",x,y);
    }
}

当使用new B()创建B的实例时,产生什么输出?x=1,y=0

A a = new B();//x=1,y=0,这样的话,a.PrintFields()调用的是B的PrintFields方法,输出x=1,y=0,因为使用B实例化a,所以调用B类的PrintFields方法;
B b = new B();//x=1,y=0,这样的话b.PrintFields()调用的也是B的PrintFields方法,输出x=-1,y=0,因为B的对象被B类实例化,调用的必然是B的东西;
B b = new A(); //这样写是错误的,子类的对象不能被父类实例华。
A a = new A(); //这样调用的是A的PrintFields()方法,什么都不输出;

X=1,Y=0,

应为在没跑public B()
{
 y=-1;
}
之前先走到了public overridevoid PrintFields()
{
 Console.WriteLine("x={0},y={1}",x,y);
}
所以y=-1没有被赋值

输出x=1, y=0;
因为构造B之前,先执行变量,y没有明确赋值,默认为0。执行B的构造函数,因为B继承A,所以先执行A的构造函数。A构造函数调用的PrintFields方法在A类里是虚函数,它的实现是在B类,所以执行B类的PrintFields方法,结果输出。虽然继续执行完B的构造函数,使y的值是-1.但结果之前已经输出。

11.Jquery 读取页面load get post ajax 四种方式代码写法。

Load:

$("#result").load("aaaa.asp #ccc");

Get:

$.get("aaaa.asp", { action:"get",name:"lulu" },
function(data, textStatus){
$("#result").html(data);
//alert(this);
//alert(data);
//alert(textStatus);
});

Post:

$.post("aaaa.asp", { action:"post",name:"lulu" },
function(data, textStatus){
$("#result").html(data);
});

Ajax:

$.ajax({
type: "get",
url: "http://www.cnblogs.com/rss",
beforeSend: function(XMLHttpRequest){
//$('<div class="quick-alert">数据加载中,请稍后</div>')
//.insertAfter($("#btn_ajax"))
//.fadeIn('slow')
//.animate({opacity: 1.0}, 3000)
//.fadeOut('slow', function() {
//$(this).remove();
//});
},
success: function(data, textStatus){
$("#result").html("");
$("item",data).each(function(i, domEle){
$("#result").append("<li>"+$(domEle).children("title").text()+"</li>");
});
},
complete: function(XMLHttpRequest, textStatus){
//alert("加载完成!");
},
error: function(){
//请求出错处理
}
});

三、可选题
12.针对大型网站、平台如何处理大数据量引发的并发及性能问题?如何优化数据的检索。

(1).HTML静态化
(2).图片服务器分离
(3).数据库集群,库表散列。
(4).缓存
(5).镜像
(6).负载均衡
(7).最新:CDN加速技术

http://blog.csdn.net/hdhai9451/article/details/44174559

13.网络编程中设计并发服务器,使用多线程与多线程,请问有什么区别?

14.请简述一下Socket进行同步通讯编程的详细步骤。
(1)、在应用程序和远程设备中使用协议和网络地址初始化套接字
(2)、在应用程序中通过指定端口和地址建立监听
(3)、远程设备发出连接请求
(4)、应用程序接受连接产生通信scoket
(5)、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)
(6)、通讯结束,关闭应用程序和远程设备的Socket回收资源

Memcached.ClientLibrary:缓存服务器,在内存里面读取,要比从数据库中读取快些。

 分析设计和解决问题的能力要提高,这样才能独挡一面。
 最好是自己能搭建框架,设计。
 做项目经理,要外向活波,自己多练习,学习别人。技术,管理,分析都需要提高。
 最擅长做什么? 

wcf soap,装箱和拆箱的机制是什么?

装箱与拆箱的概念:
    简单的说:
    装箱:就是将值类型的数据打包到引用类型的实例中
    比如将string类型的值abc赋给object对象obj

  1. <span style="font-family:SimSun;font-size:18px;">String  i=”abc”;
  2. object obj=(object)i;
  3. </span>

    拆箱:就是从引用数据中提取值类型
    比如将object对象obj的值赋给string类型的变量i

  1. <span style="font-family:SimSun;font-size:18px;">object obj=”abc”;
  2. string i=(string)obj;
  3. </span>

    装箱与拆箱的过程是很损耗性能的。

锥和栈: http://blog.jobbole.com/86383/

值类型和引用类型的区别?多线程,并发。说说mvs 中体现设计模式的理解,委托以及作用和应用场景?

一个进程可以有多个线程,我们之前做的windows  服务就是一个进程,服务里面写线程。

1、简述private、protected、public、internal修饰符的访问权限。
private:私有成员,在类的内部才可以访问
protected:保护成员,该类的内部和继承类中可以访问。
public:公共成员,完全公开,没有访问限制。
internal:在同一命名空间内可以访问。

2、a.Equals(b)和a ==b 一样吗?并说明理由。

== 和Equals 的区别
(1).==是一个运算符
(2).Equals则是strng对象的方法,可以.(点)出来。
(3).基本数据类型比较:都比较两个值是否相等,相等为true,否则为false.
(4).引用对象比较:都是比较栈内存中的地址是否相等。相等为true,否则为false.

装箱:在值类型向引用类型转换时发生
拆箱:在引用类型向值类型转换时发生

我们先看装箱时都会发生什么事情,下面是一行最简单的装箱代码

object obj = 1;
这行语句将整型常量1赋给object类型的变量obj; 众所周知常量1是值类型,值类型是要放在栈上的,而object是引用类型,它需要放在堆上;要把值类型放在堆上就需要执行一次装箱操作。

Demo:

class MyClass
{
public string name;
public MyClass(string name)
{
this.name = name;
}
}

int i1 = 8;
int i2 = 8;
bool bo1 = i1 == i2;//true
bool bo2 = (object)i1 == (object)i2;// 装箱后变成引用类型,引用不同 故为false
bool bo3 = (i1).Equals(i2);//true 比较的是值 装箱后 Equals比较的仍是值

string str3 = new string(new char[] { 'a', 'b', 'c' });
string str4 = new string(new char[] { 'a', 'b', 'c' });
bool b3 = (object)str3 == (object)str4;//装箱后,是比较地址,这里内存中的地址是不相同的 false
bool b4 = ((object)str3).Equals((object)str4);//true 此时Equals依然是比较值

object str5 = "abc"; //定义一个变量 str5并赋值为 abc
object str6 = "abc"; //定义一个变量 str6并指向字符串abc
bool b7 = str5 == str6; //true
bool b8 = (object)str5 == (object)str6; //但这样就是比较引用是否相同,因为str5 和 str6 引用同一个实例 即为 true

MyClass str7 = new MyClass("abc");
MyClass str8 = new MyClass("abc");
bool b10 = str7 == str8;//false 这里是引用类型比较(不是string字符串比较)所有比较是不是对同一个对象的引用,这里显然是内存中两个不同的引用对象。故为false
bool b11 = str7.Equals(str8);//这里是引用类型比较(不是string字符串比较)所有比较是不是对同一个对象的引用,这里显然是内存中两个不同的引用对象。故为false

MyClass str9 = str7; //str7的地址赋值给str9。
bool bl2 = str7 == str9; //true 引用同一个对象
bool bl3 = str7.Equals(str9); //true
object str10 = new object();
object str11 = new object();
bool b12 = str10 == str11; //false
bool b13 = str10.Equals(str11); //false

3.分析以下代码,完成填空
string strTmp="abcdefg 某某某";
int i = System.Text.Encoding.Default.GetBytes(strTmp).Length;//一个汉字占两个字节
int j = strTmp.Length;
以上代码执行完后,i=(14 ),j=( 11)

4.根据据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁? 不会死锁: http://www.cnblogs.com/myshell/archive/2010/07/18/1780386.html

public void test(int i)
{
lock (this)
{
if (i > 10)
{
i--;
test(i);//i始终会变为10,10不满足条件,不会进这里递归调用
}
}
}

protected void Page_Load(object sender, EventArgs e)
{
test(11);
string str = "1";//这里可以输出来。

}

1.会锁死 2.不会锁死

5.try{}里面有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?

会执行,在return后执行。

public static int Test()
{
int i = 0;
try
{
return i;
}
catch
{

}
finally
{
i++;
Console.WriteLine("finally");
}
return i;
}
static void Main(string[] args)
{
int t = Test();
Console.WriteLine("t:"+t);
//结果为:finally, t:0
Console.Read();
}

6.在下面的例子里

class A
{
public A()
{
PrintFields();
}

public virtual void PrintFields(){ }
}

class B:A
{
int x = 1;
int y;
public B()
{
y=-1;
}

public override void PrintFields()
{
Console.WriteLine("x={0},y={1}",x,y);
}
}

当使用new B()创建B的实例时,产生什么输出?x=1,y=0

A a = new B();//x=1,y=0,这样的话,a.PrintFields()调用的是B的PrintFields方法,输出x=1,y=0,因为使用B实例化a,所以调用B类的PrintFields方法;
B b = new B();//x=1,y=0,这样的话b.PrintFields()调用的也是B的PrintFields方法,输出x=-1,y=0,因为B的对象被B类实例化,调用的必然是B的东西;
B b = new A(); //这样写是错误的,子类的对象不能被父类实例华。
A a = new A(); //这样调用的是A的PrintFields()方法,什么都不输出;

X=1,Y=0,

应为在没跑public B()
{
y=-1;
}
之前先走到了public override void PrintFields()
{
Console.WriteLine("x={0},y={1}",x,y);
}
所以y=-1没有被赋值

输出x=1, y=0;
因为构造B之前,先执行变量,y没有明确赋值,默认为0。执行B的构造函数,因为B继承A,所以先执行A的构造函数。A构造函数调用的PrintFields方法在A类里是虚函数,它的实现是在B类,所以执行B类的PrintFields

方法,结果输出。虽然继续执行完B的构造函数,使y的值是-1.但结果之前已经输出。

7.编程实现一个冒泡排序算法?

int [] array = new int [*] ;
 ;
 ; i < array.Length -  ; i++)
{
 ; j < array.Length ; j++)
{
if (array[j] < array[i])
{
temp = array[i] ;
array[i] = array[j] ;
array[j] = temp ;
}
}
}

int[] arr = new int[*];
;i<arr.Length;i++)
{
;j<arr.Length--i;j++)
{
]) //从 小到大
{
int temp = arr[j];
arr[j] = arr[j+];
arr[j+] = temp;
}

}
}

;i < arr.Length;i++)
{
   Consoele.WriteLine(arr[i]+" ");
}

9.请简要说明值类型和引用类型的区别?
基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。所有的值类型均隐式派生

自 System.ValueType。与引用类型不同,从值类型不可能派生出新的类型。但与引用类型相同的是,结构也可以实现接口。与引用类型不同,值类型不可能包含 null 值。然而,可空类型功能允许将 null 赋给值类型

。每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。值类型主要由两类组成:结构、枚举,结构分为以下几类:Numeric(数值)类型、整型、浮点型、decimal、bool、用户定义的结构。引用类型的变

量又称为对象,可存储对实际数据的引用。声明引用类型的关键字:class、interface、delegate、内置引用类型: object、string

(2).

值类型的值是存放在栈中的,改变其值,不改变变量原有的值(为什么),而引用类型的值是存放在栈中的,其引用的地址是存放在堆栈中的,改变其值也就改变了变量原有的值。值类型不允许包含null值,然而可空类

型可以将null赋值给值类型。

二、数据库

1.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号
select * from table1 where LastUpdateDate = (select max(LastUpdateDate) from table1);

2.写出一条SQL语句:取出表A中第31到第40记录(sqlserver,以自动增长的Id作为主键,注意:id可能不是连续的,至少2种写法)

  ID from A)
select * from (select row_number() over(order by Id) as rownum,id from A) as B
 

3.查找表(Table1)中多余的重复记录,重复记录是根据单个字段(UserId)来判断。

select * from Table1 where UserId in
(select UserId from Table1 group by userId
)

三、Javascript
1.如何显示/隐藏一个ID为title的DOM元素

http://iluyou.iteye.com/blog/1737948
http://www.jb51.net/article/19839.htm

(1).

function display(id){
var target = document.getElementById(id);
if(target.style.display=="none"){
target.style.display="";//显示
}else{
target.style.display=="none";//隐藏
}
}
onclick = display('title');

(2).

document.getElementById('title').style.visibility="hidden"; //隐藏
document.getElementById('title').style.visibility="visible";//显示

2.JQuery实现, 鼠标点击页面中的任意标签,alert该标签的名称。

(1)Jquery:

$(function(){
    //点击保存按钮
    $(document).on("click",function(e){
        alert(e.target.tagName);
    })
})

(2)JS:

function elementName(evt){ 

evt = evt|| window.event; // IE: window.event 

// IE用srcElement获取事件源,而FF用target获取事件源 

var selected = evt.target || evt.srcElement; 

alert(selected.tagName); 

} 

window.onload = function(){ 

var el =document.getElementsByTagName('body'); 

el[0].onclick = elementName; 

}

//最好的方法
document.onclick = function(evt){
var e = window.event || evt;
var tag = e["target"] || e["srcElement"];
alert(tag.tagName);

在IE8 FireFox10 测试通过

需要注意的是:window.event
IE:有window.event对象
FF:没有window.event对象,可以通过给函数的参数传递event对象。如onmousemove=doMouseMove(event)

在网上看到很多代码都通过for循环来增加onclick方法,其实直接给body增加onclick方法即可。(时间冒泡)

3.请使用Jquery实现,获取页面中所有被勾选的Checkbox,并将它们的值组成一个字符串,中间用逗号隔开,去除最后一个逗号后alert出该字符串。

(1).

function GetValue()
{
var i = 0;
var values ='';
var checked = $("intput:checked");
for(i = 0;i<checked.length;i++)
{
//奖所有被选中的标签元素的值保存成一个字符串,以逗号隔开
if(i< checked.length-1)
{
values += checkedp[i].value +','

}
else
{
values += checkedp[i].value;
}

}
values = values.substring(0, values.length-1);
}

(2)

var vIds ="";
$("input:checked").each(function(){
vIds +=$(this).attr("id")+",";
});
if(vIds.length >0)
{
vIds = vIds.substring(0,vIds.length-1);
}
alert(vIds);

四、CSS
1.定义一个样式让元素div.caption内的文字在IE6,IE7,Firefox分别以16px,20px,24px的大小显示。

#caption {
#caption { font-size: 24px; } /* FireFox */
*html #caption { font-size: 16px;} /* ie6 fixed */
*+html #caption { font-size: 20px;} /* ie7 fixed, 注意顺序 */
}

2.CSS中哪几种选择器?他们的优先级是什么?

元素选择器写法: 元素名(例如:div,ul,h1—h6,p等){属性:值}适用于页面内所有相同元素
类选择器 .选择器名{属性:值}
id选择器 #选择器名{属性:值}

优先级通常我们用1表示元素(标签)名选择器的优先级,用10表示(伪)类选择器的优先级,用100标示ID选择器的优先级,通用选择器权重为0,行内样式权重为1000。important紧跟在属性的值的后面,权重最高无视

一切规则.

一、面试
1.抽象类和接口的区别?什么场景下用?

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

抽象类可以有自己的实现,接口却仅有声明,可以有自己的静态数据字段;
java和C#中可以实现多个接口,却只能继承一个抽象类(或者非抽象类)(单继承,和c++的多继承不同);

接 口是一个纯粹的抽象类,没有任何实际的东西,只是定义了一个框架,而抽象类里面可以有实际的一个方法,并不要求所有的方法都是抽象的。可以实现一个接口中 的所有方法,也可以继承一个抽象的类,然后覆写其中的方法。接口一般只有方法,而没有数据成员或属性。抽象类有方法,也有数据成员或属性,一般情况下,优先考虑用接口,只有当可能要访问到数据成员或属性时,用抽象类。

2.表扫描和索引扫描的区别?
http://www.cnblogs.com/lori/archive/2013/09/18/3328275.html
表扫描是对表中的每一行数据进行判断;
索引扫描是在表的索引中进行检索判断;
由于索引是算法优化过的, 所以通常检索速度要快得多.

3.全局临时表和局部临时表的区别?

临时表分为:

本地临时表,仅限于当前访问者访问,创建方法去如下:
create table #TableName(表结构)
储存于数据库tempdb内(硬盘),当前用户断开连接,自动删除
如果使用中不断开连接,且不需要该临时表请执行:drop table #TableName

全局临时表,所有访问用户访问,创建方法去如下:
create table ##TableName(表结构)
储存于数据库tempdb内,当所有访问用户断开连接,自动删除
删除语句:drop table ##TableName

4.表变量和临时表的区别?
http://www.cnblogs.com/kissdodog/archive/2013/07/03/3169470.html
5.值类型和引用类型的区别?为什么不改变原值?sting 是什么类型?

引用类型与值类型相同的是,结构体也可以实现接口;引用类型可以派生出新的类型,而值类型不能;引用类型可以包含null值,值类型不能;引用类型变量的赋值只复制对象的引用,而不复制对象本身。而将一个值类型变量赋给另一个值类型变量时,将复制包含的值。http://www.jb51.net/article/37216.htm

基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。所有的值类型均隐式派生自 System.ValueType。与引用类型不同,从值类型不可能派生出新的类型。但与引用类型相同的是,结构也可以实现接口。与引用类型不同,值类型不可能包含 null 值。然而,可空类型功能允许将 null 赋给值类型。每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。值类型主要由两类组成:结构、枚举,结构分为以下几类:Numeric(数值)类型、整型、浮点型、decimal、bool、用户定义的结构。引用类型的变量又称为对象,可存储对实际数据的引用。声明引用类型的关键字:class、interface、delegate、内置引用类型: object、string

(2).

值类型的值是存放在栈中的,改变其值,不改变变量原有的值(为什么),而引用类型的值是存放在栈中的,其引用的地址是存放在堆栈中的,改变其值也就改变了变量原有的值。值类型不允许包含null值,然而可空类型可以将null赋值给值类型。

6.说出你最详细做出的东西?

7.dto 有什么用?
http://www.cnblogs.com/scy251147/p/3614187.html

Data Transfer Object
即数据传输对象,服务端的客户端的通信,自动定义个小的实体类,里面只包含我们需要传输的属性。
1.可以序列化对象,不需要的字段不传。
2.传输数据。
3.避免实体类结构暴露出去
4.比如说UI层需要展示一个用户列表,这个用户列表不显示密码属性,所以DTO可以不添加密码属性,这是查询用

1.按需放入字段。

2.保证贫血模型,不要放任何逻辑在里面。

贫血模型:是指领域对象里只有get和set方法,或者包含少量的CRUD方法,所有的业务逻辑都不包含在内而是放在Business Logic层。
优点是系统的层次结构清楚,各层之间单向依赖,Client->(Business Facade)->Business Logic->Data Access(ADO.NET)。当然Business Logic是依赖Domain Object的。似乎现在流行的架构就是这样,当然层次还可以细分。
该模型的缺点是不够面向对象,领域对象只是作为保存状态或者传递状态使用,所以就说只有数据没有行为的对象不是真正的对象。在Business Logic里面处理所有的业务逻辑,在POEAA(企业应用架构模式)一书中被称为Transaction Script模式

8.left join 和 right join inner join 和 full join区别?

内连接:inner join 表示把AB表的记录相符都显示出来,把AB表不符合条件的都排除

外连接分三种,即左连接(LEFT OUTER JOIN)、右连接(RIGHT OUTER JOIN)、全连接(FULL OUTER JOIN),下面就简单解析一下,。
(1).A LEFT OUTER JOIN B表示把A表的记录都显示出来,把B表符合条件的结果集显示出来,不符合条件的用NULL表示。
(2).A RIGHT OUTER JOIN B表示把B表的记录都显示出来,把A表符合条件的结果集显示出来,不符合条件的用NULL表示。
(3).A FULL OUTER JOIN B 表示把A表和B表的记录都显示出来,不符合条件的用NULL表示。

http://www.cnblogs.com/Impulse/p/5045872.html、

9.uion all 和 union 区别? http://www.cnblogs.com/surge/archive/2012/09/21/2696900.html

Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;调换前后的查询 不变。

Union All,对两个结果集进行并集操作,包括重复行,不进行排序; 调换前后的查询 变。

10.ef(entity framework )
http://www.cr173.com/html/20725_1.html

有哪些ORM框架?
Nhibernate
Entity FrameWork

ORM就是将数据库表与实体对象(相当于三层中的Model类)相互映射的一种思想。
11.ref out的区别? http://www.cnblogs.com/gsk99/archive/2010/12/13/1904557.html
什么情况下用ref,什么情况下用out?

两者都是按地址传递的,使用后都将改变原来参数的数值。

ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,ref是有进有出,out是只出不进。

12.JSON 和Xml的区别? 为什么用JSON会比用XML好些?知道,知其然。 http://blog.jobbole.com/79252/

JSON解析速度快,存储相同的数据占内存小

<1>. JSON相比XML的不同之处

没有结束标签
更短
读写的速度更快
能够使用内建的 JavaScript eval() 方法进行解析
使用数组
不使用保留字
总之: JSON 比 XML 更小、更快,更易解析。

<2>. XML和JSON的区别:

XML的主要组成成分:

1
XML是element、attribute和element content。
JSON的主要组成成分:

1
JSON是object、array、string、number、boolean(true/false)和null。
XML要表示一个object(指name-value pair的集合),最初可能会使用element作为object,每个key-value pair 用 attribute 表示:

1
<student name="John" age="10"/>
但如个某个 value 也是 object,那么就不可以当作attribute:

<student name="John" age="10">
<address>
<country>China</country>
<province>Guang Dong</province>
<city>...</city>
<district>...</district>
...
</address>
</student>
那么,什么时候用element,什么时候用attribute,就已经是一个问题了。

而JSON因为有object这种类型,可以自然地映射,不需考虑上述的问题,自然地得到以下的格式。

{
"name": "John",
"age" : 10,
"address" : {
"country" : "China",
"province" : "Guang Dong",
"city" : "..",
"district" : "..",
...
}
}
One More Thing…

XML需要选择怎么处理element content的换行,而JSON string则不须作这个选择。

XML只有文字,没有预设的数字格式,而JSON则有明确的number格式,这样在locale上也安全。

XML映射数组没大问题,就是数组元素tag比较重复冗余。JSON 比较易读。

JSON的true/false/null也能容易统一至一般编程语言的对应语义。

XML文档可以附上DTD、Schema,还有一堆的诸如XPath之类规范,使用自定义XML元素或属性,能很方便地给数据附加各种约束条件和关联额外信息,从数据表达能力上看,XML强于Json,但是很多场景并不需要这么复杂的重量级的东西,轻便灵活的Json就显得很受欢迎了。

13.研究过什么开源框架没?
14.怎么入库出库,入库批处理,出库呢。

二、笔试
1、重载和override有什么区别,各有什么作用?
2、virtual修饰的方法有什么作用?abstract 呢?
3、abstract class 和interface 的区别?
4、数组有没有length()这个方法?String有没有length()这个方法?
5、简要说明.net framework 1.1和2.0有什么异同?
6、请写出下面程序片段的输出结果

static void Main(string[] args)
{
    ;
    object o = i;
    int j = (int)o;
    i--;
    Console.WriteLine("i={0},o={1},j={2}",i,o,j);//99,100,100
    Console.ReadLine();

}

i=99,o=100,j=100
7、阅读程序,写出输出结果

public class Stack
{
    Entity top;
    public void Push(object data)
    {
        top = new Entity(top, data);
    }

    public object Pop()
    {
        if (top == null)
        {
            throw new InvalidOperationException();
        }
        object result = top.data;
        top = top.next;
        return result;
    }
}

class Entity
{
    public Entity next;
    public object data;
    public Entity(Entity next, object data)
    {
        this.next = next;
        this.data = data;
    }
}
class Program
{
    static void Main(string[] args)
    {
        Stack s = new Stack();
        s.Push();
        s.Push();

        Console.WriteLine(s.Pop());
        s.Push();

        Console.WriteLine(s.Pop());
        Console.WriteLine(s.Pop());

        Console.ReadLine();

    }
}

结果为:2,100,1

8、画出你认为你做的最好的.net项目系统架构图,并说明其好的理由。
9、用UML类图,描绘出你最常用的一至两种设计模式,并做简单说明其实现的过程。
10、列举出你在开发asp.net中提高其运行性能的几种方法?

(1).数据库访问性能优化:使用存储过程,优化查询语句
(2).字符串操作性能优化:使用值类型的ToString方法,运用StringBuiler类(注意和string的区别)
(3).优化Web服务器计算机和特定应用程序的配置文件以符合您的特定需要。
(4).一定要禁用调试模式(Debug).
(5).对于广泛依赖外部资源的应用程序,请考虑在多处理器计算机上启用网络园艺。
(6).只要可能,就缓存数据和页输出
(7).选择适合页面或应用程序的数据查看机制
(8).将 SqlDataReader 类用于快速只进数据游标
(9). 将 SQL Server 存储过程用于数据访问  

11、请说说如何提高系统稳定性,在开发中需要怎么做?

12、有如下Oracle表结构
ID NodeName ParentId
1 开发A
2 开发B 1
3 开发E 2
4 开发C 3
5 开发D 1
.. ... ...
写SQL语句查出子节点最多的一个节点

13、What is LEFT OUTER JOIN?
Give an example

14.A toy company that have different model,customer can buy any number of models and
delivery to different address but only one bill address.Design a database that is suitable for the company.

15.Demonstrate a MVC structure.

1.下面程序的执行结果是什么?
public struct Point
{
public int x;
public int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}
Point p1 = new Point(100, 100);
Point p2 = p1;
p1.x = 200;
Console.WriteLine("p1:{0},{1}",p1.x,p1.y);// 200,100
Console.WriteLine("p2:{0},{1}", p2.x,p2.y);// 100,100

答案:
200,100

/*
1/初始化结构体,并且复制x/y :100/100
2/创建结构体实例p2,P1的值拷贝一份给他,不是引用,独立的P2
3/修改P1实例的值,不影响P2
*/

解答:结构体是复制传递的。结构体是值类型。

2.下面程序执行的结果是什么?

static void Main(string[] args)
{
Console.WriteLine(Calc());
Console.ReadLine();
}

static int Calc()
{
int i = 0;
try
{
return i;
}
finally
{
Console.WriteLine("finally");
i++;
}
}

finally 0

3.在下述选项时,没有构成死循环的程序是 (C)
A.int i=100;while (1) { i=i%100+1; if (i>100) break; } 1中i值每当变为100就会改为0;
B.for (;;); 会一直循环下去
C.int k=1000; do { ++k; }while(k>=10000); 第三个 不是死循环,要不是do while 是后判断条件的,他连循环都没进入
D.int s=36; while (s);–s; while()后面多了一个“;”使得--s不在循环之内

A)中,while中表达式永远是非0,不会结束循环:
选项D)中,while(s);后面没有任何表达式而是直接加了一个分号,会一直执行,形成死循环。

4.下面程序的执行结果是什么?
int i = 10;
if (i <= 0) ;
Console.WriteLine("i必须大于0");
Console.WriteLine("ok");

i必须大于0
ok

5.下列哪些说法是错误的 A.C

A、将bmp格式的文件修改为jpg是修改图片格式最简单的方法
B、将QQ动态表情显示在网页上用gif格式比较好
C、将bmp格式的图片放到网页中可以优化网站速度
D、png格式用在网页中可以实现透明的效果。

答案:A、C。A错误是因为修改文件的后缀并没有真的修改文件的格式,要使用Photoshop、mspaint等图片处理工具进行转换才可以。C错误是因为在网页中不能使用bmp图片。

6.什么时候使用抽象类,什么时候用接口
7.C#ref 与out区别?

两者都是按地址传递的,使用后都将改变原来参数的数值。
ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别。
或者说ref有进有出,out是只出不进。

8.<%# %>和<% %>有什么区别?
<%# %>表示绑定的数据源。
<% %>是服务器代码块。

9.string mystring = "My name is ynn.";Console.WriteLine(mystring.Substring(11, 3));的结果是:( B)
A.yn B.bnn C.is D.s y

10.以下代码段中能否编译通过?请给出理由。能
try
{

}
catch(IOException e3)
{

}

11.你的公司有一个DB Server,名为AllWin,其上装了MS SQLSERVER 2000。现在需要您写一个数据库连接字符,用以连接AllWin上SQL SERVER中的一个名为PubBase实例的Test库。请问,应该选择下面那一个字符串?(D)

http://www.jb51.net/article/45872.htm

A."Server=AllWin;Data Source=PubBase;Initial Catalog=Test;Integrated Security=SSPI"
B."Server=AllWin;Data Source=PubBase;Database=Test;Integrated Security=SSPI"
C."Server=AllWin\PubBase;Initial Catalog=PubBase;Integrated Security=SSPI"
D."Server=AllWin\PubBase;Database=Test;Integrated Security=SSPI"

12.DataReader和DataSet的异同?

DataSet的定义:对象是ADO。NET中非连接存储和关系型数据处理的基础数据对象。可以将从数据库中取得的数据集合全部存储于DataSet对象中,操作存储于DataSet的数据,然后再次连接到数据库,根据DataSet的数据更新目前数据库中的数据。

DataSet的主要方法:

1、Clear:清空DataSet的所有DataTable 2 Merge把两个DataSet合并成一个 3 AcceptChanges 更新对DataSet的所有更改 4 GetChanges获得对DataSet进行的所有更改 5 HasChanges 判断是否有对DataSet进行更改 6 放弃对DataSet对数据库进行的更改

对象:1 DataTable 记录集(相当于表) 2 DataColumn 记录集的字段(相当于列) 3 DataRow 记录(相当于行)4 DataView 数据视图,是基于DataSet对象中数据的查询条件的。5 DataRelation 定义不同DataTable 之间的关系

写了一个DataSet的代码清单

DataSet ds=new DataSet();

DataTable dt1=new DataTable();

DataTable dt2=new DataTable();

DataColumn dc1=new DataColumn(“a1″,typeof(int));

DataColumn dc1=new DataColumn(“a2″,typeof(int));

DataColumn dc1=new DataColumn(“a2″,typeof(int));

DataColumn dc1=new DataColumn(“a3″,typeof(int));

dt1.Column.Add(dc1);

dt1.Column.Add(dc2);

dt2.Column.Add(dc2);

dt2.Column.Add(dc3);

ds.Tables.Add(dt1);

ds.Tables.Add(dt2);

//在dt1和dt2之间建立一个名为a2的DataRelation

ds.Relation.Add(“a2″,ds.Tables["dt1"].Column["a2"],Tables["dt2"].Column["a2"]);

对象是对数据集合进行向前数条的读取

DataSet和DataReader都可以完成对数据的操作和存储

DataReader对数据读取方便而且快 ,而DataSet有强大的数据库操作功能和非连接访问模式

DataReader和DataSet最大的区别:DataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..因为DataReader的特殊性和高性能.所以DataReader是只进的 读了第一条后就不能再去读取第一条了

DataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..因为DataSet将数据全部加载在内存中.所以比较消耗内存…但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作

应用:

1 当需要操作非连接数据,将数据发送到应用程序或客户端,提供使用者进行更改之后更新数据库的时候,用DataSet

2 当需要存储、传输、操作多个数据库表时,并且表之间存在着数据关系时,用DataSet

3 需要对数据进行调度操作时,如:数据分页浏览或跳转到固定记录的时候用DataSet

4 当需要一次性读取数据到客户端而且没有更新删除操作时建议使用DataReader

5 需要遍历一个数据集,对数据的每条记录进行只读时用DataReader

13.在<body>标记属性中,( D )为背景色属性
A.color B.text C.bgcolor D.background

14.目前DIV的形状只能是(C )
A.多边形
B.圆形
C.矩形
D.梯形

15.<a href="a.html" onclick="window.location=b.html">测试</a>请问当点击测试这个链接会跳转到哪个页面。
a.html

16.编程题
(1)产生一个int数组,长度为100,并向l随机插入1-100,并且不能重复。
static void test()
{
int[] intArr = new int[100];
Random rd = new Random();
int intTmp;
int iNum = 0;
System.Collections.Hashtable hs = new System.Collections.Hashtable();
while (iNum < 100)
{
intTmp = rd.Next(1, 101);
if (!hs.ContainsValue(intTmp))
{
intArr[iNum] = intTmp;
hs.Add(iNum, intTmp);
iNum++;
}
}

int[] intArr=new int[100];

ArrayList mylist=new ArrayList();

Random rnd=new Random();

while(mylist.Count<100)

{

int num=rnd.next(1,101);

if(!mylist.Contains(num))

mylist.Add(num);

}

for(int i=0;i<100;i++)

intArray[i]=mylist[i];

var lst=Enumerable.Range(1,100).OrderBy(l=>Guid.NewGuid()).ToList();

(2) 写一个SQL脚本,输入startdate和enddate,输出为一个日期列表来。

http://www.cnblogs.com/DBFocus/archive/2010/07/27/1785748.html

也要用linq实现。

最近做了一份SQL笔试题,总共包括十多道题,其中最后一道题是要写一个存储过程,输入为startDate和endDate,输出为一个日期列表。

eg:如果startDate=‘2010-01-01’,endDate=’2010-02-01’,则输出为

date
2010-01-01
2010-01-02
2010-01-03


2010-01-29
2010-01-30
2010-01-31
2010-02-01
这样的需求我在平时的工作中没有遇到过,通过思考有了一个思路,后面就照这个思路写了存储过程。

现在手边有电脑,在SQL Server 2005中验证了一下当时的思路,发现总的方向是对的,但细节上有不少错。

现在把主要代码贴在下面,留个纪念(偷懒不写存储过程了,在SQL Server 2005中测试通过):

declare @startDate datetime;
declare @endDate datetime;
declare @numDays int;

set @startDate = '2010-01-01';
set @endDate = '2010-02-01';
set @numDays = datediff(day, @startDate, @endDate) + 1;

With NumDays as
(
select top(@numDays)
row_number() over(order by (select 0)) as n
from
sys.objects o1,
sys.objects o2
)
select
convert(varchar(10), dateadd(day, NumDays.n - 1, @startDate), 120) as date
from
NumDays;
其中对两个sys.objects进行笛卡尔积连接,是为了生成足够多的行,可以换做sys.columns等大表。如果要生成的日期跨度非常大,可以考虑对3个表进行笛卡尔积。

其中还需要注意的是必须为这些表取别名,我这里用了o1和o2,否则会报错。

17.抽象类和接口的区别?
18.聚集索引和非聚集索引的区别?
19.怎么优化性能?

20.如何处理高并发,比如商城,限时抢购,如果商品库存只有3个,几百万人同时抢购,防止超买,怎么处理这个问题的?

现在没做什么处理,先抢先都得,没有做消息列队。

分库,分表,分区,垂直分割

21.用sesion 保存数据,有可能IIS关闭,sesson丢失,怎么不让数据丢失?

服务器都关了,丢失很正常,要么保存在客户端,类似cookie,要么数据持久化,保存到数据库.

一、

1.中文和英文自我介绍

2.泛型?通过参数化类型来实现同一份代码上操作多种数据类型。

3.sqlserver第一范式 第二范式 第三范式

arcgis 、silverlight

4.wcf wpf web service  silverlight 报表 lind to sql 分层?

5.如何处理员工和上级领导的关系?

6.存储过程 游标 触发器 多线程编程

7.javascript 框架  jquery 实现增、删、改、查。

8.接口

9.javascript实现日期。

<script type="text/javascript">

function getFormat(timeformat){

if(String(timeformat).length == 1){

timeformat = "0"+ String(timeformat);

}

return timeformat;

}

var thetime = new Date();

alert(getFormat(thetime.getFullYear()) + "年" + getFormat(thetime.getMonth()+1) + "月" + getFormat(thetime.getDate()) + "日" + getFormat(thetime.getHours()) + "时" + getFormat(thetime.getMinutes()) + "分"+ getFormat(thetime.getSeconds())+ "秒");

</script>

10.innerHTML outerHTML innerText 区别?

1、区别描述如下:

innerHTML 设置或获取位于对象起始和结束标签内的 HTML

outerHTML 设置或获取对象及其内容的 HTML 形式

innerText 设置或获取位于对象起始和结束标签内的文本

outerText 设置(包括标签)或获取(不包括标签)对象的文本

innerText和outerText在获取时是相同效果,但在设置时,innerText仅设置标签内的文本,而outerText设置包括标签在内的文本。

2、示例代码

Html代码

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>innerHTML、outerHTML和innerText、outerHTML的区别</title>

<script language="JavaScript" type="text/javascript">

  //.innerHTML

  function innerHTMLDemo()

  {

   test_id1.innerHTML="<i><u>设置或获取位于对象起始和结束标签内的 HTML.</u></i>";

  }

  //.innerText

  function innerTextDemo()

  {

   test_id2.innerText="<i><u>设置或获取位于对象起始和结束标签内的文本.</u></i>";

  }

  //.outerHTML

  function outerHTMLDemo()

  {

   test_id3.outerHTML="<font size=9pt color=red><i><u>设置或获取对象及其内容的 HTML 形式.</u></i></font>";

  }

  //.outerText

  function outerTextDemo()

  {

   test_id4.outerText="<br></br><i><u>设置(包括标签)或获取(不包括标签)对象的文本.</u></i>";

  }

  </script>

  </head>

  <body>

  <ul>

  <li id="test_id1" onclick="innerHTMLDemo()">innerHTML效果.</li>

  <li id="test_id2" onclick="innerTextDemo()">innerText效果.</li>

  <li id="test_id3" onclick="outerHTMLDemo()">outerHTML效果.</li>

  <li id="test_id4" onclick="outerTextDemo()">outerText效果.</li>

  </ul>

  </body>

  </html>

3、不同之处: 

简单的说innerHTML和outerHTML、innerText与outerText的不同之处在于:

  1)、innerHTML与outerHTML在设置对象的内容时包含的HTML会被解析,而innerText与outerText则不会。

  2)、在设置时,innerHTML与innerText仅设置标签内的文本,而outerHTML与outerText设置包括标签在内的文本。

对于一个id为"testdiv"的div来说,outerHTML、innerHTML以及innerTEXT三者的区别可以通过下图展示出来:

http://walsh.iteye.com/blog/261966

二、

1.viewstate session 区别

ViewState用于状态管理,主要存储于客户端,安全性不是很高,效率也不是很高,但能完成很多重要的功能,比如复杂属性的管理,样式的管理等,它的设计不是用来跨页面的传送状态的;Session存储于服务器端,存储内容小时可以提高比较好的效率和安全性,但滥用之后反而影响效率,并且有个很大的缺陷-----会失效。

2.c# 静态类和一般类 区别

静态类的主要特性:1、仅包含静态成员。2、无法实例化。3、是密封的。4、不能包含实例构造函数

静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类;其次,它防止在类的内部声明任何实例字段或方法。

3.union 剔除一样的

union all 全部连接,不管一样不一样

4.sql之left join、right join、inner join的区别

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录

right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录

inner join(等值连接) 只返回两个表中联结字段相等的行

5.7.10  Web Service开发中需要注意的问题(1)

1.接口是自说明的

接口的名字、参数和返回值应该一看就知道这接口大概是干什么用的。当然接口描述文档肯定是必需的,但这些描述文档的质量谁知道怎么样呢,谁有空天天翻着文档写东西呢,又有谁会背下来呢?所以让人眼前一亮的接口命名绝对值得,这也是所有代码书会告诉你应该遵守的一条规则。

2.服务接口粒度要合适

Web Service服务接口粒度太小了,那纯粹是不考虑XML解析性能了。一般新手容易犯这毛病,简单地把类的方法暴露出来做服务接口,这样其实是把原来在 local的调用放到了remote,除此之外几乎没有任何好处。粒度太大,会给使用者带来很多麻烦,因为在Web Service中,粒度很大的服务一般都需要很多参数来映射该服务各种各样的情况。

3.接口参数要尽量简单

只有一个参数的服务接口,往往不能满足业务需求。但过多的参数也提高了出错的几率,增加了测试的成本。所以,参数恰到好处为妙。

4.要提供对接口参数和返回值的校验

严格来说,对接口参数和返回值的验证也应该算是Web Service接口声明的一部分。增加对参数和返回值的校验,有利于减少调用者的疑惑,系统接受什么样的参数,返回值是什么格式都一目了然。但是这需要一个很好的权衡,否则调用者会觉得你暴露的方法很难用,因为限制太多了。比较理想的系统应该是宽进严出的,目标用户越多越应该注意这一点。要在宽进严出和全面校验之间做好平衡确实挺难的。简单的办法是,对要暴露的接口自己做测试,在测试的过程中体会这个度。一般来说如果自己感觉都不爽,那别人是绝对不会用的。

5.接口的返回值应该是简单的语言无关的

听见过很多人问如何返回DataSet之类的复杂类型,尤其是玩.NET的人,也许是VS.NET对封装DataSet提供了过于完美的支持吧。但对于XML来说,把任何复杂对象映射到XML文档都是困难的。就好比把三维向二维投影一样,复杂性增加了可不是一点半点。在XML中说到底所有的类型都是字符串,要想表达其他类型,就要添加额外的说明。可以看看rpc/encode方式WSDL文档的complexType部分,自行体会。

6.谨慎地抛出异常

对Web Service中的任何异常都应该进行相应的处理。可以简单地归纳为以下两种情况。

ViewState   一个用户 一个Web窗体 最小

Config file 所有用户   知道配置文件被更新   可以保持大量数据,通常组织小的字符串和XML结构。

http://tommyhu.cn/asp-net-bao-cun-shu-jv/

2.(asp.net)简述从页面请求到页面显示在浏览器上,中间经历的过程。

当浏览器请求 HTML 文件时,服务器会返回该文件

当浏览器请求 ASP.NET 文件时,IIS 会把该请求传递给服务器上的 ASP.NET 引擎

ASP.NET 引擎会逐行地读取该文件,并执行文件中的脚本

最后,ASP.NET 文件会以纯 HTML 的形式返回浏览器

3.简述private、protected、public、internal修饰符的访问权限。

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

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

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

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

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

1.querystring

2.session变量

3.使用Server.Transfer.

session(viewstate)                  简单,但易丢失

application                         全局

cookie                              简单,但可能不支持,可能被伪造

input type=”hidden”                简单,可能被伪造

url参数                             简单,显示于地址栏,长度有限

数据库                              稳定,安全,但性能相对弱

5.(c#)一列数的规则如下:1,1,2,3,5,8,13,21,34...求第30位数是多少,递归算法实现。

public class MainClass

{

public static void Main()

{

Console.WriteLine(Foo(30));

}

public static int Foo(int i)

{

if (i <= 0)

return 0;

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

return 1;

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

}

}

6.叙述您对c#中委托和事件的理解。

委托是一种安全的函数指针,事件是一种消息机制

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

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

是,是一种特殊的委托

7.override与重载的区别。

答:重载和覆盖。覆写(Override)的两个函数的函数特征相同,

重载(Overload)的两个函数的函数名虽然相同,但函数特征不同。

函数特征包括函数名,参数的类型和个数。

Override 是在继承的时候,如果你写的函数与要继承的函数函数特征相同,

那么,加上这个关键字,在使用这个子类的这个函数的时候就看不见父类(或超类)的函数了,它被覆盖掉了。

8.请用c#代码写一个索引器。

class IndexerClass

{

private int[] arr = new int[100];

public int this[int index]   // Indexer declaration

{

get

{

// Check the index limits.

if (index < 0 || index >= 100)

{

return 0;

}

else

{

return arr[index];

}

}

set

{

if (!(index < 0 || index >= 100))

{

arr[index] = value;

}

}

}

}

class MainClass

{

static void Main()

{

IndexerClass test = new IndexerClass();

// Call the indexer to initialize the elements #3 and #5.

test[3] = 256;

test[5] = 1024;

for (int i = 0; i <= 10; i++)

{

System.Console.WriteLine("Element #{0} = {1}", i, test[i]);

}

}

}

9.什么是装箱和拆箱。

从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。

10.string str=nuu;和string str="";有什么区别。

string str = null 是不给他分配内存空间,而string str = "" 给它分配长度为空字符串的内存空间。

11.面向对象语言具有哪三个重要的特性。

封装,继承,多态

12.能用foreach遍历访问的对象需要实现什么接口。

实现接口IEnumerable

13.请叙述抽象类和接口的异同。

接口用于规范,抽象类用于共性。

接口中只能声明方法,属性,事件,索引器。

而抽象类中可以有方法的实现,也可以定义非静态的类变量。

抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。

抽象类可以提供某些方法的部分实现,接口不可以.

抽象类的实例是它的子类给凿p>

第1种情况是接口返回值是简单类型,比如bool型,就true和false两种情况,不抛出异常怎么办?选择有两种,一是抛出异常,二是改变接口,返回int用1和0对应true和false,用-1对应系统异常。

第2种情况是接口返回值是复杂对象,可以通过参数out string exceptionInfo来返回异常信息。

7.接口要尽量采用更新的标准

如何让一次定义的接口能服务得更好更久?从技术规范方面来说有两点:不超前,不落伍。超前,支持它的工具集不会太丰富,估计谁也不想弄出个看起来很美但是谁都用不了的东西;落伍,眼前所有的工具大概都支持,不过明天就不一定了,技术发展这么快,不能把自己累死吧。尽量采用更新的标准的意思是在不落伍的基础上要有前瞻性。举个简单的例子,今天再采用rpc/encode方式就显得不合时宜了,虽然它在前两年很流行,可今天都已经不提倡用了,明天说不定大家就都忘了。就算你及时更新了你的接口,客户也说不定已经换了供应商了。

8.要注意标准的通用性

虽然都是一样的标准,但标准有不同的版本,而且即使是同一个版本的标准,不同的工具实现起来也还是有细微差别的。如果用户是特定的还好说,采用些工具绑定的特性也没什么。但如果接口用户不是特定的人群,那就要注意了,在采用某一规范标准时不要用实现工具所特有的东西,否则很有可能造成客户的麻烦,导致只有很少一部分客户能使用你提供的接口。多一个客户就多一分钱啊,兄弟,干嘛跟钱过不去?

9.禁用HTTP POST/GET协议

除非另外指定,否则.NET将试图把Web服务绑定到3种协议:HTTP/POST、HTTP/GET和SOAP。之所以说"试图",是因为依赖于服务的参数和返回类型,HTTP/GET协议可能不可用。.NET生成的WSDL文件将自动包含绑定这3种协议的指令,客户程序可以自由选择使用哪种协议与服务通信。

只要在Web.config文件中加入下列内容,就可以删除对HTTP/POST和HTTP/GET协议的绑定:

<webServices>

<protocols>

<remove name="HttpPost" />

<remove name="HttpGet" />

</protocols>

</webServices>

为什么要避免通过HTTP/POST和HTTP/GET协议引出Web服务呢?主要的2个因素是安全性和互操作性。HTTP/GET的安全性不如SOAP,而且由于HTTP/GET常见于Web链接,怀有恶意的人可能利用它实施欺骗,使别人在不知不觉中用自己的安全标识调用Web服务,却还以为自己在单击Web链接。

就互操作性而言,SOAP是广泛应用的Web服务通信标准,而HTTP/GET和HTTP/POST不是。因此,对于.NET生成的WSDL文档中默认包含的HTTP/GET和HTTP/POST绑定,许多自动生成代理服务器的工具不会理解。因此,如果你的Web服务不是非绑定到HTTP/GET和HTTP/POST协议不可,最好取消这两种绑定。

6.怎么让sql存储过程返回结果集

返回结果集不用Output,直接Select出来的结果集就能返回

在应用程序或网页程序中用你调用存储过程的这个对象像普通记录集一个调用就好了

如果是在查询分析器中执行,可以在下面的“网格”中直接看到返回的这个结果集。

三、

1.PHP中有哪些输出方式,他们有什么区别?

PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。

echo输出后没有返回值,但print有返回值,当其执行失败时返回flase。

2.$cnn = mysql_connect("localhost","root","password") or die("无法连接数据库");

mysql_select_db("table",$con) or die("找不到数据源");

四、

1.c#ref与out区别

(1).使用ref参数时,传入的参数必须先被初始化。对于out而言,必须在方法中对其完成初始化。

(2).使用ref和out参数时,在方法的参数和执行方法时,都要加ref和out关键字。以满足匹配。

(3).out适合用在需要return多个返回值的地方。而ref则用在需要被调用的方法修改调用者的引用的时候。

2.你对泛型了解吗?简单说明下泛型有什么好处?

泛型:通过参数化类型来实现在同一份代码下操作多种数据类型。利用“参数化类型”将类型抽象化灵活的,从而实现灵活的复用。

好处:类型安全和减少装箱、拆箱。和提高性能,类型安全和质量,减少重复性的编程任务。

五、

1.请叙述ASP.net提供的几种状态管理方法,并大概说明各自的优缺点。

保持方法 谁需要数据 保持多长时间 数据量大小

Application 所有用户 整个应用程序生命期 任意大小

Cookie 一个用户 可以很短,如果用户不删除也可以很长 小的、简单数据

Form Post 一个用户 到下一次请求(可以跨越多个请求重复使用) 任意大小

QueryString 一个或一组用户   到下一次请求(可以跨越多个请求重复使用) 小的、简单数据

Sessions 一个用户 用户活动时一直保持+一段时间(一般20分钟) 可以是任何大小,但是因为用户有单独的Sessions 存储,所有它应该最小。

Cache   所有用户或某些用户 根据需要 可大可小、可简单可复杂

Context 一个用户   一个请求 可以保持大对象,但是一般不这样使用<*的。

接口的实例是实现接口的类给出的。

再抽象类中加入一个方法,那么它的子类就同时有了这个方法。

而在接口中加入新的方法,那么实现它的类就要重新编写

(这就是为什么说接口是一个类的规范了)。

接口成员被定义为公共的,

但抽象类的成员也可以是私有的、受保护的、

内部的或受保护的内部成员(其中受保护的内部成员

只能在应用程序的代码或派生类中访问)。此外接口不能包含字段、构造函数、析构函数、静态成员或常量。

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类

的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。

不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现

这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义

static final 成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。

当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在

实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引

用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,

instanceof 运算符可以用来决定某对象的类是否实现了接口。

14.short s1=1;s1=s1+1;有没有错误?

short s1=1;s1+=1;有没有错误?

答:s1+1是int型,所以改成s1 = (short)(s1+1);后面的没错。

15.堆和栈的区别?

16.写一下下面语句的运行结果:

alert(typeof(null))  object

alert(typeof(undefined))  undefined

alert(typeof(NaN))  number

alert(NaN==undefined)  //boolean

alert(NaN==NaN)  //boolean

var str="123abc";

alert(typeof(str++))  number

alert(str)    123abc

17.下面循环语句中执行完毕后,K的值为多少?

for(i=0;j=0;i<10;j<6;i++;j++){

k = i + j;

}

18.Ajax readyState有五种状态,分别是0,1,2,3,4,请说明下它们对应的意思。

0 - (未初始化)还没有调用send()方法

1 - (载入)已调用send()方法,正在发送请求

2 - (载入完成)send()方法执行完成,已经接收到全部响应内容

3 - (交互)正在解析响应内容 4 - (完成)响应内容解析完成,可以在客户端调用了

19.请用js编写一个方法,求一个字符串的字节长度。

<script language="javascript" type="text/javascript">

new function(s)

{

if(!arguments.length||!s) return null;

if(""==s) return 0;

var l=0;

for(var i=0;i<s.length;i++)

{

if(s.charCodeAt(i)>255) l+=2;

else l++;

}

alert(l);

}("你");

</script>

rguments 表示传入的参数集,!s表示s有值不为空

20.javascript中“1”+2+4的结果是什么?2+5+“8”的结果又是什么呢?

21.以下哪条语句会产生错误:(D)

A.var obj = ();

B.var obj = [];

C.var obj = {};

D.var obj = //;

22.一些哪个单词不属于javascript保留字:(B)

A.with

B.parent

C.class

D.void

23.请选择结果为真的表达式:()

A.null instanceof Object

B.null == undefined

C.null == undefined

D.NaN == NaN

24.用js编写一个方法,包含方法和属性,并实例化一个方法。

六、

1、一个日期判断的sql语句?

请取出tb_send表中日期(SendTime字段)为当天的所有记录?(SendTime字段为datetime型,包含日期与时间)

------------------------------------------

select * from tb where datediff(dd,SendTime,getdate())=0

2、请运用你所学过的知识设计些Tabel来存储学生数数据(包含学号,姓名,

电话,地址,班级,院校等等),每建学期各科考试成绩,每个学生各科每次的考勤时数,如各表

建 Key,请说明各Key的性质以及联系(请使用优化数据库设计方案)

.(1)依照第四题设计的Table检索出各班级各科的平均分,按学科归类按照分类从高到低排序。

(2)依据第四题设计的Table,统计每个学生各科成绩以及该学生对应的出勤时数。

3、写一个个函数,将一个4位的十进制数转换为对应的十六进制,并画出流程图。

4、解释面向对象?

七、

1.委托和托管

被.net成功编译成中间代码 就叫托管

http://www.360doc.com/content/11/0607/16/1039473_122260262.shtml

2.c#接口和抽象类的区别

大家都容易把这两者搞混,我也一样,在听李建忠老师的设计模式时,他也老把抽象类说成接口,弄的我就更糊涂了,所以找了些网上的资料.

一、抽象类:

抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。

二、接口:

接口是引用类型的,类似于类,和抽象类的相似之处有三点:

1、不能实例化;

2、包含未实现的方法声明;

3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);

另外,接口有如下特性:

接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的。除此之外,不能包含任何其他的成员,例如:常量、域、构造函数、析构函数、静态成员。一个类可以直接继承多个接口,但只能直接继承一个类(包括抽象类)。

三、抽象类和接口的区别:

1.类是对对象的抽象,可以把抽象类理解为把类当作对象,抽象成的类叫做抽象类.而接口只是一个行为的规范或规定,微软的自定义接口总是后带able字段,证明其是表述一类类“我能做。。。”.抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中.

2.接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法;

3.一个类一次可以实现若干个接口,但是只能扩展一个父类

4.接口可以用于支持回调,而继承并不具备这个特点.

5.抽象类不能被密封。

6.抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非虚的,当然您也可以声明为虚的.

7.(接口)与非抽象类类似,抽象类也必须为在该类的基类列表中列出的接口的所有成员提供它自己的实现。但是,允许抽象类将接口方法映射到抽象方法上。

8.抽象类实现了oop中的一个原则,把可变的与不可变的分离。抽象类和接口就是定义为不可变的,而把可变的座位子类去实现。

9.好的接口定义应该是具有专一功能性的,而不是多功能的,否则造成接口污染。如果一个类只是实现了这个接口的中一个功能,而不得不去实现接口中的其他方法,就叫接口污染。

10.尽量避免使用继承来实现组建功能,而是使用黑箱复用,即对象组合。因为继承的层次增多,造成最直接的后果就是当你调用这个类群中某一类,就必须把他们全部加载到栈中!后果可想而知.(结合堆栈原理理解)。同时,有心的朋友可以留意到微软在构建一个类时,很多时候用到了对象组合的方法。比如asp.net中,Page类,有Server Request等属性,但其实他们都是某个类的对象。使用Page类的这个对象来调用另外的类的方法和属性,这个是非常基本的一个设计原则。

11.如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法.

四、抽象类和接口的使用:

1. 如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本。

2.如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能块,则使用接口。

3.如果要设计大的功能单元,则使用抽象类.如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。

4.抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。

以下是我在网上看到的几个形象比喻,真的非常不错,呵呵:

1.飞机会飞,鸟会飞,他们都继承了同一个接口“飞”;但是F22属于飞机抽象类,鸽子属于鸟抽象类。

2. 就像铁门木门都是门(抽象类),你想要个门我给不了(不能实例化),但我可以给你个具体的铁门或木门(多态);而且只能是门,你不能说它是窗(单继承);一个门可以有锁(接口)也可以有门铃(多实现)。 门(抽象类)定义了你是什么,接口(锁)规定了你能做什么(一个接口最好只能做一件事,你不能要求锁也能发出声音吧(接口污染))。

C# 语言参考 sealed(C# 参考)

sealed 修饰符可以应用于类、实例方法和属性。密封类不能被继承。密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed 修饰符必须始终与 override(C# 参考) 一起使用。

七、

1.请简述以下所学过的程序语言,并说明他的特性(若有使用过经验,说明)

C#(C Sharp)是微软(Microsoft)为。NET Framework量身订做的程序语言,微软公司在2000年6月发布的一种新的编程语言。C#拥有C/C++的强大功能以及Visual Basic简易使用的特性,是第一个组件导向(Component-oriented)的程序语言,和C++与Java一样亦为对象导向(object-oriented)程序语言。

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

PHP,是英文超级文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用。

2.写一个个函数,将一个4位的十进制数转换为对应的十六进制,并画出流程图。

//判断是否为10~15之间的数,如果是则进行转换

public string chang(int d)

{

string x = "";

switch (d)

{

case 10:

x = "A";

break;

case 11:

x = "B";

break;

case 12:

x = "C";

break;

case 13:

x = "D";

break;

case 14:

x = "E";

break;

case 15:

x = "F";

break;

default:

x = d.ToString();

break;

}

return x;

}

////十进制转十六进制

//public string DtoX(int d)

//{

//    string x = "";

//    if (d < 16)

//    {

//        x = chang(d);

//    }

//    else

//    {

//        int c;

//        int s = 0;

//        int n = d;

//        int temp = d;

//        while (n >= 16)

//        {

//            s++;

//            n = n / 16;

//        }

//        string[] m = new string[s];

//        int i = 0;

//        do

//        {

//            c = d / 16;

//            m[i++] = chang(d % 16);//判断是否大于10,如果大于10,则转换为A~F的格式

//            d = c;

//        } while (c >= 16);

//        x = chang(d);

//        for (int j = m.Length - 1; j >= 0; j--)

//        {

//            x += m[j];

//        }

//    }

//    return x;

//}

public string DtoX(int d)

{

const int divider = 16;

var dividend = d;

var builder = new StringBuilder();

do

{

var remainder = dividend % divider;

dividend = dividend / divider;

builder.Insert(0,(char) (remainder >9 ? remainder +55 : remainder + 48));

}

while (dividend != 0);

return builder.ToString();

}

private void button1_Click(object sender, EventArgs e)

{

textBox1.Text = DtoX(Convert.ToInt32(textBox1.Text));

}

3.请简单描述一下所学过的数据库,并说明他的特性。

SQL Server 是一个关系数据库管理系统。它最初是由Microsoft、 Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UNIX 操作系统上的应  SQL Server安装界面用。数据库引擎是SQL Server系统的核心服务,负责完成数据的存储、处理和安全管理。

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

oracle是殷墟(yīn Xu)出土的甲骨文(oracle bone inscriptions)的英文翻译的第一个单词,在英语里是“神谕”的意思。Oracle是世界领先的信息管理软件开发商,因其复杂的关系数据库产品而闻名。Oracle数据库产品为财富排行榜上的前1000家公司所采用,许多大型网站也选用了Oracle系统。

4.请运用你所学过的知识设计些Tabel来存储学生数数据(包含学号,姓名,

电话,地址,班级,院校等等),每建学期各科考试成绩,每个学生各科每次的考勤时数,如各表

建Key,请说明各Key的性质以及联系(请使用优化数据库设计方案)

5.(1)依照第四题设计的Table检索出各班级各科的平均分,按学科归类按照分类从高到低排序。

(2)依据第四题设计的Table,统计每个学生各科成绩以及该学生对应的出勤时数。

九、

机试:asp.net 操作xml文件 生成树

十、

十一、

select multiple

multiple

1.数据的推送。API

2.大量数据的如何同步? mysql,oracle,sqlserver 如何实现同步。

webservice 接口。

第三方支付控件。

asp多久可以上手。

javascript/Jquery

1.在JavaScript中四种基本的数据类型:数值(整数和实数)、字符串型(用“”号或‘'括起来的字符或数值)、布尔型(使True或False表示)和空值。

http://www.mofei.com.cn/w/597345.shtml

2.jquery 用什么方法请求载入json数据

$.getJSON()

3.

对一个数组进行排序,可以使用数组原生的 什么方法?

sort()

4.把英文字母变成大写的方法?

toUpperCase

5.(function(a){return a || "hello world"})

("hello javascript")

没有值。

6. "54" - 4 = 50

"50" + 8 = 58

NaN*4 = NaN

ASP

1.ScriptTimeout 属性设置或返回脚本在被终止前可运行的最大秒数。http://www.w3school.com.cn/asp/prop_scripttimeout.asp

2.ASP中使用Response对象将用户重定向至不同的URL

Response.Redirect(Request.Form("select"))

4.对象包含了HTTP查询字符串中所有的变量值 Request.QueryString(variable)[(index)|.Count]

5.Respone.Cokies("privoder").Expires = DataAdd("m",60,now())含义??

Expires 属性设置页面在失效前被缓存的时间。如果用户在页面失效前返回同一页面,缓存的版本将显示出来

DateAdd函数 返回

  返回包含一个日期的 Variant (Date),这一日期还加上了一段时间间隔。

  语法

  DateAdd(interval, number, date)

6.Function Sub的区别  最大的区别就是function可以有返回值。

sub和function的区别

SUB和FUNCTION有什么不同呢,他们的语法应该怎么构成?

Sub:过程; Function:函数,可以带返回值

语法:

Sub SubName(参数1, 参数2,...)

....

End Sub

Function FunctionName(参数1, 参数2,...)

...

FunctionName = 返回值

End Function

调用方法:

Sub直接用 SubName 参数1, 参数2,...

Function如果不要返回值用 FunctionName 参数1, 参数2,...

如果要返回值 Result = FunctionName(参数1, 参数2,...)

语法是这样,这是对的

Sub SubName(参数1, 参数2,...)

....

End Sub

Function FunctionName(参数1, 参数2,...)

...

FunctionName = 返回值

End Function

调用时:

sub 只能用:

SubName 参数1, 参数2,...

函数则:

变量=FunctionName (参数1, 参数2,...)

FunctionName 参数1, 参数2,...

上面均未讲出根本:

SUB与FUNCTION均可有返回值。所以首先要讲清返回方式:有两种,过程或函数返回,即分配与过程或函数同名的返回变量地址。function分配,但sub不分配。VB用此方式加以区分,VC则用VOID声明不用分配。即如p=aa()若aa()是sub则什么也得不到,还会报错。但函数则会得到数值。其次,参数返回,VB中缺省用地址传参,即能返回。但声明为BYVAL即值传参,则不可返回,所以,不存在灵活性的差别。比如函数function bb(a,b), 调用时可以bb m, n也可以p=bb(m,n). 实际,如果确认不会失败,才能用SUB,否则,必须要用FUNCTION以确认是否成功或取得返回值。所以编程,应少用SUB,少用 SubName 参数1, 参数2,...的调用方式。

sub是过程不需要返回值,function是函数,需要返回值,如下:

Function NameOfFunction(parameter1, parameter2)

'some code

NameOfFunction = return value

End Function

________________________________________________

Sub NameOfSubRoutine(parameter1, parameter2)

'some code...

End Sub

除了function有返回一个值的区别外,我发现在ASP中好像没有多大的区别,我把所有的sub写成FUNCTION好像效果一样。

如下为两个具体例子:

<%function test(a,b)

test = a * b

end function

a = 12

b = 14

c = test(a, b)

'这里的变量c就是函数处理后的结果,也就是 12×14 的值,你可以在程序中继续使用变量c进行其它运算。

%>

<%

'ASP的语法不是那么严谨,所以sub可以带参数,并且sub并非必须用call才能调用的。

dim a,b,c

sub test(x, y)

c = x * y

end sub

a = 12

b = 14

test a, b            '相当于 “call test(a, b)”,在不使用Call时不能带括号

response.write(c)

%>

7.

正则表达式

写一个电子邮箱的正则表达式:

/^[a-zA-Z0-9_\.]+@[a-zA-Z0-9-]+[\.a-zA-Z]+$/

SQL Server

1.获得当前时间的方法是 (getdate())

2.在sql 存储过程中@@rowcount<>0是什么意思?受影响或被读取的行的数目 全局变量。

3 什么是游标?

游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集。使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式。用SQL语言从数据库中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在SQL server内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。

1.2 游标的优点

从游标定义可以得到游标的如下优点,这些优点使游标在实际应用中发挥了重要作用:

1)允许程序对由查询语句select返回的行集合中的每一行执行相同或不同的操作,而不是对整个行集合执行同一个操作。

2)提供对基于游标位置的表中的行进行删除和更新的能力。

3)游标实际上作为面向集合的数据库管理系统(RDBMS)和面向行的程序设计之间的桥梁,使这两种处理方式通过游标沟通起来。

1.3 游标的使用

讲了这个多游标的优点,现在我们就亲自来揭开游标的神秘的面纱。

使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。

1.3.1声明游标

最简单游标声明:DECLARE <游标名>CURSOR FOR<SELECT语句>;

其中select语句可以是简单查询,也可以是复杂的接连查询和嵌套查询

例子:[已表2 AddSalary为例子]

Declare mycursor cursor for select * from AddSalary

这样我就对表AddSalary申明了一个游标mycursor

综合

分享下,如何创建一个高性能的网站

1.减少HTTP请求(使用CSS Sprite,CSS样式表中以data:image/gif;base64,xxxx)的方式内联图片

2.使用CDN实现地理位置上离用户更近

3.添加Expires头,添加Cache-Control中的max-age 利用缓存

4.gzip压缩文档、样式表、脚本(Accept-Encoding:gzip)

对代理缓存设置Vary:Accept-Encoding,User-Agent

5.使用link标签将样式表放在顶部,使得内容逐步呈现。避免IE中的白屏、其他浏览器的闪烁

6.脚本文件尽量放在底部,以免阻塞其他组件的预先下载

7.避免CSS expression,使用one-time expression或者window.onresize等事件

8.外链js和css得到缓存的机会

9.减少DNS查找(修改TTL值,使用keep-alive)

10.精简JS

11.避免重定向(301 moved permanently,302 moved temporarily,304 not modified )

避免缺少斜线的链接结尾

12.移除重复脚本

13.配置/移除ETag减少对服务器性能的影响。(因为不同服务器上ETag不同,导致对缓存的使用率下降)

14.优化Ajax(可以用时间戳哦~~)

综合来讲,就是减少HTTP请求、减小被请求内容的大小。使用缓存、注意组件(CSS/JS)的位置对页面呈现的影响。 (收起)

十二、

1.Repeter,datagridview,datalist的区别。

http://www.cnblogs.com/phone/archive/2010/09/15/1826891.html

2.100条新闻,每页显示10条,如何显示第二页。说出其原理。

3.selead 什么情况下使用sealed?不可被继承

4.接口和类的区别?

接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!

而类是负责功能的具体实现!

在类中也有抽象类的定义,抽象类与接口的区别在于:

抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。

但接口是一个行为的规范,里面的所有东西都是抽象的!

一个类只可以继承一个基类也就是父类,但可以实现多个接口

PS:接口除了规范一个行为之外,在具体项目中的实际作用也是十分重要的,在面向对象的设计原则以及设计模式的使用中,无不体现作为一个接口的使用好处,最直接的就是设计原则中OCP(开放封闭原则),我们使用接口,而不需要关心他的具体实现,具体实现的细节变化也无关客户端(使用接口的类)的使用,对与扩展是开放的,我们可以另写一个接口的实现来扩展当前程序,而不影响上层的使用,但对修改是封闭的,即我们不能够再去修改接口的定义,当然这个“不能够”是指在规范原则上不应该这么做!

C#中接口与类的区别

1、接口类似于类,但接口的成员都没有执行方式,它只是方法、属性、事件和索引符的组合而已,并且也只能包含这四种成员;类除了这四种成员之外还可以别的成员(如字段)。

2、不能实例化一个接口,接口只包括成员的签名;而类可以实例化(abstract类除外)。

3、接口没有构造函数,类有构造函数。

4、接口不能进行运算符的重载,类可以进行运算符重载。

5、接口的成员没有任何修饰符,其成员总是公共的,而类的成员则可以有修饰符(如:虚拟或者静态)。

6、派生于接口的类必须实现接口中所有成员的执行方式,而从类派生则不然。

那么为什么还要有接口呢?主要原因是它是一种有效的契约。类有一些成员,不考虑把这些成员组合在一起,类只是一个拥有各种方法、字段和属性的列表,但为了能以某种方式使用类,必须知道类能执行那些功能,具体的操作就是声明执行一个或多个接口的类,类执行接口的方式是从接口中派生,再提供这个接口中定义的所有成员的执行方式。

接口是定义一种标准,而类用来实现

接口与类最主要的区别是。类中可以定义函数而接口不可以

类只能单个继承,接口可以多个继承

接口和类一样,只能在程序或单元的最外层被声明(也就是interface section,也就是全局可见的),不能在过程或函数中声明。

接口类型的声明格式如下:

type interfaceName = interface (ancestorInterface)  //关键字interface

[{GUID}]   //全局唯一标识符

memberList    //成员列表

end;

其中(ancestorInterface) 和[{GUID}] 是可选的,接口声明和类相似,但是有如下的约束:

1,memberList只能包含方法和属性。字段在接口中是不允许的。

2,因为接口没有字段,属性的read和write指定的必须是方法。

3,所有接口的成员都是公开的(public)。可见性指定(private,protected等)和存储指定(如stored, default, nodefault)都不允许。(但是一个数组属性可以带关键字default,请看末尾的说明)

4,接口没有构造器和析构器。它不能被实例化,除了通过类来实现它的方法。

5,方法不能被声明成virtual,dynamic,abstract或者override。因为接口不实现它自己的方法,这些指定是没有意义的。

请看一个接口声明的例子:

type

IMalloc = interface(IInterface)

[{00000002-0000-0000-C000-000000000046}]

function Alloc(Size: Integer): Pointer; stdcall;

function Realloc(P: Pointer; Size: Integer): Pointer; stdcall;

procedure Free(P: Pointer); stdcall;

function GetSize(P: Pointer): Integer; stdcall;

function DidAlloc(P: Pointer): Integer; stdcall;

procedure HeapMinimize; stdcall;

end;

在一些接口声明中,关键字interface被dispinterface代替。答案是这(还有dispid,read only,write only指定)和特殊平台有关,在Linux编程中不使用。

还有帮助以外的个人一些见解:接口也用来解决多重继承带来的混乱问题。Delphi中一个派生类只能继承一个类,但同时能继承多个接口。

在Object Pascal中,定义类数据类型使用保留字class。下面是类类型定义的语法格式:

type

<类型名>=class[(<基类型名称>)]

<类成员列表>

end;

其中,选择使用基类型名称可以指出类的直接祖先类,类类型可以指定一个祖先类型,表示该类型是从这个指定的祖先类型继承下来的。在Delphi中,如果不指明基类,则默认的父类为’rOb—ject类,也就是直接从。YObject类派生出一个新类。’l’Object类是在System单元中定义的。例如,

下面定义一个Student类:

type student=class

name:String[8];

number:Integer;

sex:(male,fema.1e);

age:Integer;

end;

注意:与其他数据类型不同的是,类类型的定义只能出现在Program单元或Unit单元最外层 作用域的类型定义部分,而不能定义在变量说明部分或一个过程或函数内。因此,类类型的作用域总是全局的。

2.类的字段

可以看出,类型定义和记录类型定义很相似,但类类型可以有3类成员:字段、方法和属性。类类型中的字段(field)也就是类的数据部分,其定义语法与记录中字段的定义语法相同,字段的类型可以是各种数据类型,甚至是另一个类类型。上例中只定义了组成student类的4个字段。

3.类的方法

方法(method)是在一个对象上执行指定操作的过程或函数。方法的操作范围只能是对象内部的数据或对象可以访问的数据。

在类类型中声明的方法实际上是向前的定义,即在类定义中只定义方法的原型,而在程序的Implementation区进行对该方法的具体定义。在定义方法时,可以直接使用类中已定义的字段,且访问时不需要引用限定符。在调用方法时,Object Pascal隐含传递了一个参数Self,这个参数是一个指向输出方法的对象实例的指针,,相当于C++里的This指针。

PS: 关于数组属性的释疑,同样来自Delphi Help, 关键字Array properties

请先看例子:

property Strings[Index: Integer]: string  ...; default;

这样也我们就可以用object[index]来代替object.property[index];但是也要注意,象这样的属性只能存在一个,不然大家也知道会发生什么事情了。

5.接口和基类现实中代表什么。

6.153 1的立方 + 5 的立方 +1 的立方 = 153 编程。

6.ref out 参数。

若要使用 ref 参数,必须将参数作为 ref 参数显式传递到方法。ref 参数的值被传递到 ref 参数。

1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。

2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。

3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

7.C#怎么实现继承?

::

8.C#是否继承多重继承?

9.重载和覆写的区别?

重载有对于已有的方法或操作符进行重构,方法被重载后可以通过其重载的形式或方法原形来调用,有几个重载就有几个调用的形式;操作符重载后会变成你重构的定义.

而覆写则是将之前的方法进行隐藏

10 等 isLightOn True False

水仙花数是指一个3位数字,它各位数字的3次幂之和等于它本身。如153是一个水仙花数,是因为:

请编程求出1000以内的所有水仙花数,并打印出来。

第一种方法:

using System;

class ShuiXianHua

{

static void Main()

{

for(int i=1;i<10;i++)

for(int j=0;j<10;j++)

for(int k=0;k<10;k++)

if(i*100+j*10+k==Math.Pow(i,3)+Math.Pow(j,3)+Math.Pow(k,3))

Console.Write("{0,5}",i*100+j*10+k);

Console.WriteLine();

}

}

第二种方法:

using System;

class ShuiXianHua

{

static void Main()

{

int i,j,k;

for(int num = 100;num<1000;num++)

{

i = num/100;        //百位数字

j = num%100/10;  //十位数字

k = num%10;        //个位数字

if(i*i*i+j*j*j+k*k*k == num)

Console.Write("{0,5}",num);

}

Console.WriteLine();

}

}

第三种方法:

using System;

class ShuiXianHua

{

public bool IsShuiXianHua(int num)       //定义一个函数判断一个数是否为水仙花数

{

bool mark = false;

int i,j,k;

i = num/100;                    //百位数字

j = num%100/10;             //十位数字

k = num%10;                    //个位数字

if(i*i*i+j*j*j+k*k*k == num)

mark = true;

else

mark = false;

return mark;

}

}

class Test

{

static void Main()

{

ShuiXianHua sxh = new ShuiXianHua();

for(int n = 100;n < 1000; n++)

{

if(sxh.IsShuiXianHua(n))

Console.Write("{0,5}",n);

}

Console.WriteLine();

}

}

第四种方法:

using System;

class ShuiXianHua

{

static void Main()

{

int i,j,k;

Console.WriteLine("水仙花数有:");

for(int n=100;n<1000;n++)

{

i = n/100;                           //获得百位上的数字

j = (n -i*100)/10;               //获得十位上的数字

k = n - i*100 - j*10;           //获得个位上的数字

if(Math.Pow(i,3)+Math.Pow(j,3)+Math.Pow(k,3)==n)

Console.Write("{0,5}",n);

}

Console.WriteLine();

}

}

第五种方法:

using System;

class ShuiXianHua

{

static void Main()

{

string s;

int i,j,k;

Console.WriteLine("水仙花数有:");

for(int n=100;n<1000;n++)

{

s = n.ToString();            //将数字n转化为字符串

i = s[0] - '0';                   //获得百位上的数字

j = s[1] - '0';                  //获得十位上的数字

k = s[2] - '0';                  //获得个位上的数字

if(i*i*i + j*j*j + k*k*k == n)

Console.Write("{0,5}",n);

}

Console.WriteLine();

}

}

十三、

1.分页的原理

2.面试技术 和 面试总结。

3.怎么实现购物车?原理。数据存在缓存中。

4.自我介绍。

5.存储过程有什么参数  IN 、OUT、 IN OUT三种

6.职业规划

7.伪静态

十四、

http://blog.csdn.net/oeasy_/article/details/7749844

http://blog.csdn.net/ethanzhao/article/details/4406496

1.有如下HTML:<img title='aaaa' sina_title='bbbb' id="img1" />

1)用js获得(document.getElementById('img1'))方法可以获取该对象。

2)用(document.getElementById('img1').title)属性获得属性title的属性值:

3)用(document.getElementById('img1').getAttribute('sina_title'))方法获得属性sina_title的属性值:

2.php中对数组序列化和反序列化的函数分别是(serialize())和(unserialize())。

3.urlencode和rawurlencode的区别(对空格的处理,urlencode处理成“+”,rawurlencode处理成“%20”)。

4.php中过滤HTML的函数是(filter()),转义的函数是(mysql_escape_string());

strip_tags,htmlspecialchars

5.写出正则把HTML中的js脚本过滤掉:/<script[^>]*?>.*?<\/script>/si http://enenba.com/?post=21

preg_replace(‘/<script.*?//script>/is’,”,$htmlcode);

6.SQL中LEFT JOIN的含义是 左连接 从左表那里返回所有的行,即使在右表中没有匹配的行。

如果有一个表tl_user存储学生ID和名字name,另外一个表tl_score存储学生ID、科目subject和成绩score(有的学生没有考试成绩),写出sql语句打印出学生名字和各科总成绩;

case @lang when 'tc' then str_name_tc when 'sc' then str_name_sc else str_name_en end

select tu.name, sum(ts.score)

from tl_user as tu

left join tl_score as ts

on tu.uid = ts.uid

group by name

7.写出三个调用系统命令的函数:system,passthru,exec

8、josn处理数组的函数是;

json_encode,json_decode

9、php中判断变量是否被设置是函数是_______;判断是否为空的是___________;

isset,empty

10、error_reporting(“E_ALL”)和ini_set(“display_errors”, “on”)的区别_________;

前者是设置错误显示等级,E_ALL代表提示全部错误(包括notice,warnning和error)。后者是设置让php显示错误,在关于错误显示控制中,后者的优先级最高。

11、PHP写出显示客户端IP的预定义变量________;提供来路url的是__________;

$_SERVER['REMOTE_ADDR'],$_SERVER['HTTP_REFERER']

12、php把utf-8转换成gbk的函数是___________;

iconv(‘UTF-8′,’GBK’,$str);

13、php中分割字符串成数组的函数__________,连接数组成字符串的是_______;

explode,implode

14、php中类的静态方法怎么使用_____________________________________;

在类外部,使用:类名后面跟双冒号,再后面是方法名,类似classname::staticFucntion(),由于静态方法不属于某个对象,而是隶属于整个类,所以要用类名来调用它。

1、写出至少三个函数,取文件名的后缀,如文件’/as/image/bc.jpg’,得到 jpg或者.jpg。

function myGetExtName1( $path ){

//取出最后一个出现.这个字符的索引位置

$begin = strrpos($path,’.');

//取出整个字符串长度

$end = strlen($path);

//从最后一个.的索引的位置截取到字符串的总长度后的结果返回

return $begin?substr($path,$begin,$end):’该文件没有扩展名’;

}

function myGetExtName2( $path ){

return preg_match_all(‘//.[^/.]+/is’,$path,$m)?$m[0][count($m[0])-1]:’该文件没有扩展名’;

}

function myGetExtName3( $path ){

//找到最后一个出现.字符的索引位置并将其后面的所有字符一起返回

return strrchr($path,’.')?strrchr($path,’.'):’该文件没有扩展名’;

}

3、用二分法(也叫折半查找法)查找某元素,对像可以是有序数组。

//二分法查找一个数组中是否存在某值

function binSearchWithArray($array,$searchValue){

global $time;

if(count($array)>=1){

$mid = intval(count($array)/2);

echo ‘第’,$time++,’次<br/>’;

echo ‘当前数组:’;print_r($array);echo ‘<br/>’;

echo ‘查找位置索引:’,$mid,’<br/>’;

echo ‘值:’,$array[$mid],’<br/><br/>’;

if($searchValue == $array[$mid]){

$time–;

return $searchValue.’被找到了,于第’.$time.’次,索引为’.$mid.’<br/>’;

}

elseif($searchValue < $array[$mid]){

$array = array_slice($array,0,$mid);

return binSearchWithArray($array,$searchValue);

}

else{

$array = array_slice($array,$mid+1,count($array));

return binSearchWithArray($array,$searchValue);

}

}

return $searchValue.’没找到<br/>’;

}

$time = 1;

//要查找的数组

$array = array(1,5,8,101,13,19,25,50,60,199,35);

//要查找的值

$searchValue = 13;

//对数组排序,二分法的关键

sort($array);

echo ‘要查找的值为:’,$searchValue,’<br/><br/>’;

echo binSearchWithArray($array,$searchValue);

1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组

//冒泡排序(数组排序)

function bubble_sort($array)

{

$count = count($array);

if ($count <= 0) return false;

for($i=0; $i<$count; $i++){

for($j=$count-1; $j>$i; $j--){

if ($array[$j] < $array[$j-1]){

$tmp = $array[$j];

$array[$j] = $array[$j-1];

$array[$j-1] = $tmp;

}

}

}

return $array;

}

//快速排序(数组排序)

function quick_sort($array) {

if (count($array) <= 1) return $array;

$key = $array[0];

$left_arr = array();

$right_arr = array();

for ($i=1; $i<count($array); $i++){

if ($array[$i] <= $key)

$left_arr[] = $array[$i];

else

$right_arr[] = $array[$i];

}

$left_arr = quick_sort($left_arr);

$right_arr = quick_sort($right_arr);

return array_merge($left_arr, array($key), $right_arr);

}

二、算法题

1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组

//冒泡排序(数组排序)

function bubble_sort($array)

{

$count = count($array);

if ($count <= 0) return false;

for($i=0; $i<$count; $i++){

for($j=$count-1; $j>$i; $j--){

if ($array[$j] < $array[$j-1]){

$tmp = $array[$j];

$array[$j] = $array[$j-1];

$array[$j-1] = $tmp;

}

}

}

return $array;

}

//快速排序(数组排序)

function quick_sort($array) {

if (count($array) <= 1) return $array;

$key = $array[0];

$left_arr = array();

$right_arr = array();

for ($i=1; $i<count($array); $i++){

if ($array[$i] <= $key)

$left_arr[] = $array[$i];

else

$right_arr[] = $array[$i];

}

$left_arr = quick_sort($left_arr);

$right_arr = quick_sort($right_arr);

return array_merge($left_arr, array($key), $right_arr);

}

2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组

//二分查找(数组里查找某个元素)

function bin_sch($array, $low, $high, $k){

if ($low <= $high){

$mid = intval(($low+$high)/2);

if ($array[$mid] == $k){

return $mid;

}elseif ($k < $array[$mid]){

return bin_sch($array, $low, $mid-1, $k);

}else{

return bin_sch($array, $mid+1, $high, $k);

}

}

return -1;

}

//顺序查找(数组里查找某个元素)

function seq_sch($array, $n, $k){

$array[$n] = $k;

for($i=0; $i<$n; $i++){

if($array[$i]==$k){

break;

}

}

if ($i<$n){

return $i;

}else{

return -1;

}

}

3. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数

//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序

function array_sort($arr, $keys, $order=0) {

if (!is_array($arr)) {

return false;

}

$keysvalue = array();

foreach($arr as $key => $val) {

$keysvalue[$key] = $val[$keys];

}

if($order == 0){

asort($keysvalue);

}else {

arsort($keysvalue);

}

reset($keysvalue);

foreach($keysvalue as $key => $vals) {

$keysort[$key] = $key;

}

$new_array = array();

foreach($keysort as $key => $val) {

$new_array[$key] = $arr[$val];

}

return $new_array;

}

十五、

翻译

1.In general, you should not uninstall any versions of the NET Framework that are installed on your computer, because an application you use may depend on a specific version and may break if that version is removed, Note that mutiple versions of the

NET Framework can be loaded on a single computer at the same time. This means that  you do not have to uninstall previous

in order to install a later version.

在一般情况下,你不应该卸载NET Framework的计算机上安装的任何版本,因为使用的应用程序可能依赖于一个特定的版本,可能会破坏该版本被删除,请注意,多发的版本

NET框架可以装上一台计算机在同一时间。这意味着,你不必卸载以前的

以安装更新的版本。

C#题

1.简单说明您平时什么时候或基于什么原因会使用静态变量。

在统计某个类的对象的个数可以使用静态变量

静态变量只能在静态方法使用

2.abstract class和interface有什么区别?

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。

不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。

Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。

接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。

接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。

接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。

然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。

引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

3 C#几种字符串反转方法

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication8

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine(Reverse1("321"));

Console.ReadLine();

}

static string Reverse1(string or)

{

char[] arr = or.ToCharArray();

Array.Reverse(arr);

return new string(arr);

}

}

}

http://zhangjiankun880.blog.163.com/blog/static/1355403201212044630961/

static string Reverse1(string original)

{

char[] arr = original.ToCharArray();

Array.Reverse(arr);

return new string(arr);

}

4.写出一个简单的应用索引器代码 http://download.csdn.net/detail/Andrew_wx/3495490

http://webservices.ctocio.com.cn/243/11595243.shtml

class Program

  {

  static void Main(string[] args)

  {

  IndexClass a = new IndexClass();

  a[0] = "陈三";

  a[1] = "戴四";

  a[2] = "笠五";

  Console.WriteLine("a[0]=" + a[0]);

  Console.WriteLine("a[1]=" + a[1]);

  Console.WriteLine("a[2]=" + a[2]);

  Console.ReadKey();

  }

  }

  class IndexClass

  {

  private string[] name = new string[10];

  public string this[int index]

  {

  get { return name[index]; }

  set { this.name[index] = value; }

  }

  }

5.

int? a;

a = null;//此时输出3

//a = 6;//此时输出6

int b = a ?? 3;

Console.Write(b);

Console.ReadKey();

http://www.cnblogs.com/meta/archive/2010/08/11/1797176.html

变量定义中含有两个问号,意思是取所赋值??左边的,如果左边为null,取所赋值??右边的。

6.委托和事件区别

http://www.cnblogs.com/625415061/archive/2010/09/29/1838094.html

事件的引发是通过调用委托实现的,而委托不仅仅可以用来实现事件的引发。

1.事件的声明只是在委托前面加一个event关键词,虽然你可以定义一个public,但是有了event关键词后编译器始终会把这个委托声明为private,然后添加1组add,remove方法。add对应+=,remove对应-=。这样就导致事件只能用+=,-=来绑定方法或者取消绑定方法。而委托可以用=来赋值,当然委托也是可以用+=,-=来绑定方法的(面试我的那个哥们好像说不行)。

2.委托可以在外部被其他对象调用,而且可以有返回值(返回最后一个注册方法的返回值)。而事件不可以在外部调用,只能在声明事件的类内部被调用。我们可以使用这个特性来实现观察者模式。大概就是这么多。下面是一段测试代码。

http://www.cnblogs.com/kklldog/archive/2012/01/17/2324228.html

7怎样理解泛型?

8lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。

泛型简介

所谓泛型:即通过参数化类型来实现在同一份代码上操作多种数据类型。泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。

C#泛型赋予了代码更强的类型安全,更好的复用,更高的效率,更清晰的约束。

9.lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。

10.Web Service的特点

1、跨防火墙的通信

3、B2B的集成

4、软件和数据重用

11.属性和公用变量的本质区别(c#)http://blog.sina.com.cn/s/blog_4979ec3e0100r42k.html

属性是对字段的封装。

属性可以控制读写,变量不可以。

属性可以进行赋值操作,变量不可以。

经过实践发现,当我们对一个对象进行数据绑定时,属性是可以正常绑定的,变量就不行。所以,当我们需要将类中的一个值设为public时,应该尽量使用属性而不是变量。

字段和属性的要搞清楚,字段定义成private只能在你的这个类中使用,用public可是在外部类进行访问,属性有两个Get和Set属性,如果只有Get属性刚是只读的,就是在你对这个类实例时可以对它进行赋值,但不能修改其值。如果是Set属性是只写属性,有了这个属性你才可以修改其值。

javascript

javascript 实现给变量 赋值为当前时间?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>无标题文档</title>

<script language="javascript">

function startTime()

{

var today=new Date();

var h=today.getHours();

var m=today.getMinutes();

var s=today.getSeconds();

//add a zero in front of number<10

m=checkTime(m);

s=checkTime(s);

document.getElementById('txt').innerHTML="现在的时间是"+h+":"+m+":"+s;

t=setTimeout('startTime()',1000);

}

function checkTime(i)

{

if (i<10)

{

i="0"+i;

}

return i;

}

</script>

</head>

<body onload="startTime()">

<div ID="txt">

</body>

</html>

12.在JavaScript中,包含三种基本的数据类型,字符串(String),数值(Number),布尔值(boolean),

JavaScript中的数据类型分为两种:基本数据类型和对象类型,其中对象类型包含对象,数组,以及函数。

15.如何向模式窗口传递函数?

showModalDialog

16.iframe 怎么调用父窗口的函数?

window.parent.ExpandPage();

实现iframe内部页面直接调用该iframe所属父窗口自定义函数的方法。

比如有A窗口,A内有个IFRAME B,B里面的装载的是C页面,这时C要直接调用A里面的一个自定义函数AFUN();

那么只要在C页面中写如下JS函数就可以了:

window.parent.AFUN();

如果AFUN()有参数也可以直接传递合适的参数进去。

17.编写一段代码,调用对象obj中所有的函数。var obj = new Object();

obj.getValue = function(arg){

alert( arg );

18.程序中捕获异常的方法?

try...catch...finally

数据库

20.如何防止在多用户并发访问中防止脏数据被读取或修改?

通常,多用户数据库需要利用锁机制解决数据并发访问,数据一致性及完整性问题。锁(lock)是一种防止多个事务访问同一资源时产生破坏性的相互影响的机制。http://xchunlnei.blog.sohu.com/120387475.html

21 修改表结构的命令?

ALTER TABLE 语句

22.如何防止死锁?死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。

(1).按同一顺序访问对象。(注:避免出现循环)

(2).避免事务中的用户交互。(注:减少持有资源的时间,较少锁竞争)

(3).保持事务简短并处于一个批处理中。(注:同(2),减少持有资源的时间)

(4).使用较低的隔离级别。(注:使用较低的隔离级别(例如已提交读)比使用较高的隔离级别(例如可序列化)持有共享锁的时间更短,减少锁竞争)

(5).使用基于行版本控制的隔离级别:

1 使用事务时,尽量缩短事务的逻辑处理过程,及早提交或回滚事务;

  2 设置死锁超时参数为合理范围,如:3分钟-10分种;超过时间,自动放弃本次操作,避免进程悬挂;

  3 优化程序,检查并避免死SQL Server锁现象出现;

  4 .对所有的脚本和SP都要仔细测试,在正是版本之前。

  5 所有的SP都要有错误处理(通过@error)

  6 一般不要修改SQL SERVER事务的默认级别。不推荐强行加锁

19 事物是什么?

事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。

影响数据库操作性能的因数?

1、调整数据结构的设计。这一部分在开发信息系统之前完成,程序员需要考虑是否使用ORACLE数据库的分区功能,对于经常访问的数据库表是否需要建立索引等。

2、调整应用程序结构设计。这一部分也是在开发信息系统之前完成,程序员在这一步需要考虑应用程序使用什么样的体系结构,是使用传统的Client/Server两层体系结构,还是使用Browser/Web/Database的三层体系结构。不同的应用程序体系结构要求的数据库资源是不同的。

3、调整数据库SQL语句。应用程序的执行最终将归结为数据库中的SQL语句执行,因此SQL语句的执行效率最终决定了ORACLE数据库的性能。ORACLE公司推荐使用ORACLE语句优化器(Oracle Optimizer)和行锁管理器(row-level manager)来调整优化SQL语句。

4、调整服务器内存分配。内存分配是在信息系统运行过程中优化配置的,数据库管理员可以根据数据库运行状况调整数据库系统全局区(SGA区)的数据缓冲区、日志缓冲区和共享池的大小;还可以调整程序全局区(PGA区)的大小。需要注意的是,SGA区不是越大越好,SGA区过大会占用操作系统使用的内存而引起虚拟内存的页面交换,这样反而会降低系统。

5、调整硬盘I/O,这一步是在信息系统开发之前完成的。数据库管理员可以将组成同一个表空间的数据文件放在不同的硬盘上,做到硬盘之间I/O负载均衡。

6、调整操作系统参数,例如:运行在UNIX操作系统上的ORACLE数据库,可以调整UNIX数据缓冲池的大小,每个进程所能使用的内存大小等参数。

实际上,上述数据库优化措施之间是相互联系的。ORACLE数据库性能恶化表现基本上都是用户响应时间比较长,需要用户长时间的等待。但性能恶化的原因却是多种多样的,有时是多个因素共同造成了性能恶化的结果,这就需要数据库管理员有比较全面的计算机知识,能够敏感地察觉到影响数据库性能的主要原因所在。另外,良好的数据库管理工具对于优化数据库性能也是很重要的。

.NET软件工程师面试总结的更多相关文章

  1. [面试] Java高级软件工程师面试考纲(转)

    如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构.算法.网络.操作系统等知识.因此本文不会讲解具体的技术,笔者综合自己应聘各大公司的经历,整理了一份大公司对 ...

  2. java中高级软件工程师面试总结

    最近去了几家公司面试java中高级工程师,打击挺大的,感觉自己一直以来没有很好的深入学习,对各种知识都是一知半解,但心又太高,想找更高薪的职位,结果面试屡屡碰壁,哎,心情好低落,也是时候静下心来,好好 ...

  3. Java高级软件工程师面试考纲(转)

    如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构.算法.网络.操作系统等知识.因此本文不会讲解具体的技术,笔者综合自己应聘各大公司的经历,整理了一份大公司对 ...

  4. Java高级软件工程师面试考纲

    如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构.算法.网络.操作系统等知识.因此本文不会讲解具体的技术,笔者综合自己应聘各大公司的经历,整理了一份大公司对 ...

  5. Java软件工程师面试常见问题集锦之一

    1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象 ...

  6. 问题集录--Java高级软件工程师面试考纲(转)

    如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构.算法.网络.操作系统等知识.因此本文不会讲解具体的技术,笔者综合自己应聘各大公司的经历,整理了一份大公司对 ...

  7. Google前工程经理王忻:如何准备软件工程师的面试

    http://t.jobdu.com/thread-368-1-1.html 导读:原文作者王忻,Google前工程经理,2003年月加入Google,是Google Lively背后的主导力量,是G ...

  8. .NET工程师面试宝典

    .Net工程师面试笔试宝典 传智播客.Net培训班内部资料 这套面试笔试宝典是传智播客在多年的教学和学生就业指导过程中积累下来的宝贵资料,大部分来自于学员从面试现场带过来的真实笔试面试题,覆盖了主流的 ...

  9. .Net工程师面试笔试宝典

    .Net工程师面试笔试宝典 传智播客.Net培训班内部资料 http://net.itcast.cn 这套面试笔试宝典是传智播客在多年的教学和学生就业指导过程中积累下来的宝贵资料,大部分来自于学员从面 ...

随机推荐

  1. ocLazyLoad angular 按需加载

    ionic 框架 1.引用 index.html 加载 <script type="text/javascript" src="lib/oclazyload/ocL ...

  2. 尽可能保留原有数据,建立UEFI与BIOS双启PE优盘

    尽可能保留原有数据,建立UEFI与BIOS双启PE优盘1.确保优盘或者移动硬盘有一个FAT32分区,如果没有FAT32分区,就用傲梅分区助手或者ppm转换一个现有的分区到FAT32分区0x0C,或者新 ...

  3. @Scheduled 注解

    Spring配置文件xmlns加入 <!---加入:xmlns:task="http://www.springframework.org/schema/task"--> ...

  4. application loader上传报90158错误

    ERROR ITMS-90158:"The following URL schemes found in your app are not in the current format:[XX ...

  5. C++编程优化心得(持续更新)

    1. 对齐原则.比如64位总线,每次寻址读取8B.编程时注意变量地址,尽量消耗总线最少的寻址次数.堆内存申请时,系统严格按照对齐原则分配,故而使用时候也尽量不要跨寻址边界. 2. 需要的时候,可为了效 ...

  6. java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice

    今天在使用动态代理时,遇到了如下问题,报错 java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice 下面是完整的报错信息: 一月 , :: ...

  7. Linux I2C总线控制器驱动(S3C2440)

    s3c2440的i2c控制器驱动(精简DIY),直接上代码,注释很详细: #include <linux/kernel.h> #include <linux/module.h> ...

  8. Python的平凡之路(7)

    一.面向对象高级语法部分   1.静态方法.类方法.属性方法                                                                       ...

  9. iOS6的旋屏控制技巧

    在iOS5.1 和 之前的版本中, 我们通常利用 shouldAutorotateToInterfaceOrientation: 来单独控制某个UIViewController的旋屏方向支持,比如: ...

  10. 团队开发——冲刺1.f

    冲刺阶段一(第六天) 1.昨天做了什么? 为解决自己电脑的问题,查找关于C#的资料,后期做准备. 2.今天准备做什么? 把最初版与交予代码书写的同学,进行整合:测试程序. 3.遇到什么困难? 第一次整 ...