这次的面试题大多为理论知识
1. 什么是委托,事件Event是不是委托
委托:是类型安全的,可以当参数一样传递给其他方法
Event:是一种特殊的委托,基于发布订阅机制,用于通知
2. 什么是泛型,有什么优缺点
泛型允许在定义类、接口和方法时使用类型参数的机制,
类型安全:泛型通过编译时检查确保类型正确性,避免了运行时的类型转换错误。
性能提升:使用泛型可以避免装箱和拆箱操作(尤其是涉及值类型时),从而提高程序性能
代码复用:泛型允许编写通用的类和方法,适用于多种数据类型,减少了重复代码的编写。
灵活性:泛型支持约束(Constraints),可以限制类型参数的范围,从而实现更灵活的功能设计。
减少强制类型转换:泛型消除了对对象进行显式类型转换的需求,使代码更加简洁和易读。
3. 如何处理几十万条并发数据
使用缓存,访问过的数据不需要二次访问数据库
数据库使用存储过程,尽量分页
使用多线程分批次处理
4. 堆和栈的区别
栈:由编译器自动分配、释放,在函数体中定义的变量通常在栈上
堆:由程序员分配释放,用new、malloc分配内存函数得到的就是在堆上
5. 成员变量和成员函数前加static的作用
它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数,分别用来反映类的状态,
比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作
6. C#可否直接对内存进行操作
可以直接对内存进行操作。但是默认情况下,为了保持类型安全,不支持指针运算
但是可以通过使用unsafe关键字,定义可使用指针的不安全代码
7. Const和ReadOnly?
Const关键字用来声明编译时常量
ReadOnly用来声明运行时常量
8. String和StringBuffer的区别和优缺点
String类表示内容不可改变的字符串
StringBuffer类表示内容可以被修改的字符串
StringBuffer的执行速度要大于String
9.什么是值类型,什么是引用类型?
值类型(value type):byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型。值类型变量声明后,不管是否已经赋值,编译器为其分配内存。
引用类型(reference type):string 和 class统称为引用类型。当声明一个类时,只在栈中分配一小片内存用于容纳一个地址,而此时并没有为其分配堆上的内存空间。当使用 new 创建一个类的实例时,分配堆上的空间,并把堆上空间的地址保存到栈上分配的小片空间中。
10. Redis常见的数据类型:
类型 |
描述 |
字符串(String) |
最基本的类型,可以存储任何形式的字符串,包括二进制数据 |
哈希(Hash) |
键值对集合,适合存储对象 |
列表(List) |
有序的字符串列表,可以从两端插入和删除元素 |
集合(Set) |
无序的字符串集合,元素唯一 |
有序集合(ZSet) |
类似集合,但每个元素关联一个分数,元素按分数排序 |
先到这里吧!