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) 回帖