某大厂一言不合扔你一套题,来看看?
算法和数据结构为必答题目,至少二选一作答,都空白视为自动放弃
【算法和数据结构】
- 1000个1-100的正整数(会有重复),如何进行排序
int num = 1000;
List list = new ArrayList<>();
while (num-- > 0) {
list.add(new Random().nextInt(100));
}
Collections.sort(list, new Comparator() {
@Override
public int compare(Integer o1, Integer o2) {
return o1.compareTo(o2);
}
});
- 链表如何判断有环?
循环遍历节点,遍历一个便标记一个(把遍历过的节点放到set),遍历过程判断是否被标记,若已被标记则表示有环
Class ListNode{
private int val;
private ListNode next;
public ListNode(int val) {
this.val = val;
this.next = null;
}
}
public class Solution {
public boolean hasCycle(ListNode head) {
Set<ListNode> set = new HashSet<>();
while(head!=null) {
if(set.contains(head)) {
return true;
}else {
set.add(head);
head = head.next;
}
}
return false;
}
}
【Java及工程】
- set、list、map区别?
set: 元素无序 不可重复
list: 元素有序 可重复
map:key,value形式的键值对
- set、list、map中哪些可以存null?
都可以存null
Hashtable不可以存null
- collection和collections的区别?
collection是单列集合的接口
collections是一个集合工具类
- java中public,private,protected以及默认关键字的访问范围?
public 可以被其他所有类访问
protected 子类 及同一个包中的类
默认关键字 同一个包中的类
private 本类可以访问
- JVM分为哪些区,每一个区是干嘛的?
虚拟机栈
线程执行方法都会创建一个栈帧 , 用来存储局部变量 , 操作栈 , 动态链接 ,方法出口等信息 ,
调用方法时执行入栈 , 方法返回式执行出栈
堆
JVM内存管理最大的一块 ,对被线程共享 ,目的是存放对象的实例 ,几乎所有的对象实例都会放在这里 ,
当堆没有可用空间时 ,会抛出OOM异常, 根据对象的存活周期不同 ,JVM吧对象进行分代管理 ,
由垃圾回收器进行垃圾的回收管理
方法区
又称非堆区 ,用于存储已被虚拟机加载的类信息 ,常量 ,静态变量 ,即使编译器优化后的代码等数据 ,
1.7的永久代和1.8的元空间都是方法区的一种实现
程序计数器
保存着当前线程执行的字节码位置 ,每个线程工作时都有独立的计数器 ,只为执行java方法服务 ,
执行native方法时,程序计数器为空
本地方法栈
与栈类似 ,也是用来储存执行方法的信息 , 执行java方法是使用栈 ,执行native方法时使用本地方法栈
- 进程和线程的区别?
一个进程可以包含多个线程(至少有一个线程)
进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。
线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,
- java实现线程的方式都有哪些?
实现Runnable Callable,继承Thread
- 进程之间通信方式有哪些?
管道 FIFO(命名管道) 消息队列 信号量 共享内存
- 如何看一个java服务的进程号
ps -ef | grep java
上一篇: 面试题__贩卖机只支持硬币支付,且收退......(买饮料)
下一篇: 2016上海某公司面试题_0
推荐阅读