白板编程
面经
qxlxi
21届本,后端工程师 (专注于Java、Go、数据库、缓存、消息队列、网络、OS、算法、软件设计、DevOps、云原生、大数据、分布式系统架构设计等)
展开
-
【面经】场景题
1.现在有一个场景,系统需要访问百度、有道、谷歌三个翻译系统,如何及时获取到响应时间最短的结果。 第一种方式直接使用Java8提供的completbaleFuture,同时对三个接口发起异步访问,然后将三个结果的future合并成一个大的future,只要一个future获取到结果,整体结束阻塞。 第二种方案,使用jdk5线程池提交的是哪个callable,返回三个future,然后对是三个future进行轮询操作,询问是否,如果有一个future返回即可。如果轮询不好,使用complationServic原创 2022-12-29 21:44:28 · 512 阅读 · 0 评论 -
【白板编程】手写LRU
1.架构图 2.code实现 package com.ncst.base; import java.util.Hashtable; /** * @author i * @create 2020/8/8 15:05 * @Description */ public class LRUCache { private class Node{ int val; int key; Node pre; Node next;原创 2020-08-08 19:00:45 · 406 阅读 · 0 评论 -
【白板编程】三个线程顺序打印ABC
建立三个线程A、B、C,A线程打印10次字母A,B线程打印10次字母B,C线程打印10次字母C,但是要求三个线程同时运行,并且实现交替打印,即按照ABCABCABC的顺序打印。 考察多线程类的实际应用 思路 选择使用ReentrantLock 维护一个公有变量,每次打印的时候使用一个Lock锁住,打印完成之后解锁。 package com.ncst.collections; import java.util.concurrent.locks.Lock; import java.util.concurr.原创 2020-07-11 16:41:17 · 718 阅读 · 0 评论 -
【白板编程】实现一个生产者消费者模型-wait-notify实现
package com.ncst.collections; import java.util.LinkedList; import java.util.Random; /** * @author i * @create 2020/7/11 15:57 * @Description * 1.为什么要使用while进行判断 * 2.wait/notify为什么要配合syn使用 * 第一点 我们需要明确,那就是执行wait方法会释放锁,所以在syn代码块中,说明当前执行的线程已经获取了锁原创 2020-07-11 16:25:33 · 377 阅读 · 1 评论