欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

某大厂一言不合扔你一套题,来看看?

程序员文章站 2022-03-03 22:38:56
...

算法和数据结构为必答题目,至少二选一作答,都空白视为自动放弃
【算法和数据结构】

  1. 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);
}
});

  1. 链表如何判断有环?

循环遍历节点,遍历一个便标记一个(把遍历过的节点放到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及工程】

  1. set、list、map区别?

set: 元素无序 不可重复

list: 元素有序 可重复

map:key,value形式的键值对

  1. set、list、map中哪些可以存null?

都可以存null

Hashtable不可以存null

  1. collection和collections的区别?

collection是单列集合的接口

collections是一个集合工具类

  1. java中public,private,protected以及默认关键字的访问范围?

public 可以被其他所有类访问

protected 子类 及同一个包中的类

默认关键字 同一个包中的类

private 本类可以访问

  1. JVM分为哪些区,每一个区是干嘛的?

虚拟机栈

线程执行方法都会创建一个栈帧 , 用来存储局部变量 , 操作栈 , 动态链接 ,方法出口等信息 ,
调用方法时执行入栈 , 方法返回式执行出栈

JVM内存管理最大的一块 ,对被线程共享 ,目的是存放对象的实例 ,几乎所有的对象实例都会放在这里 ,
当堆没有可用空间时 ,会抛出OOM异常, 根据对象的存活周期不同 ,JVM吧对象进行分代管理 ,
由垃圾回收器进行垃圾的回收管理

方法区

又称非堆区 ,用于存储已被虚拟机加载的类信息 ,常量 ,静态变量 ,即使编译器优化后的代码等数据 ,
1.7的永久代和1.8的元空间都是方法区的一种实现

程序计数器

保存着当前线程执行的字节码位置 ,每个线程工作时都有独立的计数器 ,只为执行java方法服务 ,
执行native方法时,程序计数器为空

本地方法栈

与栈类似 ,也是用来储存执行方法的信息 , 执行java方法是使用栈 ,执行native方法时使用本地方法栈

  1. 进程和线程的区别?

一个进程可以包含多个线程(至少有一个线程)

进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。
线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,

  1. java实现线程的方式都有哪些?

实现Runnable Callable,继承Thread

  1. 进程之间通信方式有哪些?

管道 FIFO(命名管道) 消息队列 信号量 共享内存

  1. 如何看一个java服务的进程号

ps -ef | grep java

相关标签: 面试 面试题