面试题及答案_其他

时间:2020-12-20 19:07:53

一、             基本概念

 

  1. 1.         抽象类和接口的区别

答案

1)        接口:inerface 纯抽象的类,里面不能有任何实现的成员;接口是某一类通用功能的描述。和子类没有必然的联系。

2)        抽象类:abstract 实现和非实现成员都可以有;抽象类是子类的基类,它是子类的通用特征的描述

 

  1. 2.         说说你对面向对象设计开发的理解,以及接口的作用

答案

面向对象更符合我们人的思维模式。

面向对象使用继承、封装、多态使程序复用性、扩展性、安全性、健壮性、易维护性得到极大的提高。

 

  1. 3.         小数默认都是double,如果要float的话就是在数字后加f

答案

 

 

  1. 4.         访问修饰符

答案

Public 公有,其他类都可以访问

    Protected 保护,只有本类和子类可以访问

    Private 私有,只有本类可以使用

    Internal 内部,本程序集中的类可以使用。

 

  1. 5.         short a = 1,a = a+1 有什么错?short a = 1, a += 1有什么错

答案

1)a=a+1中的1要做强制类型转换为short。

2)没有错

 

  1. 6.         表达式float f=3.4对吗?如果不对,请说明原因

答案

1)        不对

2)        在c#中,应为 float f = 3.4f  或者 float f = 3;

 

  1. 7.         声明一个有100个元素的数组

答案

1)        String[] arr = new String[100];

2)        Array arr = Array.CreateIntence(typeof(string),100);

 

注:Array类是所有数组的父类

 

 

  1. 8.         请试写一下你在项目中经常遇到的几种异常(至少两种以上)

答案

1)        连接数据库失败(数据库连接串有问题)

2)        未将对象引用到对象的实例 (某些对象在使用过程中,未判断是否等于null,然后就直接调用方法或者属性)

 

  1. 9.         什么修饰符可以使类无法继承?

答案

1)        Sealed 密封的

2)        结构(struct)默认就是密封的

 

 

  1. 10.     访问修饰符

答案

Public 公有,其他类都可以访问

    Protected 保护,只有本类和子类可以访问

    Private 私有,只有本类可以使用

    Internal 内部,本程序集中的类可以使用。

 

  1. 11.     C/SB/S

答案

C/S就是客户机和服务器结构,在客户端需要安装一个软件.将业务需求合理的分配到客户机与服务器两端来进行. C/S结构的软件需要针对不同的操作系统开发不同版本的软件. 如果产品的更新换代很快的话,就很难适应上百台电脑用户同时更新。更新的代价很高.

 

       B/S 结构 即浏览器和服务器结构. 它是随着互联网技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过浏览器来实现,极少部分事务逻辑在前端(Browser)实现,主要事务逻辑是在服务器端(Server)实现,形成所谓三层3结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。以目前的技术看,建立B/S结构的网络应用,在互联网模式下数据传输,相对易于把握、成本也是较低的。近似于一次性到位的开发,能实现不同的人员,从不同的地点,访问和操作共同的数据库.

 

 

  1. 12.     给我一个你最常见到的runtime exception

答案

如除零异常

 

 

  1. 13.     swtich是否能作用在byte上,是否能作用在long上,是否能作用在String?

答案

可以

 

 

  1. 14.     请说出你所知道的线程同步的方法

答案

Lock  Monitor类

 

 

  1. 15.     String s =new String("xyz");创建了几个String  object ?

答案

创建2个Object对象

 

 

  1. 16.     你使用过哪些版本管理器,check in和check out的作用

答案

VSS Check in 将要编辑或修改的代码从服务器签出到本地,Checkout将编辑或修改好的代码签入到服务器. check out是锁定资源,防止被其他人同时操作,check in是释放被锁定的资源

 

  1. 写出提高数据访问性能的几点要求.

答案

1)合理设计数据库

   2)使用存储过程

   3)使用数据缓存

 

 

  1. String 类是否可以被继承

答案

可以,只有不是密封的类就可以被继承。

 

  1. 如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?

答案

隐藏表单域,request,URL重写

 

  1. 正规表达式只许输入整数

答案

^([1-9])(\d{0,})(\d{0,})$

 

  1. 重载和重写的区别

答案

重写是子类的方法覆盖父类的方法,要求方法名和参数都相同

重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数,

 

  1. 面向对象的思想是什么?

答案

定义一:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。

 

定义二: 面向对象方法是以认识论为基础,用对象来理解和分析问题空间,并设计和开发出由对象构成的软件系统(解空间)的方法。 由于问题空间和解空间都是由对象组成的,这样可以消除由于问题空间和求解空间结构上的不一致带来的问题。简言之,面向对象就是面向事情本身,面向对象的分析过程就是认识客观世界的过程。

 

面向对象方法从对象出发,发展出对象,类,消息,继承等概念。

 

面向对象方法的主要优点是:符合人们通常的思维方式;从分析到设计再到编码采用一致的模型表示具有高度连续性;软件重用性好。

 

  1. 什么是面向对象?简述

答案

面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在“对象”概念基础上的方法学。

OOP的三大机制“封装、继承、多态”

 

 

 

  1. 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. 引用和值类型的区别,用代码说明?

答案

声明一个值类型变量,编译器会在栈上分配一个空间,这个空间对应着该值类型变量,空间里存储的就是该变量的值。

引用类型的实例分配在堆上,新建一个引用类型实例,得到的变量值对应的是该实例的内存分配地址,

   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: }

 

  1. 简述什么是Overload(重载)和Override(重写)

答案

Override:覆盖,是父类与子类之间多态性的一种表现,如果子类中定义的某方法与父类有相同的名称和参数,我们说该方法被重写
   (overriding).子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。
    Overload:重载,方法的重载,是一个类中的多态性的一种表现.在一个类中定义了多个同名的方法,它们有不同的参数个数或有不同

 

  1. &&和&的区别,哪个返回布尔值?

答案

&是java中的位逻辑运算:
  eg:
        2&3=2;
        具体分析为:
        2的二进制为10
        3的二进制为11
        逻辑&之后为10
&&是boolean的逻辑运算
eg:
      if(1> 2&&3> 1)
      表示如果两个条件都成立则执行之后的逻辑;

 

 

二、             算法

 

  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;

 

  1. 29.     编程题求两个数的最小公倍数。

答案

求两个数的最大公约数,然后两个数想乘,在除于最大公约数就可以得到最大公倍数。

 

  1. 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);

                }

            }

 

  1. 31.     编写一个类,打印昨天当前时间

答案

class Program

    {

        static void Main(string[] args)

        {

            DateTime dt= DateTime.Now - new TimeSpan(1, 0, 0, 0);

            Console.WriteLine(dt.ToString());

        }

    }

 

  1. 32.     编写一个实现复数 +, -, *, / 的类

答案

class Complex    {

        private double m_dRealPart; 

       private double m_dImagePart;

 

        public Complex(double dRealPart, double dImagePart)

        {

            m_dRealPart = dRealPart;

            m_dImagePart = dImagePart;

        }

        public Complex(double dRealPart)

        {

            m_dRealPart = dRealPart;

            m_dImagePart = 0;

        }

        public Complex()

        {

            m_dRealPart = 0;

            m_dImagePart = 0;

        }

        public Complex(Complex orig)

        {

            m_dRealPart=orig.m_dRealPart ;

            m_dImagePart=orig.m_dImagePart ;

        }

 

        static public Complex operator +(Complex op1,Complex op2)

        {

            Complex res = new Complex();

            res.m_dRealPart = op1.m_dRealPart + op2.m_dRealPart;

            res.m_dImagePart = op1.m_dImagePart + op2.m_dImagePart;

            return res;

        }

        static public Complex operator -(Complex op)
        {

            Complex res = new Complex();

            res.m_dRealPart = -op.m_dRealPart;

            res.m_dImagePart = -op.m_dImagePart;

            return res;

        }

        static public Complex operator -(Complex op1, Complex op2)
        {

            Complex res = new Complex();

            res = op1 + (-op2);

            return res;

        }

        static public Complex operator *(Complex op1, Complex op2)
        {

            Complex res = new Complex();

            res.m_dRealPart = op1.m_dRealPart * op2.m_dRealPart - op1.m_dImagePart * op2.m_dImagePart;

            res.m_dImagePart = op1.m_dImagePart * op2.m_dRealPart + op1.m_dRealPart * op2.m_dImagePart;

            return res;

        }

        static public Complex operator /(Complex op1, Complex op2)
        {

            Complex res = new Complex();

            double temp = op2.m_dRealPart * op2.m_dRealPart + op2.m_dRealPart * op2.m_dImagePart;

            res.m_dRealPart = (op1.m_dRealPart * op2.m_dRealPart + op1.m_dImagePart * op2.m_dImagePart) / temp;

            res.m_dImagePart = (op1.m_dImagePart * op2.m_dRealPart - op1.m_dRealPart * op2.m_dImagePart) / temp;

            return res;

        }

        public double GetRealPart()
        {

            return m_dRealPart;
        }

 

        public double GetImagePart()
        {

          return m_dImagePart;
        }

}

 

  1. 33.     写出一个函数实现对一个字符串的所有排列(说出实现思路)

答案

1)        char[] chars = str.ToCharArray();

Array.Sort(chars);

2)        冒泡排序算法

 

  1. 34.     x=4,y=6在不声明新变量的情况下交换x,y的值

答案

Int x = 4;

Int y = 6;

X+=y;

Y = x – y ;

X = x- y ;

 

  1. 写一个方法,截取String a=”我ABC 4” ,反回”我ABC”.

答案

public string  GetString(string myStr)

{

string subString = myStr.SubString(0, 4);

   return substring;

}

GetString( a);

 

 

  1. 有10桶金币,有一桶是假的,假设真币的重量是1000g/枚,假币比真币少100g/枚,有一个称,如何一次称出哪桶是假币?

答案

将10桶金币依次编号,从每桶金币中各取一枚以桶号为编号,将编了号的金币逐枚放入称中,根据称的重量可以找出假币,根据编号找到假币桶。

 

  1. 一个人天天看流星,他一个月看到流星的概率是91%,哪么他半个月看到流星的概率是多少?

答案

91%

 

  1. 求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m

答案

For循环实现

 

  1. 1+1+2+3+5+8+…到第30位多少?

答案

斐波那契数列

832040

 

 

  1. 找出第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); //显示所有质数的和
}

 

  1. 写把t1.txt文件的内容写到t2.txt的思路步骤?

答案

利用FileStream(System.IO),StreamReader,StreamWriter

从t1.txt读出内容保存在文件流中,

将文件流中的内容写入t2.txt

 

  1. 1,1,2,3,5,8第30位是什么数,用递归算法实现!

答案

斐波那契数列

832040

 

 

 

三、             HTML,JS相关

 

 

  1. 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>

 

 

四、             模式架构

 

 

  1. 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);

  

   }

 }

 

  1. 45.     介绍几种你熟悉的设计模式,写出原理及应用环境

答案

1)Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。用于可能使用多种数据源的情况。

2)Singleton:保证一个类仅有一个实例,并提供一个访问它的全局访问点。用于一些工具类,如数据库操作类。

3)Iterator:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。 如集合中类的枚举方法

 

  1. 应用服务器与Web Server的区别?

答案

1)应用服务器是用来部署应用程序的服务器

   2)Web Server是一种技术,是用来实现站点和站点之间进行数据交换的技术。

 

   3)有了Web Server技术,可以实现多个应用服务器上部署的网站或应用程序的信息交流

  

 

  1. 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中的数据集对象之间的互操作。

 

 

  1. xml的作用,举例一些元素与作用,并描述如何定义一个全局异常点。

答案

XML是EXtensible Markup Language的缩写

XML是一种类似于HTML的标记语言

XML是用来描述数据的

XML的标记不是在XML中预定义的,你必须定义自己的标记

XML使用文档类型定义(DTD)或者模式(Schema)来描述数据

XML使用DTD或者Schema后就是自描述的语言 

 

 

 

  1. AJAX的优点

答案

使用Ajax的最大优点就是能在不刷新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地响应用户交互,并避免了在网络上发送那些没有改变的信息。

Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

 

  1. 你知道的几种架构?

答案

C/S

B/S