C#面试题

1、GET和POST有什么区别

  Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。GET等幂,POST不等幂。基础的这样答已经OK了,深度回答:

1.url可见性

  get传参方式是通过地址栏URL传递,是可以直接看到get传递的参数,post传参方式参数URL不可见,get把请求的数据在URL后通过?连接,通过&进行参数分割。post将从参数存放在HTTP的包体内

2.传输数据大小

  get传递数据是通过URL进行传递,对传递的数据长度是受到URL大小的限制,URL最大长度是2048个字符。post没有长度限制

3.后退页面

  get后退不会有影响,post后退会重新进行提交

4.缓存

  get请求可以被缓存,post不可以被缓存

5.编码方式

  get请求只URL编码,post支持多种编码方式

6.历史记录

  get请求的记录会留在历史记录中,post请求不会留在历史记录

7 字符类型

  get只支持ASCII字符,post没有字符类型限制

二、post相比较get传参方式的优点

  1.安全性比get传参方式好:

    a.存在于HTTP包中,一般不会直接被查找到

    b.post不会被浏览器进行缓存

    c.不会留在历史记录中

  (并不代表post一定安全,因为在HTTP下都是明文传输,post仍然可以被查找到,增加安全性最好使用https协议)

  2.post没有字符和编码的限制,能发送的数据类型更多

  3.post传送数据没有大小限制,比get可以发送的更多的数据

  post的缺点:速度比get传输慢,get的效率更高

三、为什么get的效率比post高

  1.post在接收返回来的数据会先将请求头发送给服务器确认,然后才真正的发送数据,(相当于第一次先向服务器打个招呼,第二次才将数据真正的发过来,get则是直接发送数据。专业的说法是,get产生一个TCP数据包,post产生两个TCP。数据包但并不是所有的浏览器post都会请求两次,火狐浏览器就会请求一次)总结起来就是请求的过程比get更多

  2.get会将数据进行缓存

2、什么是序列化,什么时候会用到序列化

  序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

  可以用到序列化的地方:

  a、数据持久化:比如一个电商平台,有数万个用户并发访问的时候会产生数万个session 对象,这个时候内存的压力是很大的。我们可以把session对象序列化到硬盘中,需要时在反序列化,减少内存压力。
  b、网络传输:我们将系统拆分成多个服务之后,服务之间传输对象,不管是何种类型的数据,都必须要转成二进制流来传输,接受方收到后再转为数据对象。

3、面向对象的三个基本特征,说一说你的理解。

  三个基本特征是:封装、继承、多态。三大特征包括哪些,我们用一张图来形容。

           

  1.封装

    封装,也就是把客观事物封装成抽象的类,封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。

  封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。只让可信的类或者对象操作,对不可信的进行信息隐藏

  面相对象的不就是使用程序处理事情时以对象为中心去分析吗,与面向过程不同,面向过程关心处理的逻辑、流程等问题,而不关心事件主体。而面向对象即面向主体,所以我们在解决问题时应该先进行对象的封装(对象是封装类的实例,比如张三是人,人是一个封装类,张三只是对象中的一个实例、一个对象)

  2.继承

    继承是面向对象的基本特征之一,继承机制允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

通过继承创建的新类称为“子类”或“派生类”。

被继承的类称为“基类”、“父类”或“超类”。

继承的过程,就是从一般到特殊的过程。

多态同一个行为具有多个不同表现形式或形态的能力。是指一个类实例(对象)的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

  3.多态

  • 1. 消除类型之间的耦合关系
  • 2. 可替换性
  • 3. 可扩充性
  • 4. 接口性
  • 5. 灵活性
  • 6. 简化性

  多态存在的三个必要条件

  • 继承
  • 重写(子类继承父类后对父类方法进行重新定义)
  • 父类引用指向子类对象

  简言之,多态其实是在继承的基础上的。比如说今天我们要去动物园参观动物,那么你说我们去参观兔子、参观绵羊、参观狮子、参观豹子都是对的,但你不能说我们去参观汽车。在这个例子中,子类具有多态性:除了使用自己的身份,还能充当父类。

4、在WPF中是用哪个对象结合来通知界面集合中有变更?

  ObservableCollection<T> 类    表示一个动态数据集合,在添加项、移除项或刷新整个列表时,此集合将提供通知。

5、有八个大小相同的球,其中7个重量相等,有一个稍微重一点。如何用天平仅称两次就能确定哪个球更重?

  第一次随便拿出其中的6个,放在天平上左右各3个称重,就可以确定较重的一个在哪里了,有三种情况:在天平左边3个中,在天平右边的3个中,或者是在剩下的2个中。第二次就很好找到比较重的一个了,假如是前两种情况,只要随便拿出来3个中的2个,放在天平上称一下就知道了:如果不一样重,较重的就选出来了;如果两个一样重,则剩下的就是要找的了。如果是第三种情况,则用天平称一下就出来了。

6、说说你对路由的理解?

  能够根据系统需求,灵活的划分请求规则(不同模块请求的 URL 是不一样的)。

  屏蔽物理路径,提高系统的安全性,以上情况是无法根据 URL 分析视图文件在站点目录中的位置。

  有利于搜索引擎优化,可以将 URL 请求统一规范,以后维护中,如果页面发生变化,URL 可以保持不变

  

 

posted @ 2020-05-20 16:04  静文·辅神  阅读(321)  评论(0编辑  收藏  举报