I、9.7

1、简述private、protected、public、internal 修饰符的访问权限

  • private : 私有成员,在类的内部才可以访问。
  • protected:保护成员,该类内部和继承类中可以访问。
  • public:公共成员,完全公开,没有访问权限。
  • internal:当前程序集内可以访问 (内部访问)

2、Ado.Net 五大对象

  1. Connection : 开启程序和数据库之间的连结
  2. Command :查询,新增,修改,删除 (命令集)
  3. DataAdapter:在数据源及DataSet之间执行数据传输工作 (从数据库检索数据的Command对象)
  4. DataSet :暂存区,把数据库中所查询到的数据保留起来 (数据集)
  5. DataReader:读取数据 ()

3、ASP.NET 页面之间传递值的几种方式

  1. QueryString (Request.QueryString)
  2. Session
  3. Cookies
  4. Applicatiom
  5. Server.Transfer

4、C#的new关键字的几种用法

  • 三种方法
  • 在C#中,new关键字可用作匀速安抚,修饰符或约束
  1. NEW 运算符:用于创建对象和调用构造函数,
  2. NEW 修饰符:在用作修饰符时,new关键字可以显示隐藏从基类继承的成员
  3. new 约束:在用于泛型声明中约束可能用作参数的 参数的类型

5、sealed修饰类有什么特点

最简单的特点:表示这个类不能被继承!

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

II、9.8

6、while与di-while的区别?

  • do-while  语句至少执行一次循环体内的代码;
  • while       条件不成立,语句永远不会执行循环体内的代码;

7、跳出循环

  • break语句:终止并跳出循环体。
  • continue语句:终止当前循环,重新开始一个新的循环。
  • goto语句:跳转到指定位置(不推荐使用)。
  • return语句:跳出循环及其包含的函数。

8、值类型和引用类型,区别?

  • 值类型:int ,bool,char,float,double,decimal,enum,struct
  • 引用类型:string,类,委托,接口,事件
  1. 值类型:更加轻巧,运行更搞笑,值类型的数据存储在内存的堆栈(简称栈)中,效率很高,但不灵活,只能分配固定大小的数据类型。 - - 值类型传递的是值。
  2. 引用类型:是构建C#程序的对象类型数据,必须在托管堆中(简称 堆) 为引用类型变量分配内存,然后将指向堆中地址的指针放在栈中。堆可以处理比较复杂的,可分配任意大小的数据虽然灵活但效率稍低。- - 引用类型传递的是指针。
  3. Object 所有类型基类,是引用类型。

9、数组分类

  • 一维数组
  • 多维数组
  • 数组的数组 (锯齿数组)

10、冒泡排序

  • 可以参考我之前的冒泡排序 --- 地址
            //冒泡排序
            int[] nums = { 9, 8, 5, 7, 6, 4, 3, 2, 1, 0 };
          //外层控制循环数
            for (int i = 0; i < nums.Length - 1; i++)  
            {
                for (int j = 0; j < nums.Length - 1 - i; j++)
                {
 
                    if (nums[j] > nums[j + 1])
                    {
                        int temp = nums[j];
                        nums[j] = nums[j + 1];
                        nums[j + 1] = temp;
                    }
                }
            }
            for (int i = 0; i < nums.Length; i++)
            {
                Console.WriteLine(nums[i]);
            }
            Console.ReadKey();

11、请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?

// 1、先找到textbox所在容器,获取容器所有控件 Contrils
         foreach(Control item in this.Controls)    
         {
         TextBox tb =item as TextBox; 
 //2、把所有控件别名设置为Textbox,如果当前控件不能转行成TextBox类型,即不为 TextBox控件则为空,下方使用if 判断即可得出。
         if(tb!=null)
           {
               tb.Text="";
           }
         }

12、在.net中,配件的意思是?

  • 程序集(中间语言,源数据,资源,装配清单)

13、如何理解三层架构

  1. UI:界面层,主要是与用户交互的界面。
  2.  BLL:业务逻辑层,UI层和DAL层之间的桥梁,实现业务逻辑。
  3.  DAL:数据访问层,使用数据库。
  4. 使用三层的目的是为了解耦
  5. 优势:*结构清晰、耦合度低**可维护性高,可扩展性高**利于开发任务同步进行;容易适应需求变化*
  6. 劣势:降低了系统的性能,有时会导致级联的修改,增加代码量,增加了工作量

14、装箱和拆箱

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

15、能用foreach遍历访问的对象的要求

  • 需要实现 IEnumerable 接口或声明 GetEnumeratur 方法的类型。

16、面向对象三大特征

  1. 封装 :数据安全,内部修改保持稳定,提供重用性,分工合作,方便构造大型复杂系统
  2. 继承 :去掉重复代码,可以实现多态。
  3. 多态:相同的变量 相同的操作 ,但不同的实现,方法的重载,接口&实现 继承

接口: 纯粹的约束 ,没有任何具体实现,全部默认public 不能写访问修饰符。

抽象类:父类+约束 可以完成通过的实现 只能单继承

17、查找字符串函数

string str = "TomSamey";
var start= str.StartsWith("Tom");  //返回True,即以Tom开头
var end = str.EndsWith("ey");      //返回True,即以ey结尾

18、处理异常 try

  • 可以参考我之前的一篇关于try 的文章 - - 地址
单词释义
Exception所有异常的基本类型
try尝试
catch捕捉
finally最后,末尾
throw抛出

1、try { } 里有一个return 语句,那么紧跟在这个try 后的 finally { } 里的代码会不会被执行,什么时候被执行?

  1. 最终结论:任何执行try 或者 catch 中的 return 语句之前,都会执行 finally 语句,如果finally 存在的话。
  2. 如果finally 中有return 语句,那么程序就return 了 所以 finally 中的return 是一定会呗 return 的。
  3. 编译器把finally 中的 return 实现为一个 warning。

III、9.9

1、GC是什么?为什么要使用GC?

  • GC是垃圾收集的意思
  • 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。
  •   GC只能处理托管内存资源的释放,对于非托管资源 则不能使用GC回收内存,必须由程序员手工回收。

2、介绍几个使用过的开源的项目?

  • AOP框架、Ajax框架、工作流(workflow)

3、说出五个集合类

  1. ArrayList类
  2. Stack类:栈,后进先出。push方法入栈,pop方法出栈
  3. Queue类:队列,先进先出,enqueue入队列,dequeue出队列
  4. 双向链表(LinkedList
  5. IQueryable

4、什么是Code-Behind技术?

  1. Code-Behind是代码隐藏。
  2. 在ASP.NET中通过ASPX页面指向CS文件的方法显示逻辑和处理逻辑的分离

5、using 用法?什么是IDisposable?

  • 具体可以参考CSDN上一位博主详细介绍的 ---- 地址
  1. 引用命名空间
  2. using释放资源
  3. using别名
  • 小结:using可以引用命名空间,还可以实现非托管资源的释放,实现了IDisposable的类在using中创建对象,using结束后会自动调用 Dispose方法,释放资源
  • using其实等价于于 try...finally,用起来更方便。

IV、9.10

16不是说字符串是不可变的吗?String s=“abc”; s="123" 不就是改变了吗?

  • 简单地说String类型数据每次重新赋值都是开辟一个新的内存空间新的数据放在里面,变量的引用重新指向新空间中的的地址,原来的数值还在内存中并没有变化通过CG回收。
  • 解析参考:
  • 这里就是值类型和引用类型的区别了:引用类型传递的是指针。
  • 值类型可变,而引用类型的变量是可变的,常量也不可变,只在声明的时候赋值
  • 当我们定义的时候 这个字符串是定义在字符串变量池中的 他是共享的,而s 是一个引用了 字符串"abc"的变量 的对象
  • 我们string s="abc"; 是创建了两个对象 一个是字符串"abc" 一个是s

17、是否可以从一个static方法内部发出对非static方法的调用?

  • 不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在,该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。
  • static方法是静态方法,是属于类的方法
  • 非static方法是属于对象的方法,所以在static方法中想要调用非static方法,要先新创建一个对象,再有这个对象来调用非static方法

18、说出一些常用的类、接口,请各举5个..

  1. 类:StreamReader、StringBuilder、SqlConnection、FileStream、File、Regex
  2. 接口:IDisposable、IEnumerable、IComparable、ICollection、IList

19、传入某个属性的set方法的隐含参数的名称是什么?

  • Value,它的类型和属性所声明的类型相同

20、C#支持多重继承么?

  1. 类之间不支持,接口之间支持
  2. 类对接口叫实现,不叫继承

V、9.14

21、C#中所有对象共同的基类是什么?..

  • Object

 22、通过超链接怎样传递中文参数?

  1. Url传值
  2. QueryString传值
  3.  EnCode编码,DeCode解码
  4. string.Format

 23、什么是sql注入?如何避免sql注入?

  1. SQL注入(SQLi)是一种注入攻击,,可以执行恶意SQL语句。
  2. 不要使用动态SQL
  3. 不要将敏感数据保留在纯文本中
  4. 限制数据库权限和特权
  5. 避免直接向用户显示数据库错误

 24.AJAX解决什么问题﹖如何使用AJAX? AJAX有什么问题需要注意?项目中哪里用到了AJAX?

  1. AJAX最本质的实现是在Javascript中使用XMLHttpRequest进行Http的请求,开发中通常使用UpdatePanel、JQuery等方式简化AJAX的开发,UpdatePanel的方式实现AJAX最简单,但是数据通讯量比较大,因为要来回传整个ViewState,而且不灵活,对于复杂的需求则可以使用JQuery提供的ajax功能。
  2. AJAX解决的问题就是“无刷新更新页面”

25.开放式问题:你经常访问的技术类的网站是什么?.

  • MSDN
  • 博客园
  • csdn