您的位置:首页 > 职场人生

一些面试java

2017-02-25 16:43 225 查看
最近一直在找工作京东 阿里这些都去过好几次的,但是结果都是一样。所以,还是自己能力不行吧,虽然自己觉得答的不那么差。在这里做一个总结吧,我想随着我面试失败次数的增加,文章内容也会不断修改,大公司一般问的干货比较多,话不多说.

1. java自动装箱和拆箱

java将基本数据类型自动转成相对应的对象(int->Integer)叫自动装箱,反之(Integer->int)叫自动拆箱。因为装拆箱动作是JVM完成的,所以是自动。

List<Integer> list =new ArrayList();
list.add(1);//自动装箱称Integer
int val = list.get(0);//自动拆箱
Integer o =2;//自动装箱称Integer
int o2 = o;//自动拆箱

其弊端是在循环过程中容易创建多个Integer对象

Integer i;
for(int j=0;j<100;j++){
j+=1;
}
2. HashMap ,HashTable,ConcurrentHashMap(这几个自己看去)

3. ArrayList 的Fail-Fast机制

Fail-Fast 快速失败的意思。主要是针对多线程情况下对ArrayList的一种错误检测机制。例如:正在迭代ArrayList,同时又在对ArrayList进行操作(add,remove),那么程序就会抛出ConcurrentModificationException。

List<String> l = new ArrayList();
l.add("a");
l.add("b");
l.add("c");
for(String str:l){
System.out.println(str);
l.add("d");
}解决办法:使用CopyOnWriteArrayList替代,原理:CopyOnWriteArrayList在进行iterator()的时候COWIterator会将ArrayList的数据进行备份。
4. 说一说Executor,Executors,ExescutorService,AbstractExecutorService,ThreadPoolExecutor

ThreadPoolExecutor继承AbstractExecutorService实现ExecutorService继承Executor

Executors用来创建ExescutorService实例

Executor声明void execute()方法。

ExecutorService基于Executor声明了其他方法Future submit()

AbstractExecutorService实现了submit()

ThreadPoolExecutor实现了execute()

5. 异步编程(Future)

同步编程

package com.zhuyang.redeem;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Test {

public static void main(String[] args) throws Exception {
long start = System.currentTimeMillis();
Test t = new Test();
List<Integer> count = new ArrayList();
count.add(t.getNumber());
count.add(t.getNumber());
count.add(t.getNumber());
count.add(t.getNumber());
// 运行4次
int total = 0;
for (int i = 0; i < count.size(); i++) {
total += count.get(i);
}
long end = System.currentTimeMillis();
System.out.println("运算结束 耗时:" + (end - start) + "ms totle:" + total);
System.out.println("退出main线程!");
}

public int getNumber() throws Exception {
Thread.sleep(1000);// 等一秒
return new Random().nextInt(100);

}
}

异步编程
package com.zhuyang.redeem;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;

public class Test {

public static void main(String[] args) throws Exception {
new Test().exec();
}

private void exec() throws InterruptedException, ExecutionException {
long start = System.currentTimeMillis();
List<FutureTask<Integer>> futureTasks = new ArrayList();
ExecutorService executorService = Executors.newFixedThreadPool(10);
Callable<Integer> worker = new Callable<Integer>() {
public Integer call() throws Exception {
Integer res = new Random().nextInt(100);
Thread.sleep(1000);
System.out.println("任务执行:获取到结果 :"+res);
return res;
}
};
for (int i = 0; i < 4; i++) {
// 创建一个异步任务
FutureTask<Integer> futureTask = new FutureTask<Integer>(worker);
futureTasks.add(futureTask);
// 提交异步任务到线程池,让线程池管理任务 特爽把。
// 由于是异步并行任务,所以这里并不会阻塞
executorService.submit(futureTask);
}
int count = 0;
for (FutureTask<Integer> futureTask : futureTasks) {
// futureTask.get() 得到我们想要的结果
// 该方法有一个重载get(long timeout, TimeUnit unit) 第一个参数为最大等待时间,第二个为时间的单位
count += futureTask.get();
}
long end = System.currentTimeMillis();
System.out.println("线程池的任务全部完成:结果为:" + count + ",main线程关闭,进行线程的清理");
System.out.println("使用时间:" + (end - start) + "ms");
// 清理线程池
executorService.shutdown();
}

}


6. Synchronized和ReentrantLock
都可以用于同步,都是重入锁(递归锁,在持有锁的情况下可继续获得自身的锁,不需要等待锁,否则容易造成死锁)。ReentrantLock使用更灵活,必须在finally调用unlock();

7. java CAS
8. volatile关键字
9. 序列化和反序列化
10. 对称加密和非对称加密
11. Dubbo的大概流程,注册需要哪些信息
12.zookeeper分布式环境选主
13. spring ioc
BeanFactory-->XMLReader-->BeanDefinition-->newInstance-->setProperty
14. Spring bean默认是单利还是多利
单利(我特么居然说是单利,傻逼)
15. 说一说单利怎么写
枚举类,双重检查
16. jvm GC算法
标记清除, 复制整理,标记整理,分代收集
17. JMM java内存模型
这个牵涉太多,想到哪儿说哪儿
18. mysql索引
算法B+树能迅速找到数据所在地址。最左匹配原则。
19 mysql常用引擎
InnoDB和MySam  InnoDB支持事务处理
20. Redis事务
CAS(乐观锁)。 watch multi exec.
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: