新蛋面试题

笔试题

1.       线程与进程的区别是什么?      

答:1一个程序至少有一个进程,一个进程至少有一个线程。一个进程就好比一个沙箱。线程就如同沙箱中的孩子们。孩子们在沙箱子中跑来跑去,并且可能将沙子攘到别的孩子眼中,他们会互相踢打或撕咬。但是,这些沙箱略有不同之处就在于每个沙箱完全由墙壁和顶棚封闭起来,无论箱中的孩子如何狠命地攘沙,他们也不会影响到其它沙箱中的其他孩子。因此,每个进程就象一个被保护起来的沙箱。未经许可,无人可以进出。进程和线程的区别在于:
线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

2.       编译型语言与解释型的优缺点是什么?

答:编译语言是把要编译的语言编译成中间语言,而解释型的语言是到一句,解释一句,执行一句。所以解释型的语言比较慢。
区别就是:如果在C中,你有语法错误,它会在编译阶段就报错;但在BASIC中,你可以执行,直到出错的语句时才报错。

3.       有一个酒吧卖酒,有一次来了一个叼酸的顾客来买酒他只要6L酒,而他们店每桶酒是12L,问酒吧如何才能一点不多一点不少的卖6L酒给顾客,酒吧有一个8L5L的容器。

答:

4.       一个游客到了一个撒谎王国,其中男人在一周的123撒谎,女人是在456撒谎,别的时候都说真话,他也没有看日期的工具,而他又想知道今天是星期几,他问男人说,昨天是我撒谎的日子,又问了个女人,女人也说昨天是我撒谎的日子,请说出今天是星期几。

面试题

1. C#的垃圾回收机制是怎样的?

答:析构函数一般情况是不需要,系统垃圾回收自动管理。但是当对象中有用到系统资源的时候,需要即时释放,而不能等系统自动回收,所以这个时候需要析构函数,也就是我们调用dispose的时候

2.  委托的作用是什么?

3. As is的区别?

答:is 是类型的判断,如果一个类型是这个类型的父类返回true,他永远不会抛出异常. As是类型的转换 ,他必须就用于引用类型之间的转换, 他转换失败返回的为NULL,他也不会抛出异常。

4. 值类型与引用类型的区别?

答:1. 值类型是存在栈上,引用类型是存在堆上

           2. 值类型的是存的有效值,引用类型是存的对像的引用。

           3. 值类型存取速度快,引用类型存取速度慢。

5. 应用程序集与应用程序域

答:(一) 应用程序集,就像是EXEDLL

程序集仅在需要时才加载到内存中。

(二)应用程序域通常由运行库宿主创建和操作。他使应用程序与数据彼此分离可以提高安全性,单个进程可以执行多个应用程序域。

应用程序域中,程序集的代码只需加载一次,实例和静态成员不能在应用程序域之间共享,也不能直接访问另一个应用程序域中的对像。此时就需要一个代理(proxy

6.  接口与抽象类的区别?

7. 索引的作用是什么?

:就象是书的目录,可以加快查找数据的速度,提高数据库的性能,他还可以使表与表的之间的连接速度加快.

聚集索引:他会对表和视图进行物理排序,他们之间只能有一个聚集索引.

非聚集索引:他不会对表和视图进行物理排序,

唯一索引:他不允许两列有相同的值.

8. 存储过程与函数的区别?

1.  一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
    2.  
对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
    3.  
存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。

可以出现量,和运算都可以用做函数

存储过程的值不能参于运算。

9.  inner join left join right join的区别?

 答: inner join,full outer join,left join,right jion
内部连接 inner join 两表都满足的组合
full outer
全连 两表相同的组合在一起,A表有,B表没有的数据(显示为null,同样B表有
A
表没有的显示为(null)
A
left join  B 左连,A表为基础,A表的全部数据,B表有的组合。没有的为null
A
right join B 右连,B表为基础,B表的全部数据,A表的有的组合。没有的为null

举个例子:  
 
假设a表和b表的数据是这样的。  
  a                         b    
  id     name
  id     stock   
 
1    
a             1         15  
  2         b             2         50  
  3         c              
   
   
  select   *   from   a   inner   join   b   on   a.id=b.id  
 
这个语法是连接查询中的内连接,它产生的结果是  
 
两个表相匹配的记录出现在结果列表中。  
 
根据上面的表,出现的结果是这样的  
  a.id     name     b.id     stock  
  1
       a             1         15  
  2             b             2         50  
  ----------------------------  
  select   *   from   a,b   where   a.id=b.id  
 
这个语法是内连接的另外一种写法,其执行结果与inner   join   一样  
   
  --------------------------------    
   
  select   *   from   a   left/right   join   b   on   a.id=b.id  
 
这个是外连接语法中的左外连接或右外连接  
 
如果是左外连接的话,它将显示a表的所有记录,  
  select   a.*,b.*   from   a   left   join   b   on   a.id=b.id  
 
查询的结果是这样的:  
  a.id     name     b.id     stock  
  1
         a         1             15  
  2               b         2             50  
  3               c       null         null
   
  --------------------------------------------  
 
如果是右外连接的话,它将显示b表的所有记录,  
  select   a.*,b.*   from   a   right   join   b   on   a.id=b.id  
 
查询的结果是这样的:  
  a.id     name     b.id     stock  
  1
         a         1             15  
  2               b         2             50  

10.              数据库的四种变量有,char,nchar ,varchar,nvarchar,的区别?

答:1CHARCHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的时候可能要多次用到trim()。

2VARCHAR。存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。

3TEXTtext存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。

4NCHARNVARCHARNTEXT。这三种从名字上看比前面三种多了个“N”。它表示存储 的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成 混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar nvarchar的长度是在14000之间。和charvarchar比较起来,ncharnvarchar则最多存储4000个字符,不论是英文 还是汉字;而charvarchar最多能存储8000个英文,4000个汉字。可以看出使用ncharnvarchar数据类型时不用担心输入的字 符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。

所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar

我把他们的区别概括成:

CHAR
NCHAR 定长,速度快,占空间大,需处理
VARCHAR
NVARCHARTEXT 不定长,空间小,速度慢,无需处理
NCHAR
NVARCHARNTEXT处理Unicode

 

11.              临时表和表变量的区别?

答:临时表:临时表与永久表相似,但临时表存储在数据库中,当不使用时就自动删除。

           临时表分为两种:本地(名称以#)和全局(名称以##)两种类型的临时表。二者的名称,可见性和可使用性上均有不同。

尽可以使用表变量不使用临时表,他有以下优点

1.  他类似于局部变量,有明确的作用域,该作用域为声明该变量的函数,存储过程,或批处理。

2.  在存储过程使用表变量和临时表相比,减少的存储过程的重新编译量。

3.  涉及表变量的事务只在表变量更新期间存在,这样就减少了表变量对锁定和记录资源的需求

区别:1. 临时表可以支持事务级的回滚操作、但不支持前滚操作,表变量不支持事务级回滚操作,只支持语句级的回滚

           2. 临时表上的统计信息是键全而可靠的,但表变量上的统计信息是不可靠的。

           3. 范围不同。临时表为会话级,表变量为变量级,在自己代码声明区间内有效。

           4. 表变量只能指定PK做隐式的索引,临时表可以显示创造各种索引。

           5. 临时表有锁机制,面表变量中没有锁机制

           6. 如何用户访问时表变量不会产生日志,而临时表会产生日志。  

12.              Viewstate 的作用是什么?

答:是用于往返过程之间的页和控件的值。

13.              Cookie sessionapplication的区别?

14.              Httphandles HttpModels的区别?

15.              执行一个界面的最先调用的那个方法?

16.              继承与组合的公优缺点。

 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值