C#面试问题及答案


1.遇到高并发的问题如何解决?
  优化SQL语句
  多线程
  分布式服务器
  集群
  拆表
2.Dictionary和ConurrentDictionary的区别?
  后者是线程安全的
  前者适用于单线程
3.Dictionary是什么?
  字典和List相比, 添加速度慢, 但是查找速度很快
  Dictionary的本质是两个数组, 存放键值对
  * 字典为什么能无限地Add呢?
  * 从字典中取Item速度非常快,为什么呢?
  * 初始化字典可以指定字典容量,这是否多余呢?
  * 字典的桶buckets 长度为素数,为什么呢?

4.数据库存储过程是怎样的?
  一段SQL代码, 写一次可以多次执行, 可以设置自增主键
  效率高速度快
5.怎么理解数据库中的分区?
  水平分区和垂直分区
  是一种数据库的设计技术
  能提升性能,对数据管理的简化
6.mobile是什么?
  Windows Mobile是微软为智能手机和PDA提供的操作系统,在Windows Mobile 5.之前分为Pocket PC和Smartphone两种版本,

  Pocket PC中包括PDA版本和带电话功能的Phone Edition。在Windows Mobile 6.中分为三类:Professional,

  即Pocket PC Phone Edition; Standard, 即Smartphone;Classic,即无电话功能的Pocket PC。
  Windows Mobile是基于Windows CE操作系统开发的针对智能手机和PDA的操作系统平台。

  所以Windows Mobile的硬件与应用程序都是由相关的标准要求,符合标准才能够运行Windows Mobile操作系统。

7.会不会用oracle数据库
  会
8.window.form是什么?
  是.NET中用来开发windows窗口的技术
  在windows中, 窗体是向用户显示信息的可是图画, windows操作系统中, 处处都是窗体
  为什么使用窗体?
  简单、强大、方便、灵活...
  c#、winform、wpf的区别?
  c#是一种编程语言
  winform则是一种界面框架,它提供给用户丰富的界面控件,使开发人员更快速,更好的完成开发任务
  wpf 被成为新一代的界面框架,可以说是winform的进化版,它提供了更炫的界面控件

9.UDP和TCP是什么?
  UDP是不基于连接的网络通信协议
  TCP是基于连接的网络通信协议
  UDP适用于网络视频, 电话会议等实时性强的场景
  TCP适用于大部分的网络通信场景
  TCP与UDP区别总结:
    1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
    2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
    3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
      UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
    4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
    5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
    6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

10.数据库隔离层分几个?数据库范式有哪些?

  1.READ UNCIMMITTED(未提交读)
  事务中的修改,即使没有提交,其他事务也可以看得到,比如说上面的两步这种现象就叫做脏读,这种隔离级别会引起很多问题,如无必要,不要随便使用
  例子:还是售票系统,小明和小花是售票员,他们分别是两个不同窗口的员工,现在售票系统只剩下3张票,此时A来小华这里买3张票,B来小明买票,小华查到余票还有就给接了订单,就要执行第三步的时候,小明接到B的请求查询有没有余票。看到小华卖出了3张票,于是拒绝卖票。但是小华系统出了问题,第三步执行失败,数据库为保证原子性,数据进行了回滚,也就是说一张票都没卖出去。
总结:这就是事务还没提交,而别的事务可以看到他其中修改的数据的后果,也就是脏读。
  2.READ COMMITTED(提交读)
大多数数据库系统的默认隔离级别是READ COMMITTED,这种隔离级别就是一个事务的开始,只能看到已经完成的事务的结果,正在执行的,是无法被其他事务看到的。这种级别会出现读取旧数据的现象
例子:还是小明小华销售员,余票3张,A来小华那里请求3张订票单,小华接受订单,要卖出3张票,上面的销售步骤执行中的时候,B也来小明那里买票,由于小华的销售事务执行到一半,小明事务没有看到小华的事务执行,读到的票数是3,准备接受订单的时候,小华的销售事务完成了,此时小明的系统变成显示0张票,小明刚想按下鼠标点击接受订单的手又连忙缩了回去。
总结:这就是小华的事务执行到一半,而小明看不到他执行的操作,所以看到的是旧数据,也就是无效的数据
 
  3.REPEATABLE READ(可重复读)
   REPEATABLE READ解决了脏读的问题,该级别保证了每行的记录的结果是一致的,也就是上面说的读了旧数据的问题,但是却无法解决另一个问题,幻行,顾名思义就是突然蹦出来的行数据。指的就是某个事务在读取某个范围的数据,但是另一个事务又向这个范围的数据去插入数据,导致多次读取的时候,数据的行数不一致。
例子:销售部门有规定,如果销售记录低于规定的值,要扣工资,此时经理在后端控制台查看了一下小明的销售记录,发现销售记录达不到规定的次数,心里暗喜,准备打印好销售清单,理直气壮和小明提出,没想到打印出来的时候发现销售清单里面销售数量增多了几条,刚刚好达到要求,气的经理撕了清单纸。原来是小明在就要打印的瞬间卖出了几张票,因此避过了减工资的血光之灾。
总结:虽然读取同一条数据可以保证一致性,但是却不能保证没有插入新的数据
 
  4.SERIALIZABLE(可串行化)
  SERIALIZABLE是最高的隔离级别,它通过强制事务串行执行(注意是串行),避免了前面的幻读情况,由于他大量加上锁,导致大量的请求超时,因此性能会比较底下,再特别需要数据一致性且并发量不需要那么大的时候才可能考虑这个隔离级别

11.mvc框架是什么?
  Model 模型层
  View 视图层
  Control 控制层
12.三层架构怎么分?
  三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。区分层次的目的即为了“
高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层。
  区分方法
    1:数据访问层:主要看数据层里面有没有包含逻辑处理,实际上它的各个函数主要完成各个对数据文件的操作。而不必管其他操作。
    2:业务逻辑层:主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。
    3:表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。
13.WebService是什么?
  一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术。
     所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统上运行。
      所谓远程调用,就是一台计算机a上的一个程序可以调用到另外一台计算机b上的一个对象的方法,譬如,银联提供给商场的pos刷卡系统,商场的POS机转账调用的转账方法的代码其实是跑在银行服务器上。再比如,amazon,天气预报系统,淘宝网,校内网,百度等把自己的系统服务以webservice服务的形式暴露出来,让第三方网站和程序可以调用这些服务功能,这样扩展了自己系统的市场占有率,往大的概念上吹,就是所谓的SOA应用。
14.你们做的项目前端和后端都用了什么框架和技术?
  前端: bootstrap,jQuery,js,layUI, Html
  后端: Java, SpringBoot, Spring, MyBatis
15.面向对象是什么?三大特性?
  就是万物皆对象, 把面向过程的程序设计思想, 变为基于对象的程序设计思想
  封装: 属性和方法封装在类中
  继承: 子类继承父类的属性和方法, 提高代码的复用性, 是子类模块类型一致
  多态: 子类重写父类的方法, 增加了方法的适用场景, 提高了代码的灵活性
16.如何运用面向对象的技术?模拟场景:电话会议?
  抽取对象
  分析对象的行为
  对象间的相互关系
17.db first和code first怎么实现?

  1. db first 是先有数据库,再写代码。根据数据库的表生成类。
  • django里面:python manage.py  inspectdb
  2. code first 是先写代码,后创建数据库。根据类创建数据库表。
  • djiango里面:python manage.py makemigrations  python manage.py migrate
18.remoting是什么?
  什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式。
19.如何生成模型类?步骤是怎么样?
  使用 Microsoft Entity Framework 的 ASP.NET MVC。 了解如何使用实体向导创建一个 ADO.NET 实体数据模型。 在本教程的过程中,我们构建的 web 应用程序演示了如何选择、 插入、 更新和删除数据库数据使用实体框架。

20.添加entityframework的步骤?
  * 在联网的情况下,一般通过NuGet安装EF,具体步骤如下:右键单击项目名称或引用,选择“管理NuGet程序包”。
  * 在弹出的对话框中选择Entity Framework并单击安装。
  *  安装完成后,项目中发生如下变化:
  - 引用中多了EntityFramework与EntityFramework.SqlServer两个应用;
  - 项目中增加了packages.config文件;
  - App.config中增加了<entityFramework>与<configSection>元素,主要是<entityFramework>,主要内容为:

 

posted @ 2019-03-14 22:31  何茫然zju  阅读(1659)  评论(0编辑  收藏  举报