很糟心的一场面试,从去到面整个过程非常不顺,确实问到了很多不会的,还是总结下:
1.如何实现数据库优化
减少访问次数:如建立索引(常见索引有哪些,实现方式,B树和B+树的优缺点)
https://www.cnblogs.com/barrywxx/p/4351901.html
https://www.cnblogs.com/easypass/archive/2010/12/08/1900127.html
https://blog.youkuaiyun.com/mine_song/article/details/63251546
减少返回的数据:尽可能少用select *,只返回需要的字段
较少网络传输/交互次数
减少服务器cpu开销
使用存储过程,批处理
2.线程安全的几种方式,从操作系统的角度说
https://blog.youkuaiyun.com/luoweifu/article/details/46595285
3.C#和Java有什么不同
https://blog.youkuaiyun.com/benxiaohai888/article/details/70225476
4.tcp几种通信模型
https://blog.youkuaiyun.com/u012501459/article/details/48178065
5.红黑树和哈希表的区别,平衡二叉树呢,分别适用于哪种场景
堆的用途不在于排序,而是主要用在调度算法中。比如优先级调度,或是时间驱动,用于选择具有最高优先级或是等待时间最长的候选条目。
如果输入结合确定,所需要的就是查询,则可以考虑使用哈希表;
如果输入集合不确定,则考虑使用平衡二叉树/红黑树,保证达到最大效率。
https://blog.youkuaiyun.com/wolflock/article/details/1900883
6.操作系统的几种多线程?
7.最快最稳定的排序算法,复杂度?
https://blog.youkuaiyun.com/yushiyi6453/article/details/76407640
8.Dicionary和Hashtable的区别,哪一个更好,为啥?
1:单线程程序中推荐使用 Dictionary, 有泛型优势, 且读取速度较快, 容量利用更充分.
2:多线程程序中推荐使用 Hashtable, 默认的 Hashtable 允许单线程写入, 多线程读取, 对 Hashtable 进一步调用 Synchronized() 方法可以获得完全线程安全的类型. 而 Dictionary 非线程安全, 必须人为使用
lock
语句进行保护, 效率大减.
3:Dictionary 有按插入顺序排列数据的特性 (注: 但当调用 Remove() 删除过节点后顺序被打乱), 因此在需要体现顺序的情境中使用 Dictionary 能获得一定方便.
4:对于值类型,特定类型(不包括 Object)的 Dictionary<(Of <(TKey, TValue>)>) 的性能优于 Hashtable,这是因为 Hashtable 的元素属于 Object 类型,所以在存储或检索值类型时通常发生装箱和取消装箱操作。
9.什么是存储过程?
预先编译好的脚本
https://blog.youkuaiyun.com/qq_41786318/article/details/79559986
10.i++是线程安全的吗?为什么
不一定,如果是局部变量则安全,否则可能不安全
https://blog.youkuaiyun.com/qq_35383263/article/details/65449102
11.数据库事务
https://blog.youkuaiyun.com/csdnxingyuntian/article/details/57081233
12.介绍下设计模式