2018年9月19日.NET笔试面试题

写出获得所有列的SQL语句

现有表table1和table2,其字段相同(sname varchar(10))。现在要得到table1中在table2中没有的sname记录,要求获得这些记录的所有列,请写出SQL语句。

解答:

select * from table1 where sname not in (select sname from table2)

分析:

  • 本题目考查IN子句的基本应用,通过从子查询中查询table2中所有的sname字段值,然后使用NOT对IN子句的结果取反。这样,在table1中有着不同sname字段的记录就被查出来了。

.NET程序是如何编译的?

解答:

  • .NET的程序可由多种高级语言编写,如C++、VisualBasic、C#、J#等,但是最后将会被各自的编译器编译为一致的中间语言(IL)。
  • 最后由CLR提供运行环境,将中间语言编译为机器码,供CPU执行。
  • 为了尽量减少中间代码编译为机器代码的性能损失,中间语言采用即时编译,也被称为JIT编译。
  • 这种编译方式只编译调用的代码部分,而并非完全编译程序中所有的代码,编译过的部分将存储在内存中,下次执行时不需要重复编译。当程序退出时,己编译部分的代码才会被淸除。
  • 这种策略极大地降低了中间代码的性能损失,是程序灵活性和性能相权衡的极佳方案。

分析:

  • 在系统中运行.NET程序必须安装相应版本的.NET Framework。
  • .NET程序不是已经编译过了么?为什么还要依赖.NET Framework呢?
  • 这和.NET程序的运行机制有关,传统上程序分为源代码层和编译后的本机代码层(机器码)。而.NET提供了对多种编程语言以及多重平台的支持,所以在其中添加了中间代码层,中间代码被称为IL或MSIL。
  • 由于多了中间语言代码,使.NET程序有了更好的灵活性,有运行于多个平台的可能性(如Linux系统)
  • .NET Framework的核心是CLR,即公共语言运行时,CLR是.NET程序的运行库环境。
  • 中间语言需要在CLR中运行并转换为机器码,所以.NET程序必须依赖.NET Fmmework才能运行。
  • 以C#语言为例,C#编译器编译的程序只是由中间语言构成,无法直接运行,必须由CLR执行。
  • .NET这种编译运行的机制和Java比较相似,Java第一次编译为字节码,而Java良好的移植性得益于此。
  • 只要客户机安装了Java虚拟机(JVM),就可以直接运行Java程序(JVM将字节码编译为机器码)。可见,.NET的CLR和JVM是殊途同归。

简述面向对象的程序设计思想?

解答:

  • 面向对象是程序开发的一种机制,其特征为封装、继承、多态及抽象。
  • 以面向对象的方式编写程序时,需要将复杂的项目抽象为多个对象互相协作的模型;然后编写类型的结构,声明或实现类型的成员,即描述对象的特征和行为。
  • 在项目中编写不同的类型(此处类型不仅仅指类,还可能包括接口、结构等)完成不同的功能,最后在程序中通过类的实例处理实际的问题。

分析:

  • 面向对象编程简称为OOP,其“对象”的含义类似生活中的"物体。相对于以前的编程方式,面向对象编程更注重于人的思维方式,可极大地提高程序的开发效率。
  • 面向对象编程将程序看作多个互相分离的功能模块,各个模块之间分工合作,并且有着极低的耦合度。
  • 面向对象编程中最重要的概念是类(即class),类是描述各个功能模块的模板,而程序中工作的模块实体被称为对象(即object)
  • 类和对象的概念好比动物学的分类,猫科动物就是一个类,老虎也是一个类,并主属于猫科动物类,动物园中某只老虎的实体则是一个对象。
  • 老虎类拥有猫科动物类的所有特征和行为,但有自己独特的特征和行为。而某只老虎符合老虎类特征描述和行为定义,可能还有部分独特的特征。所以类可以继承另一个类,如老虎类继承了猫科动物类。
  • 老类是产生对象的一个模板,对象拥有类的一切特征和行为。

你可能感兴趣的:(2018年9月19日.NET笔试面试题)