C#面试经验
介绍面试过程中遇到的面试题
yulongguiziyao
这个作者很懒,什么都没留下…
展开
-
查询数据库表中的30到40条数据(id不连续)
以下假设表名为A一、SQL Server解法一:select top 10 * from A where ID not in (select top 30 ID from A)解法二:select top 10 * from (select top 40 ID from A order by ID) as a order by a.ID desc解法三:select * from(s...原创 2019-04-13 12:03:27 · 3991 阅读 · 0 评论 -
C#面试记录
最近面试过程中遇到的一些面试题在此做一个记录。1、说一下值类型和引用类型。2、接口和类的区别。3、说一下锁,以及对锁的优化。4、多线程5、使用过什么消息队列,各有什么特点。6、是否使用过Redis。7、是否了解微服务。实际操作题:1、获取某个城市的实时温度。...原创 2019-04-04 10:22:56 · 531 阅读 · 0 评论 -
C# 接口和抽象类的共同点和区别
相同点:(1) 都可以被继承,且都能多继承接口(2) 都不能被实例化(3) 都可以包含方法声明(4) 派生类必须实现未实现的方法区 别:(1) 抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、和方法声明,不能包含字段。(2) 抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范。微软的自定义接口总是后带able字段,证明其是表述一类“我能做。。。”(3...原创 2019-04-08 17:38:14 · 927 阅读 · 0 评论 -
C# 静态常量和动态常量的区别
C#中有两种常量类型,分别为readonly(运行时常量)与const(编译时常量),本文将就这两种类型的不同特性进行比较并说明各自的适用场景。工作原理readonly为运行时常量,程序运行时进行赋值,赋值完成后便无法更改,因此也有人称其为只读变量。const为编译时常量,程序编译时将对常量值进行解析,并将所有常量引用替换为相应值。声明及初始化readonly常量只能声明为类字段,支持实...原创 2019-04-08 17:23:18 · 392 阅读 · 0 评论 -
数据库索引
面试时遇到面试官问了一个问题让说一下索引的原理,但是作者对索引的了解仅仅是“加索引之后查询快”,一阵懵和尴尬之后回来查询了一下索引相关的知识点,记录一下。一、为什么要给表加上主键?更快的查询数据二、为什么加索引后会使查询变快?索引的建立使用的是平衡树(b tree)数据结构,查询的时候时间复杂度从O(n)降至O(log)三、为什么加索引后会使写入、修改、删除变慢?为了保证索引的正确,修...原创 2019-04-06 09:49:41 · 182 阅读 · 0 评论 -
TCP和UDP及它们的区别
TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于广播和细节控制交给应用的通信传输UDP(User Datagram Protocol)UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。 即使是出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络拥塞的行为。此...原创 2019-04-06 08:23:10 · 1751 阅读 · 0 评论 -
mvvm和mvc的区别
1、Mvvm定义MVVM是Model-View-ViewModel的简写。即模型-视图-视图模型。【模型】指的是后端传递的数据。【视图】指的是所看到的页面。【视图模型】mvvm模式的核心,它是连接view和model的桥梁。它有两个方向:一是将【模型】转化成【视图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。二是将【视图】转化成【模型】,即将所看到的页面转化成后端的数据。实现的...原创 2019-04-05 17:10:48 · 355 阅读 · 0 评论 -
说一下重写和重载
方法重载(overload)是指同一个类中的多个方法具有相同的名字,但这些方法具有不同的参数列表,即参数的数量或参数类型不能完全相同。方法重写(override)是存在子父类之间的,子类定义的方法与父类中的方法具有相同的方法名字,相同的参数表和相同的返回类型 ,是多态的体现形式。...原创 2019-04-05 16:19:30 · 253 阅读 · 0 评论 -
C# 装箱和拆箱,以及使用场景
一、简述装箱是将值类型转换成引用类型。拆箱是将引用类型转换成值类型,只有装箱过的对象才能拆箱。二、装箱和拆箱的内部操作是什么样的?.NET中,数据类型划分为值类型和引用(不等同于C++的指针)类型,与此对应,内存分配被分成了两种方式,一为栈,二为堆,注意:是托管堆。值类型只会在栈中分配。 引用类型分配内存与托管堆。(托管堆对应于垃圾回收。)装箱:对值类型在堆中分配一个对象实例,并将该...原创 2019-04-05 16:08:11 · 6421 阅读 · 0 评论 -
C# 多线程
编程过程中有时候会遇到比较耗时的操作,例如网络请求、文件操作,这个时候为了程序的性能考虑就需要多线程来处理,这里介绍几种多线程的方法。1、异步委托创建线程的一种简单方式是定义一个委托,并异步调用它。委托使用线程池完成异步任务。Delegate类提供了BeginInvoke()方法。2、Thread类3、线程池(ThreadPool)4、Task...原创 2019-04-05 10:47:43 · 242 阅读 · 0 评论 -
说一下锁,以及对锁的优化
说到锁,就要说到多线程。多线程中有争用条件的时候就需要用到锁来做同步。C#中多线程同步提供如下技术:1、lock语句2、interlocked类3、Monitor类4、SpinLock结构5、WaitHandle类6、Mutex类7、Semaphore类8、EventL类9、ReaderWriterLockSlim类lock语句、 interlocked类和 Monitor类...原创 2019-04-04 16:22:19 · 459 阅读 · 0 评论 -
接口和类的区别
不同点:接口不能直接实例化。接口不包含方法的实现。接口可以多继承,类只能单继承。类定义可以在不同的源文件之间进行拆分。相同点:接口、类和结构都可以从多个接口继承。接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。接口和类都可以包含事件、索引器、属性。...原创 2019-04-04 14:28:16 · 10053 阅读 · 3 评论 -
值类型和引用类型的区别
一、简述值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中。值类型(value type):byte、short、int、long、float、double、decimal、char、bool 、 struct、enum 统称为值类型。值类型变量声明后,不管是否已经赋值,编译器为其分配内存。引用类型(reference type):string 、 class统...原创 2019-04-04 11:35:15 · 3664 阅读 · 0 评论