zoukankan      html  css  js  c++  java
  • C# 面试题一

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

    答:private : 私有成员,在类的内部才可以访问

                   Protected : 保护成员,该类内部和继承类中可以访问

                   Pulbic : 公共成员,完全公开

                    Internal : 在同一命名空间内可以访问

    2、         C#中,string str = null,str=””,请尽量用文字说明区别

    答:string str ="" 分配空间而string str = null不分配空间

    3、         请叙述const与readonly的区别

    答:const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。

    const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。

    const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。

    readonly在运行期评估赋值,使我们得以在确保“只读访问”的前提下,把object的初始化动作推迟到运行期进行。

    readonly在运行期评估赋值,使我们得以在确保“只读访问”的前提下,把object的初始化动作推迟到运行期进行。根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而 readonly 字段可用于运行时常数。

    readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面。

    4、         readonly 只能在声明时或者构造函数里面初始化,并且不能在 static 修饰的构造函数里面。

    答:session  简单,但易丢失

          Cookie 简单,但可能不支持

         Input type=”hidden” 简单

         url 参数简单显示于地址栏

    5、         概述反射和序列化

    答:反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性

          序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用HTTP通过Internet在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

    6、         什么是SOAP,有哪些应用

    答:SOAP Simple Object Access Protocol 简单对象访问协议,是一种转量的,简单的,基于XML协议,它被设计成在WEB上交换结构化和固化的信息。SOAP可以和现丰的许多因特网协议和格式结合使用,包括超文本传输协议HTTP,简单邮件传输协议SMTP,多用途网际邮件扩充协议MIME,它还支持从消息系统到远程过程调用RPC等大量的应用程序。Web service 就是一个用编程的方法通过WEB 来调用这个应用程序

    7、         ASP.NET中共有几种类型的控件?各有什么区别?

    答:HTML控件传统的HTML标记;WEB控件可以回传数据,事件驱动;自定义控件在原有控件的基础上增加功能;复合控件多个子控件复合成一个新的控件。

    8、         PDB是什么东西?在调试中它应该放在哪里?

    答:PDB是用于保存调试和项目状态信息的文件,在DEBUG的时候产生PDB文件,调试的时候应该放在对应应用程序集相同目录。

    9、         简述Ajax原理

    答:Ajax简单的讲就是客户端通过javascript脚本获取服务器端的文本,通过解析返回值,更新部分的网页内容。

    10、      描述线程与进程的区别

    答:开个QQ,开了一个进程;开了迅雷,开了一个进程。
    在QQ的这个进程里,传输文字开一个线程、传输语音开了一个线程、弹出对话框又开了一个线程。所以一个进程管着多个线程。

    线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多CPU环境下就允许多个线程同时运行。同样多线程也可以实现并发操作,每个请求分配一个线程来处理。

    线程和进程各自有什么区别和优劣呢?

    进程是资源分配的最小单位,线程是程序执行的最小单位。

    进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。

    线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。

    但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。

    11、      什么是windows服务,它的生命周期与标准的exe程序有什么不同

    答:windows服务是运行在windows后台指定用户下的应用程序,它没有标准的UI界面,相比标准的EXE程序,windows服务是在服务开始的时候创建,而在服务结束的时候销毁,而且可以设置服务是否与操作系统一起启动,一起关闭。它支持三种方式:1)自动方式 2)手动方式 3)禁用。另外标准的EXE默认使用的当前登录的用户,而windows服务则默认使用system用户,这在对系统资源访问的时候特别需要注意。

    12、      什么是强类型,什么是弱类型?哪种更好些,为什么?

    答:强类型是在编译的时候就确定类型的数据,在执行的时候类型不能更改,而弱类型在执行的时候才会确定类型。没有好不好,二者各有好处,强类型安全,因为它事先已确定好了,而且效率高。一般用于编译型编程语言,如C++ JAVA C# 。弱类型相比而言不安全,在运行的时候容易出现错误,但它灵活,多用于解释型编程语言,如js.

    13、      什么是GAC?它解决了什么问题?

    答:Gloal Assembly Cache全局应用程序集缓存,它解决了几个程序共享某一个程序集的问题。不必再将那个被共享的程序集拷贝至应用程序目录了,其实这个道理很简单,.net应用程序在加载的时候,会首先查看全局应用程序集缓存,如果有就可以直接用,没有再到应用程序目录进行查找。

    14、      简述面向接口、面向对象、面向方面编程的区别

    答:1).面向接口编程: 手段:通过接口规约对象的属性和方法,是面向对象一部分。 目的:统一标准问题,让大家不至于各行其事而对代码的可读性造成影响(公用部分行为)。

      2).面向对象编程: 手段:通过封装、继承、多态等更加有效的组织程序。 目的:解决的是复用问题(让代码可以复用,而不是重复造轮子)。

      3).面向方面编程: 手段:分离业务的主逻辑和次逻辑的一种思想。 目的:解决的是逻辑分离问题(主逻辑和次逻辑分开,其实主要是分离业务逻辑和非业务逻辑分开)。

      总结: 接口->统一行为 对象->重用代码 方面->分离逻辑

    15、      简述用repeater实现手工分页的思路

     答:1)页面布局:

    <table>

       <tr>

          <td align="center">               <asp:LinkButton ID="lbtnFirstPage" runat="server" OnClick="lbtnFirstPage_Click">页首</asp:LinkButton>              <asp:LinkButton ID="lbtnpritPage" runat="server" OnClick="lbtnpritPage_Click">上一页</asp:LinkButton>               <asp:LinkButton ID="lbtnNextPage" runat="server" OnClick="lbtnNextPage_Click">下一页</asp:LinkButton>              <asp:LinkButton ID="lbtnDownPage" runat="server" OnClick="lbtnDownPage_Click">页尾</asp:LinkButton><br />              第<asp:Label ID="labPage" runat="server" Text="Label"></asp:Label>页/共<asp:Label ID="LabCountPage" runat="server" Text="Label"></asp:Label>页

          </td>

      </tr>

    </table>

         2)绑定数据:

    真分页主要实现在于sql语句上:

    select   top  每页显示的记录数 *  from  topic  where  id  not   in  ( select   top  (当前的页数-1)*每页显示的记录数 id  from  topic  order   by  id  desc )  order   by  id  desc

    再查询出总记录数来计算总页数pageCount

    int pageCount = (int)Math.Ceiling((double)查询出的总记录数个数/ (double)每页显示的记录数)

    之后将返回的数据表直接绑定到repeater控件上,

    16、      简述你对webservice的了解

    答:webservice是什么:Web Service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web来调用这个应用程序。我们把能调用这个Web service 的应用程序叫做客户端程序。

           webservice可以做什么:不同应用程序之间的通信。

          webservcie调用原理:WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议(simple object access protocol,简单对象访问协议

    SOAP协议 = HTTP协议 + XML数据格式 

    SOAP协议是基于HTTP协议的,两者的关系就好比高速公路是基于普通公路改造的,在一条公路上加上隔离栏后就成了高速公路。

    17、      如何理解委托

    答:1)委托类似于C++函数指针,但它是类型安全的。2)委托允许将方法作为参数进行传递。3)委托可以链接在一起:例如,可以对一个事件调用多个方法。

    18、      override与重载的区别

    答:重载是方法的名称相同,参数个数或参数类型不同。

     Override 是进行基类中函数的重写。为了适应需要。

    19、      session有什么重大bug,微软提出了什么方法的加以解决?

    答:在IIS中由于进程回收机制,系统繁忙的话Session会丢失,可以用sqlservice数据库的方式存储session,不过这种方式比较慢,而且无法捕获session的end事件。

    20、         列举ADO.net中的五个对象

    Connection, Command, DataAdapter,DataSet,DataTable,DataView

  • 相关阅读:
    Java中常用的四种线程池
    Java中线程与堆栈的关系
    Java线程池构造参数详解
    Java中三目运算符不为人知的坑
    Java并发编程实战 之 对象的共享
    Java并发编程实战 之 线程安全性
    【图文教程】Eclipse for PHP+XAMPP调试配置
    Spket在Eclipse下的安装和配置(图文教程)
    JavaScript编码规范
    FizzBuzzWhizz游戏的高效解法
  • 原文地址:https://www.cnblogs.com/zhengwei-cq/p/9011404.html
Copyright © 2011-2022 走看看