10月12日良品铺子:
集合中哪些线程是安全的,哪些线程是不安全的?
ArrayList和LinkList线程不安全,vector线程安全。
vector怎么实现线程安全:
Vertor类的大多数关键方法都是用了synchronized关键字,因此性能较差。
怎么优化Mysql的读取,你有哪些方法:
1.建立索引
2.建立视图
3.sql语句的优化
sql语句的优化包括哪些内容?
where:使用null判断,使用!=的操作会使索引失效
like: '%t' 这样以%开始的会使索引失效
exists替代in:not in是最低效的,因为要对子查询的表进行全表扫描。可以考虑使用外链接或not exists。如下:
-- 正确
SELECT *
FROM EMP
WHERE
EMPNO > 0
AND EXISTS (SELECT ‘X' FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ‘MELB')
-- 错误
SELECT *
FROM EMP
WHERE EMPNO > 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ‘MELB')
union代替or:在索引列上,可以使用union替换or操作。索引列上的or操作会造成全表扫描。
-- 高效:
SELECT LOC_ID , LOC_DESC , REGION FROM LOCATION WHERE LOC_ID = 10
UNION
SELECT LOC_ID , LOC_DESC , REGION FROM LOCATION WHERE REGION = 'MELBOURNE'
-- 低效:
SELECT LOC_ID ,LOC_DESC ,REGION FROM LOCATION WHERE LOC_ID=10 OR REGION ='MELBOURNE'
连续的数值使用between不用in
怎么找出慢sql:
通过慢查询日志
https://www.cnblogs.com/xzpp/archive/2012/07/18/2598136.html
怎么知道一个sql走不走索引:
在select语句前面加上explain关键字,查看关键字type
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
一般来说,得保证查询至少达到range级别,最好能达到ref,否则就可能会出现性能问题。
线程池创建的合适大小:
最佳线程数目 = ((线程等待时间+线程CPU时间)/线程CPU时间 )* CPU数目
我不知道为什么问我这个问题,有点懵逼
100个线程请求线程池(大小为10),怎么分配:
项目中遇到的最大的问题,怎么解决的:
技术层面的都不是大问题,最大的问题是沟通
10月14日北京同创永益:
最糟糕的一次面视,面视基础比较多,但是平时都没注意,觉得没戏了,自己就没面了。
Java基本数据类型:
byte,short,int,long,float,double,boolean,char
抽象类和接口有什么区别:
抽象类被继承,接口被实现;结构只能够声明方法,不能够实现,而抽象类可以声明方法,也可以实现方法;
抽象类可以拥有变量,接口只能拥有常量;抽象类可以构造方法,接口不可以;一个类可以实现多个接口,但是只能继承一个类
设计模式:
创建对象有几种方式:
1.用new语句创建bai对象,这是最du常用的创建对象的方式。
2.运用反射手段,调用Java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
3.调用对象的clone()方法。
4.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法。
数据库索引有哪几类?
存储过程怎么创建?