zoukankan      html  css  js  c++  java
  • 随机的面试问题

    1、简述什么是三层架构,及三层架构的利弊。
    三层架构包括表示层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。
    --表示层:为用户提供交互操作界面,只负责对用户提供的数据进行操作(判断用户输入的合法性等),同时向BLL提供用户操作的数据。
    --业务逻辑层:是建立在UI和DAL之间的桥梁,当需要对对业务逻辑进行操作时,只需拿到用户在UI层提供的数据即可进行操作,同时向DAL传递数据参数信息。
    --向上只接收UI传递的信息,不对信息进行判断,同时知识单纯的业务逻辑操作,向下不需要连接到数据库,不对数据库中信息进行操作。
    --数据访问层:是对数据库的操作,通过BLL提供的数据参数信息,对数据库进行的增删改查操作。

    优势:
    --结构清晰、耦合度低
    --可维护度高、可扩展度高
    --便于对一个项目,团队分工合作,共同开发。
    劣势:
    --增加了代码量、工作量
    --降低了系统性能

    2、简述ADO.NET中五大对象,及其作用.
    --Connection:用于程序与数据库之间的连接,当程序需要访问数据库时,ConnectionD的Open()方法打开数据库,在对数据库进行访问及其他操作之后利用Close()方法关闭数据库。
    --Command:在程序和数据库建立连接之后,通过SQL语句对数据库发出指令,例如进行增删改查等功能,以及呼叫存在数据库中的预存程序等。
    这个对象是架构在Connection之上,也就是Command通过连接到数据源。
    --DataAdapter:主要是在数据源与DataSet之间执行数据传输的工作,他可以通过Command对象下达命令后,将取得的数据存放在DataSet中,
    这个对象架构在Command对象之上,并提供了配合DataSet使用的功能。
    --DataSet:可以将这个对象视为一个暂存区,可以把从数据库中查询出来的数据存放下来,甚至可以显示整个数据库中的数据,是通过DataAdapter下达命令后取得的数据。
    DataSet 的能力不只是可以储存多个Table 而已,还可以透过DataSetCommand 对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet 对象可以说是ADO.NET 中重量级的对象,这个对象架构在DataSetCommand 对象上,本身不具备和数据源沟通的能力;也就是说我们是将DataSetCommand 对象当做DataSet 对象以及数据源间传输数据的桥梁。
    --DataReader:当我们只需要循环的读取数据而不需要其他的操作时使用DataReader对象,只是对数据进行读取,并在此过程中会占用Command对象,不允许进行其他操作,
    因为DataReader在读取数据时限制一次读取一行,并且是只读的,所以会节省资源且利用率高。而且利用DataReader对象除了利用率高之外,因为不需要返回全部数据,所以可以降低网络的负载。

    3、概述反射和序列化
    反射:反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性
    序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。
    序列化:是将数据结构和对象转换成二进制的过程。
    --.NET支持序列化的几种方式
    --XML序列化:对象序列化之后的结果是XML形式的XMLSerializer类来是实现的,这个类位于System.Xml.Serialization命名空间下。XML序列化不能序列化私有数据。
    --二进制序列化:对象序列化之后是二进制形式的,通过BinaryFormatter类来实现的,这个类位于System.Runtime.Serialization.Formatters.Binary命名空间下。
    --SOAP序列化:对象序列化之后的结果符合SOAP协议的,也就是通过SOAP协议进行传输,是在System.Runtime.Serialization.Formatters.
    Soap命名空间下的SoapFormatter类来实现的。

    4、什么叫做SQL注入,如何防止?请举例说明。
    利用sql关键字对网站进行攻击。过滤关键字
    --SQL注入攻击(SQL Injection):是攻击者将SQL命令插入到用户登录请求的查询字符串中,欺骗服务器执行恶意的SQL命令。
    主要是通过拼接字符串登录程序时容易被SQL注入攻击,
    例如:一条SQL命令为:string sql = "select * from Table where userName='"+userName+"'" "and userPwd='"+userPwd+"'" 当用户输入正确的用户名,并在其后加“ '--”时,SQL语句将会被数据库执行为只根据姓名查询结果(张三'--)
    当用户输入“ ’ or 1=1 -- ”时SQL语句将永为真。

    5、.net的错误处理机制是什么?
    .net错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。

    6、描述怎样区分ExcuteNonQuery,ExcuteDataReader和ExcuteScalar方法?
    ExcuteQuery:返回受影响的行数 当SQL命令为执行增、删、改语句时使用此方法。
    ExcuteDataReader:返回查询到数据的多行多列,当SQL命令为查询语句,查询的结果为表(多行多列)且需要返回该表数据时使用此方法。
    ExcuteScalar:返回查询到数据的首行首列,当SQL命令为查询语句时使用此方法。
    7、叙述下using的用法?
    --引入命名空间:using+命名空间名称,这样可以直接使用命名空间中的类型。不必指定类型的命名空间
    --using定义一个范围,在该范围结束时处理对象,释放内存。using () {}
    --using别名。using + 别名 = 包括详细命名空间信息的具体的类型。当一个cs引用多个命名空间时,而有相同的类型时可以这样做。比如namespace1 和
    namespace2下面都有myClass类时,可以using class1 = namespace1.myClass;using class2 = namespace2.myClass。

    8、请叙述const与readonly的区别。
    --const:定义常量,在类中和局部变量中使用,在定义声明是必须为其赋值
    --readonly:定义只读常量,在类中使用,可以在声明和构造函数中赋值,但不能在static构造函数中赋值,

  • 相关阅读:
    平板涂色
    速算游戏_NOI导刊2011提高(04)
    信息学奥赛一本通——配套刷题网站
    求10000以内n的阶乘
    大整数的因子
    计算2的N次方
    大整数加法
    带余除法
    A/B 高精度
    A*B 高静度
  • 原文地址:https://www.cnblogs.com/qyxfirstblog/p/5771370.html
Copyright © 2011-2022 走看看