1.net framwork 和 net core区别
.NET Framework 支持窗体和网页应用,winform,wpf。.NET Core 是新的开源和跨平台框架,用于为所有操作系统(包括Windows、Mac和Linux)构建应用程序
2.winform和wpf区别
wpf底层使用DirectX,winform底层使用GDI+,在图形界面上wpf更胜一筹
GDI+(Graphics Device Interface)图形设备接口,它的主要任务是负责绘图程序之间的信息交换、处理,所有windows程序的图形输出。
DirectX(Direct Extension)多媒体编程接口,加强3D图形和声音效果,有很多API组成。按照性质分类可分为四大部分:显示部分,声音部分,输入部分和网络部分。
3.多线程处理,启动线程
启动线程thread.start,task.run,task.Start,Task.Factory.StartNew()
终止线程thread.Abort 不可以重新唤醒,thread.Interrupt可以被重新唤醒
4.锁
lock(obj)
Monitor.TryEnter(obj, 500);设置等待时间
5.设计模式六大原则
单一职责原则 一个类只负责一项职责
历史替换原则 子类可以扩展父类的功能,但不能改变父类原有的功能
依赖倒置原则 核心思想是面向接口编程 高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
接口隔离原则 客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
迪米特法则 一个对象应该对其他对象保持最少的了解。 尽量降低类与类之间的耦合
开闭原则 一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 用抽象构建框架,用实现扩展细节
6.23种设计模式
单例模式,工厂方法,抽象工厂(工厂模式目的解耦),建造者模式,原型模式,责任链模式,
7.接口和抽象类区别interface、abstract
相同:都不能被实例化
不同:接口可以多继承,不可以实现,继承后必须全部实现,强调的是功能和约束规范。抽象类只能单继承,定义后可以实现也可以不实现,强调的是所属关系
8.委托和事件区别
委托就是一个类,也可以实例化,通过委托的构造函数把方法赋值给委托实例,触发委托的两种方式:委托实例.Invoke(参数列表),委托实例(参数列表)
事件可以看做是一个委托类型的变量,一个事件可以注册多个委托实例,也可以直接注册多个方法,EventHandler就是一个委托
9.委托
Delegate 0-32个入参,可以无返回值,也可以指定返回值类型
Action 0-16个入参,不提供返回类型
Func<T,TResult> 0-16个入参,必须有一个返回类型
Predicate 一个入参,返回类型为bool
10.String和StringBuilder
都是引用类型,string本身不可变,每次发生改变时都会生成一个新的对象,stringbuilder每次操作都是对自身对象进行修改,所占空间随着内容而改变,在做大量修改时不会产生大量的匿名对象影响系统性能。
11.重写和重载
重写:方法名,参数类型,返回类型全部相同,且被重写的方法不能拥有更严格的权限,发生在继承类中
重载:方法名,参数类型或个数不同,对权限没要求,在当前类中
12.struct结构体
结构体是值类型,存储在栈上,不支持继承,不能生命默认的构造函数,字段无法赋予初始值,可以实现一个或多个接口