一、 基本概念
- 1. 抽象类和接口的区别
答案 | 1) 接口:inerface 纯抽象的类,里面不能有任何实现的成员;接口是某一类通用功能的描述。和子类没有必然的联系。 2) 抽象类:abstract 实现和非实现成员都可以有;抽象类是子类的基类,它是子类的通用特征的描述 |
- 2. 说说你对面向对象设计开发的理解,以及接口的作用
答案 | 面向对象更符合我们人的思维模式。 面向对象使用继承、封装、多态使程序复用性、扩展性、安全性、健壮性、易维护性得到极大的提高。 |
- 3. 小数默认都是double,如果要float的话就是在数字后加f
答案 | 对 |
- 4. 访问修饰符
答案 | Public 公有,其他类都可以访问 Protected 保护,只有本类和子类可以访问 Private 私有,只有本类可以使用 Internal 内部,本程序集中的类可以使用。 |
- 5. short a = 1,a = a+1 有什么错?short a = 1, a += 1有什么错
答案 | 1)a=a+1中的1要做强制类型转换为short。 2)没有错 |
- 6. 表达式float f=3.4对吗?如果不对,请说明原因
答案 | 1) 不对 2) 在c#中,应为 float f = 3.4f 或者 float f = 3; |
- 7. 声明一个有100个元素的数组
答案 | 1) String[] arr = new String[100]; 2) Array arr = Array.CreateIntence(typeof(string),100);
注:Array类是所有数组的父类 |
- 8. 请试写一下你在项目中经常遇到的几种异常(至少两种以上)
答案 | 1) 连接数据库失败(数据库连接串有问题) 2) 未将对象引用到对象的实例 (某些对象在使用过程中,未判断是否等于null,然后就直接调用方法或者属性) |
- 9. 什么修饰符可以使类无法继承?
答案 | 1) Sealed 密封的 2) 结构(struct)默认就是密封的 |
- 10. 访问修饰符
答案 | Public 公有,其他类都可以访问 Protected 保护,只有本类和子类可以访问 Private 私有,只有本类可以使用 Internal 内部,本程序集中的类可以使用。 |
- 11. C/S与B/S
答案 | C/S就是客户机和服务器结构,在客户端需要安装一个软件.将业务需求合理的分配到客户机与服务器两端来进行. C/S结构的软件需要针对不同的操作系统开发不同版本的软件. 如果产品的更新换代很快的话,就很难适应上百台电脑用户同时更新。更新的代价很高.
B/S 结构 即浏览器和服务器结构. 它是随着互联网技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过浏览器来实现,极少部分事务逻辑在前端(Browser)实现,主要事务逻辑是在服务器端(Server)实现,形成所谓三层3结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。以目前的技术看,建立B/S结构的网络应用,在互联网模式下数据传输,相对易于把握、成本也是较低的。近似于一次性到位的开发,能实现不同的人员,从不同的地点,访问和操作共同的数据库.
|
- 12. 给我一个你最常见到的runtime exception
答案 | 如除零异常
|
- 13. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答案 | 可以
|
- 14. 请说出你所知道的线程同步的方法
答案 | Lock Monitor类
|
- 15. String s =new String("xyz");创建了几个String object ?
答案 | 创建2个Object对象
|
- 16. 你使用过哪些版本管理器,check in和check out的作用
答案 | VSS Check in 将要编辑或修改的代码从服务器签出到本地,Checkout将编辑或修改好的代码签入到服务器. check out是锁定资源,防止被其他人同时操作,check in是释放被锁定的资源 |
- 写出提高数据访问性能的几点要求.
答案 | 1)合理设计数据库 2)使用存储过程 3)使用数据缓存
|
- String 类是否可以被继承
答案 | 可以,只有不是密封的类就可以被继承。 |
- 如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?
答案 | 隐藏表单域,request,URL重写 |
- 正规表达式只许输入整数
答案 | ^([1-9])(\d{0,})(\d{0,})$ |
- 重载和重写的区别
答案 | 重写是子类的方法覆盖父类的方法,要求方法名和参数都相同 重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数, |
- 面向对象的思想是什么?
答案 | 定义一:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。
定义二: 面向对象方法是以认识论为基础,用对象来理解和分析问题空间,并设计和开发出由对象构成的软件系统(解空间)的方法。 由于问题空间和解空间都是由对象组成的,这样可以消除由于问题空间和求解空间结构上的不一致带来的问题。简言之,面向对象就是面向事情本身,面向对象的分析过程就是认识客观世界的过程。
面向对象方法从对象出发,发展出对象,类,消息,继承等概念。
面向对象方法的主要优点是:符合人们通常的思维方式;从分析到设计再到编码采用一致的模型表示具有高度连续性;软件重用性好。 |
- 什么是面向对象?简述
答案 | 面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在“对象”概念基础上的方法学。 OOP的三大机制“封装、继承、多态” |
- ip地址分几类,分别说出他们的范围?
答案 | IP地址分类 1.A类IP地址 一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围1.0.0.1-126.255.255.254可用的A类网络有126个,每个网络能容纳1亿多个主机。 2.B类IP地址 一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围128.0.0.1-191.255.255.254。可用的B类网络有16382个,每个网络能容纳6万多个主机 。 3.C类IP地址 一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围192.0.0.1-223.255.255.254C类网络可达209万余个,每个网络能容纳254个主机。 4.D类地址用于多点广播(Multicast)。 D类IP地址第一个字节以“lll0”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。 地址范围224.0.0.1-239.255.255.254 5.E类IP地址 以“llll0”开始,为将来使用保留。 全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。 |
- 引用和值类型的区别,用代码说明?
答案 | 声明一个值类型变量,编译器会在栈上分配一个空间,这个空间对应着该值类型变量,空间里存储的就是该变量的值。 引用类型的实例分配在堆上,新建一个引用类型实例,得到的变量值对应的是该实例的内存分配地址, 1:public class Person 2: { 3: public string Name { get; set; } 4: public int Age { get; set; } 5: } 6: 7: public static class ReferenceAndValue 8: { 9: public static void Demonstration() 10: { 11: Person zerocool = new Person { Name = "ZeroCool", Age = 25 }; 12: Person anders = new Person { Name = "Anders", Age = 47 }; 13: 14: int age = zerocool.Age; 15: zerocool.Age = 22; 16: 17: Person guru = anders; 18: anders.Name = "Anders Hejlsberg"; 19: 20: Console.WriteLine("zerocool's age:\t{0}", zerocool.Age); 21: Console.WriteLine("age's value:\t{0}", age); 22: Console.WriteLine("anders' name:\t{0}", anders.Name); 23: Console.WriteLine("guru' name:\t{0}", guru.Name); 24: } 25: } |
- 简述什么是Overload(重载)和Override(重写)
答案 | Override:覆盖,是父类与子类之间多态性的一种表现,如果子类中定义的某方法与父类有相同的名称和参数,我们说该方法被重写 (overriding).子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。 Overload:重载,方法的重载,是一个类中的多态性的一种表现.在一个类中定义了多个同名的方法,它们有不同的参数个数或有不同 |
- &&和&的区别,哪个返回布尔值?
答案 | &是java中的位逻辑运算: eg: 2&3=2; 具体分析为: 2的二进制为10 3的二进制为11 逻辑&之后为10 &&是boolean的逻辑运算 eg: if(1> 2&&3> 1) 表示如果两个条件都成立则执行之后的逻辑; |
二、 算法
- 28. 写一段程序,把 this is a apple 变成 apple a is this 这种形式
答案 | string str = "this is a apple"; string[] strs = str.Split(' '); string output = ""; for (int i = strs.Length - 1; i >= 0; i--) { output += strs[i] + " "; } if (output.Length > 0) { output = output.Substring(0, output.Length - 1); } str = output; |
- 29. 编程题求两个数的最小公倍数。
答案 | 求两个数的最大公约数,然后两个数想乘,在除于最大公约数就可以得到最大公倍数。 |
- 30. 编写一个类,求一元二次方程的实根
答案 | x = double.Parse(a.Text); y = double.Parse(b.Text); z = double.Parse(c.Text); if (x == 0) { if(y!=0) { n1 = z / y; x1.Text = n1.ToString(); //y1.Text = n2.ToString(); } if(y==0&&z!=0) MessageBox.Show("b=0 无解", "wujie",MessageBoxButtons.OK, MessageBoxIcon.Warning); if(y==0&&z==0) MessageBox.Show("无数组解", "00",MessageBoxButtons.OK); } if(x!=0) { if (y * y - 4 * x * z >= 0) { n1 = (-y + Math.Sqrt(y * y - 4 * x * z)) / (2 * x); n2 = (-y - Math.Sqrt(y * y - 4 * x * z)) / (2 * x); x1.Text = n1.ToString(); y1.Text = n2.ToString(); } else { MessageBox.Show("无解", "wujie",MessageBoxButtons.OK, MessageBoxIcon.Warning); } } |
- 31. 编写一个类,打印昨天当前时间
答案 | class Program { static void Main(string[] args) { DateTime dt= DateTime.Now - new TimeSpan(1, 0, 0, 0); Console.WriteLine(dt.ToString()); } } |
- 32. 编写一个实现复数 +, -, *, / 的类
答案 |
{
{
{
{
{
}
{
}
|
- 33. 写出一个函数实现对一个字符串的所有排列(说出实现思路)
答案 | 1) char[] chars = str.ToCharArray(); Array.Sort(chars); 2) 冒泡排序算法 |
- 34. x=4,y=6在不声明新变量的情况下交换x,y的值
答案 | Int x = 4; Int y = 6; X+=y; Y = x – y ; X = x- y ; |
- 写一个方法,截取String a=”我ABC 4” ,反回”我ABC”.
答案 | public string GetString(string myStr) { string subString = myStr.SubString(0, 4); return substring; } GetString( a);
|
- 有10桶金币,有一桶是假的,假设真币的重量是1000g/枚,假币比真币少100g/枚,有一个称,如何一次称出哪桶是假币?
答案 | 将10桶金币依次编号,从每桶金币中各取一枚以桶号为编号,将编了号的金币逐枚放入称中,根据称的重量可以找出假币,根据编号找到假币桶。 |
- 一个人天天看流星,他一个月看到流星的概率是91%,哪么他半个月看到流星的概率是多少?
答案 | 91% |
- 求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
答案 | For循环实现 |
- 1+1+2+3+5+8+…到第30位多少?
答案 | 斐波那契数列 832040
|
- 找出第1000个质数?
答案 | 4999 void zhishu() { const int I = 1000; //定义常量1000 int num=0; for (int i = 1; i < I; i++) { int k = 0; for (int j = 2; j < i; j++) { if (i % j == 0) { k++; } } if (k == 0) { num += i; Console.Write(i + " "); //显示每一个质数 } } Console.WriteLine(num); //显示所有质数的和 } |
- 写把t1.txt文件的内容写到t2.txt的思路步骤?
答案 | 利用FileStream(System.IO),StreamReader,StreamWriter 从t1.txt读出内容保存在文件流中, 将文件流中的内容写入t2.txt |
- 1,1,2,3,5,8第30位是什么数,用递归算法实现!
答案 | 斐波那契数列 832040 |
三、 HTML,JS相关
- 43. 用DIV+CSS作一个三列的表格
答案 | <!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=gb2312"> <title>无标题文档</title> <style type="text/css"> .mydiv{ display:inline; } </style> </head>
<body> <div> <div class="mydiv">第一列</div> <div class="mydiv">第二列</div> <div class="mydiv">第三列</div> </div> </body> </html> |
四、 模式架构
- 44. 写处一个单例模式类
答案 | Public class SingleClass { Private SingleClass() {} Static SingleClass objClass= null; Public static SingleClass GetObject() { If(objClass!=null) { objClass = new SingleClass(); } Return objClass; } } |
答案 | public class SingletonTest{ int value; private static SingletonTest instance; private SingletonTest(){ System.out.println("正在执行构造函数......."); } private static SingletonTest getInstance(){ if(instance==null){ instance=new SingletonTest(); } return instance;
}
public int getValue(){ return value;
} public void setValue(int value){ this.value=value;
} public static void main(String []s){ SingletonTest t1=SingletonTest.getInstance(); SingletonTest t2=SingletonTest.getInstance(); t2.setValue(9); System.out.println(t1.getValue()); System.out.println(t1==t2);
} } |
- 45. 介绍几种你熟悉的设计模式,写出原理及应用环境
答案 | 1)Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。用于可能使用多种数据源的情况。 2)Singleton:保证一个类仅有一个实例,并提供一个访问它的全局访问点。用于一些工具类,如数据库操作类。 3)Iterator:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。 如集合中类的枚举方法 |
- 应用服务器与Web Server的区别?
答案 | 1)应用服务器是用来部署应用程序的服务器 2)Web Server是一种技术,是用来实现站点和站点之间进行数据交换的技术。
3)有了Web Server技术,可以实现多个应用服务器上部署的网站或应用程序的信息交流
|
- xml引用空间包括哪几个类?如何理解和应用?
答案 | System.Xml命名空间包含了一些最重要的XML类,其中最主要的类是和XML文档的读写操作相关的类。这些类中包括4个与读相关的类以及2个与写相关的类。它们分别是:XmlReader、XmlTextReader、XmlValidatingReader、XmlNodeReader、XmlWriter以及 XmlTextWriter。 System.Xml命名空间包含了一些最重要的XML类,其中最主要的类是和XML文档的读写操作相关的类。这些类中包括4个与读相关的类以及2个与写相关的类。它们分别是:XmlReader、XmlTextReader、XmlValidatingReader、XmlNodeReader、XmlWriter以及 XmlTextWriter。 XmlReader类是一个虚基类,它包含了读XML文档的方法和属性。该类中的Read方法是一个基本的读XML文档的方法,它以流形式读取XML文档中的节点(Node)。另外,该类还提供了ReadString、ReadInnerXml、ReadOuterXml和ReadStartElement等更高级的读方法。除了提供读XML文档的方法外,XmlReader类还为程序员提供了MoveToAttribute、MoveToFirstAttribute、MoveToContent、MoveToFirstContent、MoveToElement以及 MoveToNextAttribute等具有导航功能的方法。 XmlTextReader、XmlNodeReader以及XmlValidatingReader等类是从XmlReader类继承过来的子类。根据它们的名称,我们可以知道其作用分别是读取文本内容、读取节点和读取XML模式(Schemas)。 XmlWriter类为程序员提供了许多写XML文档的方法,它是XmlTextWriter类的基类,我在后面的实例中会给出相关的运用方法。 XmlNode类是一个非常重要的类,它代表了XML文档中的某个节点。该节点可以是XML文档的根节点,这样它就代表整个XML文档了。它是许多很有用的类的基类,这些类包括插入节点的类、删除节点的类、替换节点的类以及在XML文档中完成导航功能的类。同时,XmlNode类还为程序员提供了获取双亲节点、子节点、最后一个子节点、节点名称以及节点类型等的属性。它的三个最主要的子类包括:XmlDocument、XmlDataDocument以及XmlDocumentFragment。XmlDocument类代表了一个XML文档,它提供了载入和保存XML文档的方法和属性。这些方法包括了Load、LoadXml和Save等。同时,它还提供了添加特性(Attributes)、说明(Comments)、空间(Spaces)、元素(Elements)和新节点(New Nodes)等XML项的功能。XmlDocumentFragment类代表了一部分XML文档,它能被用来添加到其他的XML文档中。XmlDataDocument类可以让程序员更好地完成和ADO.NET中的数据集对象之间的互操作。 |
- xml的作用,举例一些元素与作用,并描述如何定义一个全局异常点。
答案 | XML是EXtensible Markup Language的缩写 XML是一种类似于HTML的标记语言 XML是用来描述数据的 XML的标记不是在XML中预定义的,你必须定义自己的标记 XML使用文档类型定义(DTD)或者模式(Schema)来描述数据 XML使用DTD或者Schema后就是自描述的语言
|
- AJAX的优点
答案 | 使用Ajax的最大优点就是能在不刷新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地响应用户交互,并避免了在网络上发送那些没有改变的信息。 Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。 |
- 你知道的几种架构?
答案 | C/S B/S |