一、设计模式
1、进程请求资源死锁,如何在编程上防止死锁?
2、手写singleton。如何避免多线程同步问题?
3、实现一个singleton的基类,令其派生类都是singleton?( 利用template )
4、常用设计模式,UML图
5、知道的设计模式有哪些,区别
6、手写观察者模式(语言任意选)
7、(1)手写生产者消费者模式
(2)生产者模式和消费者模式怎么实现
8 、JDK中哪些体现了命令模式?线程池使用了什么设计模式
9、 servlet是单例么?
10、.单例模式:
(1)单例模式 double check
(2)单例模式(选取你认为最好的版本,我选择了内部类写法)
(3)写一个单例模式。我写的是静态内部类的单例,然后他问我这个地方为什么用private,这儿为啥用static,这就考察你的基本功啦
(4)单例模式都有什么,都是否线程安全,怎么改进(从synchronized 到 双重检验锁 到 枚举 Enum)
11、说一下知道的设计模式,生产者消费者模式如何实现?
12、 高内聚,低耦合方面的理解
13、常用的设计模式,用一个设计模式写一段代码或画出一个设计模式的UML
14、 设计模式:单例、工厂、适配器、责任链、观察者等等。
15、设计模式的六大原则
二、数据库
1、数据库索引;数据库索引的实现方式
2、项目中有没有用到数据库?对数据库了解多少?
3、谈一谈数据库的3个范式
sql一二三范式
4、有没有用到其他的开源数据库
5、数据库了解么?事物的四个原则?索引是如何事项的。
6、聚簇索引 和 非聚簇索引的区别 。下面贴一下核心内容:
建立索引: 在SQL语言中,建立聚簇索引使用CREATE INDEX语句,格式为:CREATE CLUSTER INDEX index_name ON table_name(column_name1,column_name2,...);
存储特点:
聚集索引:表数据按照索引的顺序来存储的,也就是说索引项的顺序与表中记录的物理顺序一致。对于聚集索引,叶子结点即存储了真实的数据 行,不再有另外单独的数据页。 在一张表上最多只能创建一个聚集索引,因为真实数据的物理顺序只能有一种。
非聚集索引 : 表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索引字段值及指向数据页数据行的逻辑指针,其行数量与数据表行数据量一致。
7、谈一谈对数据库事务的理解。四个特性和隔离级别必须要牢记,了解事务并发控制带来的问题:脏读、不可重复读、丢失修改、幻读等等
8、mysql 熟悉吗?知道间隙锁吗? .
9、数据库事务的四个隔离级别,MySql在哪一个级别
10、数据库的acid: 原子性、一致性、隔离性、永久性
11、给你一个表只有一列name~~有重复的name, 然后求出前十个name数最大的:select name,count(name) from table group by count(name) desc limit 10
12、抛出一个场景问你选用NoSQL还是关系数据库(就是点阵图片的存储,(x,y,z)存储)
13、数据库的索引有什么用,带来的问题是什么
14、(1)数据库事务隔离级别
(2)数据库连接池的原理
(3)乐观锁和悲观锁
(4)如何实现不同数据库的数据查询分页
(5)SQL注入的原理,如何预防
(6)数据库索引的实现(B+树介绍、和B树、R树区别)
(7)SQL性能优化
(8)数据库索引的优缺点以及什么时候数据库索引失效
(9)Redis的存储结构
15、数据库的事务管理级别,默认什么级别,会出现哪些问题
四个级别,默认我说是读已提交,但是其实MYSQL的默认应该是可重复读,这个我也是回来才发现的。然后就说了默认读已提交会出现不可重复读和幻读。
16、数据库事物,什么是事物,什么情况下会用到事物,举例说明
17、InnodB,MyISAM区别
18、索引类型(全文索引),底层实现(B+树),什么情况下索引会失效。
19、数据库从左到右原则。