字节一面凉经

1.自我介绍

2.拷打项目,直接被拷打成杀软了

3.知道百度云盘是怎么高可用的吗,如果让你做一个高可用的话,假设你有很多个服务器,怎么保证存储文件的高可用性,包括避免一些磁盘容易损坏的情况。

4.分布式的文件系统有了解过吗,分布式的一种逻辑性,看到你是人工智能专业的,人工智能专业这些大数据处理的时候,比如你提交一些Spark的一些任务。他跑一些大数据的任务的时候,会有一些平台,比如HDFS有了解过吗,他是怎么做的。

5.饿了么(没听清说的是什么,好像是这个)存储系统就是一个分布式架构的一个分析系统,他是怎么来做这个高可用的。

6.幂等性

7.哪里使用到了RabbitMQ,用来干嘛

(回答了分片上传后产生消息)

那这种步骤不应该是同步的吗?上传成功失败不应该是上传的接口同步范围吗,你这个消息异步了以后,用户怎么来收到这个上传失败的消息呢,因为用户在前端上传文件,这个上传失败应该是同步返回给我的,你这个怎么保证的,为什么做成异步的方式。

8.RabbitMQ的基本架构了解吗,比如投递一个消息,经过怎么样一个流程,比如一个是producer,一个consumer,投递一个消息,整条链路是怎么样的,比如说他把消息调节到哪里去了,经过怎么样的路径,最后消费者怎么消费。

9.MySQL索引的数据结构

10.B+树是怎么来做这个索引的,简单描述一下,比如一个表我创建一个索引,插入一个数据的时候索引是怎么构建的,详细说一下。

11.看你学过数据结构,B+树是属于什么样子的树。(答:平衡),哈哈哈他是怎么来做平衡的,你们数据结构里有一些树比如avl树,是怎么平衡的,详细说说。

12.HashMap查询的时候这个时间复杂度是多少,什么情况下不是O(1),哈希冲突的解决方法。

13.你这些项目用的是jdk哪个版本,jdk各个版本有什么更新或者区别有了解过吗。

14.反问。

全部评论
拷打项目是怎么个拷打法的
点赞 回复 分享
发布于 04-24 12:11 广东

相关推荐

04-27 16:50
已编辑
门头沟学院 Java
1. mysql删除表语句是什么?drop和truncate区别?2. 删除一行数据的sql3. 查询一张表所有的数据的sql4. 查询一张表有多少条数据sql。  count(1)和count(*)区别5. i++和++i区别6. 介绍下重载和重写。  构造方法可以重写重载吗?7. arraylist和linkedlist的区别8.解释一下深拷贝和浅拷贝9. 如果有三个线程,我如何能保证顺序执行.方法1: 使用join()join() 方法可以确保一个线程在另一个线程执行完毕后才开始执行。通过合理地调用 join(),可以实现线程的顺序执行。方法2:使用countdownlatch/semaphore方法3: 使用锁和原子类,wait() + notifyAll()方法4: 使用completablefuture10. 如果有一个 T1 线程,想把 T2 线程加到 T1 里面,怎么实现?方法1. 使用join()Thread t2 = new Thread(() -> {    // T2 线程的执行逻辑    System.out.println("T2 线程正在执行");});Thread t1 = new Thread(() -> {    try {        System.out.println("T1 线程开始执行");                // T1 线程在此处等待 T2 线程执行完成        t2.start();  // 启动 T2 线程        t2.join();    // T1 等待 T2 完成                System.out.println("T2 线程已完成,T1 继续执行");    } catch (InterruptedException e) {        e.printStackTrace();    }});t1.start();方法2. 使用future.get()ExecutorService executor = Executors.newSingleThreadExecutor();Future future = executor.submit(() -> {    // T2 线程的执行逻辑    System.out.println("T2 线程正在执行");});Thread t1 = new Thread(() -> {    try {        System.out.println("T1 线程开始执行");                // T1 线程在此处等待 T2 线程执行完成        future.get();  // 阻塞直到 T2 完成                System.out.println("T2 线程已完成,T1 继续执行");    } catch (InterruptedException | ExecutionException e) {        e.printStackTrace();    } finally {        executor.shutdown();    }});t1.start();方法3. 使用countdownlatchCountDownLatch latch = new CountDownLatch(1);Thread t2 = new Thread(() -> {    try {        System.out.println("T2 线程正在执行");    } finally {        latch.countDown();  // 完成时减少计数    }});Thread t1 = new Thread(() -> {    try {        System.out.println("T1 线程开始执行");                t2.start();  // 启动 T2 线程        latch.await();  // 等待 T2 完成                System.out.println("T2 线程已完成,T1 继续执行");    } catch (InterruptedException e) {        e.printStackTrace();    }});t1.start();11. a=a+b 和 a+=b的区别a = a + b,如果 a 和 b 的类型不同(如 a 是 int,b 是 double),需要显式强制类型转换,否则会编译报错。即:double a= 1;int b = 2;a = (double) (a+b); a += b,会自动执行隐式类型转换,将结果转换为 a 的类型。13. 数据库的三大范式如答案有错误欢迎指正
查看24道真题和解析
点赞 评论 收藏
分享
评论
3
10
分享

创作者周榜

更多
牛客网
牛客企业服务