您的位置:首页 > 科技 > 能源 > java 高级面试题汇总 (一)

java 高级面试题汇总 (一)

2024/12/28 1:48:29 来源:https://blog.csdn.net/weixin_49798182/article/details/140848782  浏览:    关键词:java 高级面试题汇总 (一)

互联网是有记忆的,很多有趣的想法都会稍纵即逝,希望我们将其留在互联网上!(以下是面试官和小菜(本人)对话::)

1,面试官

 1,简单介绍下自己,包括熟悉的技术栈,会哪些中间件,讲下最近项目架构情况,或者说遇到问题以及是怎么解决的? (画外音: 这都是常规问题了)

 2,有点面试官会根据你的描述用到的技术提问,比如你聊到你的项目中遇到并发 访问,会用到netty ,

  面试官就会欠欠的打断你, 那我问下,netty 是什么 ,他的实现原理是什么?

3, 面试官问? 用过springcloud alibaba 那 用到了他的哪些组件呢?

  小菜: 用到了,注册中心nacos , 分布式事务seat  , 分布式定时任务scheduleX , 限流器sentinel , ?小菜一慌 说就这些?

面试官追问? 没有到网关么?

小菜: 卧槽这咋能忘了,服务网关gategrory 用到了,(面试官想这是啥水平啊,这都不先说)

4,面试官问了: 那你用到了nacos 说说他是什么模式的,?  他又说了cp  还是  ap ? 

小菜(如果(cp  ap 是啥子)cap  哦哦 !  c 一致性,a   p 分区可用性) 该怎么回答呢?

蒙一个ap 

面试官:嗯,那naocs也是支持cp 的 就是需要配置,

 5, 笔试面试官:手写一个单例:

// 饿汉模式
public class singleton {// 私有构造方法pirvate singleton ();// 私有实例化pivate static final Singleton singleton = new Singleton();// 公有开放一个实例化public static Singleton get(){return single;}
}// 懒汉
public class Singleton {// 私有构造方法pirvate singleton ();// 私有实例化pivate static  Singleton singleton = null;// 公有开放一个实例化public synchronized static Singleton get(){if (single=null ){return new Singleton();}}
}

 面试官追问:或者当你只写出一个饿汉模式 , 他就问了 ,这样有啥问题?

小菜:

总的来说,‌饿汉模式和懒汉模式各有其适用场景和优缺点。‌饿汉模式确保了单例对象的早期可用性并且线程安全,‌适合对性能要求不高但对可靠性有较高要求的场景。‌而懒汉模式则更适合对性能有较高要求的场景,‌因为它延迟了对象的初始化,‌减少了资源的占用,‌但需要额外的同步措施来保证线程安全。‌

 面试官: 手写一个多线程的生产者消费者?

小菜: (这又是难为我,造飞机开始了,接下来他肯定会问多线程问题)

public class HelloWorld {public static void main(String []args) {System.out.println("Hello World");
Data data = new Data();new Thread( ()-> {data.increment();}, "A").start();new Thread( ()-> {data.decrement();}, "B").start();}class Data {private int num = 0;// JUC 生产者 +1public synchronized void increment() {if(num != 0) {this.wait();}num++;System.out.print("a==" + num);this.notifyAll();}// 消费者 -1public synchronized void decrement() {if(num == 0) {this.wait();}num--;System.out.print("b==" + num);this.notifyAll();}}}

 面试官: 手写冒泡吧, 还记得不?

小菜: 心里疯狂xxxxbbbbb, 这项目中会用到,fuck ,不信你会用到,,,于是含泪写下

public static void main(String[] args) {//冒泡排序,简单的演示一下,冒泡循环主要进行每一趟遍历查找最大的值,放在最右边右边int[] arr = {3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48};for (int i = 0; i < arr.length - 1; i++) {//arr.length - 1是因为每一趟,两两对比都不需要与自身对比,所以减去自身for (int j = 0; j < arr.length - 1 - i; j++) {//arr.length - 1 - i,是因为每一趟都会比上一趟减少比较一次if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}//进行打印结果for (int i : arr) {System.out.println(i);}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com