【原创】.NET之我见
最近在准备面试,自己也顺带巩固了下基础,加上自己对码农的一些理解都写在这里了,水平不行,欢迎吐槽
//.NET基础
1.Class 和struct 区别
类是一种“引用类型”。创建类的对象时,对象赋值到的变量只保存对该内存的引用。将对象引用赋给新变量时,新变量引用的是原始对象。通过一个变量做出的更改将反映在另一个变量中,因为两者引用同一数据。
结构是一种值类型。创建结构时,结构赋值到的变量保存该结构的实际数据。将结构赋给新变量时,将复制该结构。因此,新变量和原始变量包含同一数据的两个不同的副本。对一个副本的更改不影响另一个副本。
2.值类型和引用类型:
常见的值类型: int, 在定义是必须初始化,分配在栈(Stack)上
常见的引用类型:string, 在定义时可以初始化为null, 分配在堆(Heap)上
3.装箱和拆箱
装箱:从值类型转为引用类型。装箱列子: int i=0; String s= (string)i;
拆箱:引用类型转化为值类型。拆箱例子: int i=0; Object obj=i; int j =(int)obj;
4. 异常的作用是什么?.NET BCL中有哪些常见的异常?在代码中您是如何捕获/处理异常的?在“catch (ex)”中,“throw”和“throw ex”有什么区别?您会如何设计异常的结构,什么情况下您会抛出异常?
Throw 和 Throw ex 差别
Throw 和 Throw ex 差别 http://www.cnblogs.com/JerryTian/archive/2012/09/24/2699459.html
5. Dispose ,Close, set object= null 区别?
从内存角度来看, 举个例子:
var frm1 = New Form(); //在内存 0x000022~0x0000088 开辟了一块内存放置frm1, 如果调用 frm.Close(); 则该内存区域扔被frm1占用,下次再frm.Open()就会很快。如果调用frm.Dispose() 方法则从释放这段内存,并立即调用GC回收这段内存。
frm =null; 则只是释放这段内存,等待GC回收。
这里顺便说下.NET提供的using语法, 它可确保在实现了IDisposeable接口的对象的引用超出作用域时,在该对象上自动调用Dispose方法。
Or just a general statement. With the connection object calling Close() will release the connection back into the pool. Calling Dispose() will call Close() and then set the connection string to null.
6.什么是.NET?什么是CLI?什么是CLR?IL是什么?JIT是什么,它是如何工作的?GC是什么,简述一下GC的工作方式?
.NET是一个微软的开发应用层程序的框架.CLI 是公共语言接口,CLR是公共语言运行时,IL是中间语言,JIT 即时编译? GC垃圾回收器,定是运行,回收没有被用的内存资源
7. 什么是扩展方法,能带来哪些好处?
扩展方法就是在不改变原有代码的情况下,给一个已经存在的类扩展一些方法。
8.List<int> 和 int[] 区别?
9.关于并行编程:
1.异步委托: 定义一个委托,将要异步之行的方法指向该委托,委托调用BeginInvoke来异步之行该方法(返回一个IAsyncResult的对象到主线程),可以判断IAsynResult的行为,或者直接之行一个回调方法来使用异步方法返回的IAsyncResult的结果。
2.Thread类:
前台线程和后台线程:
Thread类创建的线程总是前台线程(除非指定IsBackgroundThread = true),线程池创建的线程总是后台线程, 有时程序已经关掉,进程没有被杀掉就是因为UI线程结束了,但是创建的其他前台线程还没有结束,所以。。。。但是如果创建的是后台线程,则后台线程会随着前台线程的结束而结束。
3.ThreaPool
ThreadPool总是创建的后台线程,而且不能指定优先级,一般用于之行耗时比较小的任务。如果是耗时比较久,则创建Thread类的实例比较好。
10.关于性能优化:
自己总结的一点工作经验:
1.避免在迭代里查询数据库,这样会增加I/O
2.不用的非托管资源及时回收
//数据库
聚集索引和非聚集索引区别
聚集索引类似电话簿,数据按照聚集索引顺序排列,一个表只能有一个聚集索引,但该索引可包含多个列。
非聚集索引类
//Web
1.Authentication 与Authorization 区别
Authentication, “你是谁”的问题,Authorization “你能做什么“的问题。
【原创】.NET之我见的更多相关文章
- 【原创】MIPS浅议之——中断系统之我见
最近,准确的说应该是最近两个月的时间,我都在研究MIPS的异常与中断.或者可以说,最近这两个月,我才真正了解中断系统的整个结构和处理流程以及为什么要这样做?这段时间我最大的体会就是以前我们在“计算机组 ...
- 网友微笑分享原创Jquery实现瀑布流特效
首先非常感谢网友微笑的无私分享,此Jquery特效是一款非常流行和实用的瀑布流布局,核心代码只有几十行,是我见过代码量最少的瀑布流布局,非常适合网友们学习哦,希望大家好好看一下这个Jquery特效的原 ...
- WPF DataBinding之我见
原创,转载请注明出处:WPF DataBinding之我见 一.DataBinding介绍 数据绑定是在应用程序 UI 与业务逻辑之间建立连接的过程. 如果绑定具有正确设置并且数据提供正确通知,则 ...
- 【原创分享·支付宝支付】HBuilder打包APP调用支付宝客户端支付
前言 最近有点空余时间,所以,就研究了一下APP支付.前面很早就搞完APP的微信支付了,但是由于时间上和应用上的情况,支付宝一直没空去研究.然后等我空了的时候,发现支付宝居然升级了支付逻辑,虽然目前还 ...
- 【原创分享·微信支付】C# MVC 微信支付教程系列之现金红包
微信支付教程系列之现金红包 最近最弄这个微信支付的功能,然后扫码.公众号支付,这些都做了,闲着无聊,就看了看微信支付的其他功能,发现还有一个叫“现金红包”的玩意,想 ...
- 【原创分享·微信支付】 C# MVC 微信支付教程系列之扫码支付
微信支付教程系列之扫码支付 今天,我们来一起探讨一下这个微信扫码支付.何为扫码支付呢?这里面,扫的码就是二维码了,就是我们经常扫一扫的那种二维码图片,例如,我们自己添 ...
- 【原创分享·微信支付】 C# MVC 微信支付教程系列之公众号支付
微信支付教程系列之公众号支付 今天,我们接着讲微信支付的系列教程,前面,我们讲了这个微信红包和扫码支付.现在,我们讲讲这个公众号支付.公众号支付的应用环境常见的用户通过公众号,然后再通 ...
- 【原创分享·微信支付】C# MVC 微信支付之微信模板消息推送
微信支付之微信模板消息推送 今天我要跟大家分享的是“模板消息”的推送,这玩意呢,你说用途嘛,那还是真真的牛逼呐.原因在哪?就是因为它是依赖微信生存的呀,所以他能不 ...
- [原创]java使用JDBC向MySQL数据库批次插入10W条数据测试效率
使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢?在JDBC编程接口中Statement 有两个方法特别值得注意:通过使用addBatch( ...
随机推荐
- [修改后]html+css 做成一个可浏览的表格
现在表格内容需要显示的要求如下: 1, 表格很大,界面放不小,需要放到div中. 2, 在div中可以用scroll滑动查看. 3, td中的内容保持在一行中. 4, 可以点击tr,然后可以选中并了解 ...
- canvas beginPath()
先举个简单的例子, var myCanvas = document.getElementById("myCanvas"); var context= myCanvas.getCon ...
- arch linux 安装 之 ---GPT--引导篇
新入一二手X240 ,直接格式化,装archLinux. 一.引导程序安装--------------- 1.首先搞清楚什么是UEFI Under UEFI下的引导顺序 System switched ...
- 服务器内存UDIMM与RDIMM区别
UDIMM 全称是无缓冲双信道内存模块(Unbuffered Dual In-Lne Memory Modules),它不支持服务器内存满配,就是最高容量了,因为使用UDIMM内存时最大使用每通道只能 ...
- SVN系统的几个术语
SVN系统的几个术语 User:用户,可以远程连接到SVN服务器的权限实体. User Group:用户组,用于管理一组权限相同的用户. Repository:版本库,在服务器端保存着的项目中所有的文 ...
- Busybox下tftp命令使用详解
http://blog.chinaunix.net/uid-375398-id-1991686.html Busybox下的tftp命令可以用来进行单文件传输.使用的时候,是把电脑作为服务器Serve ...
- ubuntu14.04设置terminal配色方案以配合使用vim的Solarized插件
在安装vim插件之前,首先安装Vundle插件,用来管理vim插件,安装方法查看Vundle在github上的指南.在安装vundle的时候出现了一个错误E117:unknown function v ...
- vs2013卸载后重新安装不能用了,如何解决
vs2013卸载后重新安装不能用了 据说VS卸载后有残留文件,估计是注册文件没删除,弄了很多方法,最后只有重装.你可以下载一个cclearn清理注册表,再装试试 我卸载完用360清理了一下 之后再安装 ...
- 转:Xms Xmx PermSize MaxPermSize 区别
Eclipse崩溃,错误提示:MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) sp ...
- UI基础之UITableViewController相关
1> 设置类型为Group - (instancetype)initWithStyle:(UITableViewStyle)style { return [super initWithStyle ...