某公司.Net架构师面试题(2)

本文详细解析了值类型与引用类型的差异、线程池的工作原理及其优缺点、Redis的数据类型及应用场景、数据库分表分库策略以及负载均衡算法的特点。

值类型与引用类型


 1、理解参数按值传递?以及按引用传递?
按值传递:对于值类型传递的它的值拷贝副本,而引用类型传递的是引用变量的内存地址,他们还是指向的同一个对象。
按引用传递:通过关键字out和ref传递参数的内存地址,值类型和引用类型的效果是相同的。


2、out 和 ref的区别与相同点?
out 和 ref都指示编译器传递参数地址,在行为上是相同的;
他们的使用机制稍有不同,ref要求参数在使用之前要显式初始化,out要在方法内部初始化;
out 和 ref不可以重载,就是不能定义Method(ref int a)和Method(out int a)这样的重载,从编译角度看,二者的实质是相同的,只是使用时有区别;

3、说说值类型和引用类型的生命周期?
值类型在作用域结束后释放。

引用类型由GC垃圾回收期回收。

4、static 构造函数什么时候执行?其中的代码逻辑是否是线程安全?
静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。
安全。


GC与内存管理 


1、简述一下一个引用对象的生命周期?
一个对象的生命周期简单概括就是:创建>使用>释放,在.NET中一个对象的生命周期:

new创建对象并分配内存
对象初始化
对象操作、使用
资源清理(非托管资源)
GC垃圾回收

2、using() 语法是如何确保对象资源被释放的?如果内部出现异常依然会释放资源吗?
using() 只是一种语法形式,其本质还是try…finally的结构,可以保证Dispose始终会被执行。

评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值