蔚来汽车Java一二面!
8.3号 一面 45min
时间大概50min
1.自我介绍
2.问一些项目中遇到的问题
3.tcp粘包和拆包了解吗
注意:这个问题问的好像比较频繁!!!
4.问有没有做过网络通信相关的
5.tcp三次握手为什么不是两次握手
6.做一个最小栈的题(算法题)
7.优化空间复杂度(优化)
8.线程池了解吗
9.说一下线程池为什么要手写,还有就是固定线程数会出现什么问题
10.线程池的拒绝策略说一下?
11.非稳定排序算法你找一个,并说一下?
12.为什么区分稳定和非稳定
13.举一个稳定的场景吧?
整体还不错,问题都不难,主要是手撕代码,然后优化!
8.10号 二面 50min
项目
1.自我介绍
2.笔试的项目说一下
3.springboot的项目说一下
4.其他医院如何提交数据的?
5.访问的时候如何定位是哪个微服务?
项目问的还是比较细致的,自己简历上的项目一定要多看看,自己想想面试官可能会问哪些问题。
其他
1.https的客户端和服务端的交互过程
2.图的遍历方式
3.静态方法和非静态方法的区别
3.jvm中的类加载过程
4.初始化过程是指什么?
算法题
用数组实现队列,三个函数,分别是添加add(),出队poll()和获取队中的元素个数getSize()
当队的元素满的时候进行二倍的扩容。
面试的时候只写了大体的框架,说了一下思路。
面试结束后,写完测试了一下。
class myqueue {
private int[]date;
//first记录队头位置 size记录队中元素个数 last记录队尾的位置
private int first,size,last;
private int capacity;
//初始化
public myqueue(int capacity){
this.capacity = capacity;
date = new int[capacity];
this.first = 0;
this.size = 0;
this.last = 0;
}
//添加元素
public void add(int x){
//当队列中元素的个数大于容量就进行扩容
if(size>=capacity){
ensureCapacity(2*capacity);
date[last++] = x;
size++;
}// 否则进行插入 操作
else{
//如果最后一个位置等于容量,此时最前面还有多余的位置可以放元素
if(last == capacity){
last = last%capacity;
}
date[last++] = x;
size++;
}
}
//扩容函数
public void ensureCapacity(int newCapacity){
System.out.println("开始扩容");
//保存原来的数组
int []old = date;
//新的容量
date = new int[newCapacity];
capacity = newCapacity;
//旧的数组赋值到新数组
for(int i=0;i<size;i++){
//有可能有些值存在前面的位置里 比如 0 1 2 3 4 此时first为2 last为1
if(first>=size){
first = first%size;
}
date[i] = old[first++];
}
//更想fist和last的位置
first = 0;
last = size;
}
//队头出队
Object poll(){
if(size == 0){
return null;
}else{
int x = date[first];
//更新队头和队中元素个数
first++;
size--;
return x;
}
}
//获取队中的元素个数
int getsize(){
return size;
}
}
//测试用的
public class test1 {
public static void main(String[] args) {
myqueue test = new myqueue(5);
test.add(1);
test.add(2);
test.add(3);
test.add(4);
test.add(5);
Object x = test.poll();
System.out.println(x);
test.add(6);
test.add(7);
System.out.println(test.getsize());
}
}
可能已经无了吧,害,最后问面试官自己是不是无了,面试官说他们有个打分排名,如果在他们招的名额以内还有机会。
查看1道真题和解析