五八 领岳科技面经 2024.06.06

2024-06-07 07:20

本文主要是介绍五八 领岳科技面经 2024.06.06,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

五八面经

1、多线程打印有多少种实现方式?

2、ReentrantLock中的公平锁是怎么实现的?

3、Redis用在什么场景下?分布式锁怎么设置?如何解锁?如果想要续锁应该怎么做?

4、redis单线程怎么支持10w qps的并发?

5、mysql读写怎么实现的优化?答分库分表

6、怎么实现接口的幂等性?

7、G1垃圾收集器和CMS有什么区别?如果内存空间特别大的情况下,用哪种垃圾收集器比较好?

8、线上CPU飙升问题如何排查?

9、kafka有用过吗?什么场景下用到?如果想要消息被下游全部接收到,有什么方法?

这道题没有回答好,给出标准答案:

复制机制
Kafka使用了分区和副本的概念。每个分区可以有多个副本,分布在不同的Broker上。
当消息写入到一个分区时,它会被复制到该分区的所有副本上。这样,即使某个Broker发生故障,仍然可以从其他副本中读取数据,确保数据的可靠性。
ISR(In-Sync Replicas)机制
ISR是指与Leader副本保持同步的副本集合。
Kafka确保只有ISR中的副本才能成为Leader,这确保了Leader副本在消息写入后会等待ISR中的其他副本都完成同步,从而保证了消息的可靠性。
消息确认机制
生产者发送消息时可以选择等待相应的确认(通过配置acks参数)。例如,配置acks=all表示Partition Leader接收到消息之后,还必须要求ISR列表里跟Leader保持同步的那些Follower都要把消息同步过去,才能认为这条消息是写入成功了。
消费者在成功消费一条消息后,会发送消息确认机制,将消息标记为已消费。
消费者重试
如果消息消费失败,消费者可以实现重试策略,尝试重新消费失败的消息,直到成功为止。
手动提交Offset
Kafka消费者默认可能采用自动提交Offset的策略,这可能会导致在消息真正被业务逻辑消费完成之前,Offset已经被提交,进而造成消息丢失。
为了确保消息被全部消费,建议关闭自动提交Offset,并在自己处理完毕之后手动提交Offset。
幂等性处理
在某些情况下,即使消息被成功消费并提交了Offset,但由于某些原因(如进程崩溃)可能导致数据没有真正保存到目标系统。此时,如果消息被重新消费,可能会导致数据重复。因此,可以通过幂等性处理来确保数据只被保存一次。
分布式事务
在需要跨多个系统或服务保证数据一致性的场景中,可以使用分布式事务来确保消息被全部接收并消费。这通常涉及到使用支持分布式事务的数据库或中间件。

领岳科技

1、遇到过线上问题吗?如何解决的?

2、项目经历简述

3、算法题:
现有一个内部只有若干“1”、“-1”,“0”的int数组,要求在原数组上进行操作,使所有的“1”均在数组的左面,所有的“0”均在数组的右面

实现

public void reorderArray(int[] arr) {  int low = 0;  int mid = 0;  int high = arr.length - 1;  while (mid <= high) {  if (arr[mid] == 1) {  // Swap arr[mid] with arr[low]  int temp = arr[low];  arr[low] = arr[mid];  arr[mid] = temp;  low++;  mid++;  } else if (arr[mid] == 0) {  // Only move mid pointer  swap(arr, mid, high);  high--;  } else {  // Skip -1 or other non-1 non-0 values  mid++;  }  }  
}  // Helper function to swap two elements in the array  
private void swap(int[] arr, int i, int j) {  int temp = arr[i];  arr[i] = arr[j];  arr[j] = temp;  
}

问:为什么右指针不能和mid一起移动?为什么左指针可以和t一起移动?这个问题没有回答好

右指针不能移动的反例

1,-1,1,-1,0,1,-1,0,1

如果右指针和mid同时移动,当指向第一个0和第二个0的指针交换完毕,就会扫过0和0继续走到1和-1,这样会漏解,不符合题目的要求

为什么左指针可以和t一起移动?面试官说因为low只能指向-1,所有1在mid扫过的部分都已经放在left了,一旦放在left,left就可以向前走;但是0放在右边的话,0不能向左走,因为可能0的前面还有1

这篇关于五八 领岳科技面经 2024.06.06的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1038509

相关文章

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展

【科技明说 | 科技热点关注】 2024戴尔科技峰会在8月如期举行,虽然因事未能抵达现场参加,我只是观看了网上在线直播,也未能采访到DTF现场重要与会者,但是通过数十年对戴尔的跟踪与观察,我觉得2024戴尔科技峰会给业界传递了6大重要信号。不妨简单聊聊:从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展? 1)退出中国的谣言不攻自破。 之前有不良媒体宣扬戴尔将退出中国的谣言,随着2

前端-06-eslint9大变样后,如何生成旧版本的.eslintrc.cjs配置文件

目录 问题解决办法 问题 最近在写一个vue3+ts的项目,看了尚硅谷的视频,到了配置eslintrc.cjs的时候我犯了难,因为eslint从9.0之后重大更新,跟以前完全不一样,但是我还是想用和老师一样的eslintrc.cjs文件,该怎么做呢? 视频链接:尚硅谷Vue项目实战硅谷甄选,vue3项目+TypeScript前端项目一套通关 解决办法 首先 eslint 要

C++入门(06)安装QT并快速测试体验一个简单的C++GUI项目

文章目录 1. 清华镜像源下载2. 安装3. 开始菜单上的 QT 工具4. 打开 Qt Creator5. 简单的 GUI C++ 项目5.1 打开 Qt Creator 并创建新项目5.2 设计界面5.3 添加按钮的点击事件5.4 编译并运行项目 6. 信号和槽(Signals and Slots) 这里用到了C++类与对象的很多概念 1. 清华镜像源下载 https://

在亚马逊云科技上利用Graviton4代芯片构建高性能Java应用(上篇)

简介 在AI迅猛发展的时代,芯片算力对于模型性能起到了至关重要的作用。一款能够同时兼具高性能和低成本的芯片,能够帮助开发者快速构建性能稳定的生成式AI应用,同时降低开发成本。今天小李哥将介绍亚马逊推出的4代高性能计算处理器Gravition,带大家了解如何利用Graviton芯片为Java生成式AI应用提高性能、优化成本。 本篇文章将介绍如何在云平台上创建Graviton芯片服务器,并在Gra

F12抓包06-4:导出metersphere脚本

metersphere是一站式的开源持续测试平台,我们可以将浏览器请求导出为HAR文件,导入到metersphere,生成接口测试。 metersphere有2种导入入口(方式),导入结果不同:         1.导入到“接口定义”:自动生成接口API和单接口case(接口自动去重;每个请求生成不同case,重复的请求生成重复的case,名称自动加数字后缀,自动与接口关联)。

【Unity面经】实习篇:面试官常问的一百个面试题

👨‍💻个人主页:@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 专栏交流🧧🟥Unity100个实战基础✨🎁🟦 Unity100个精华一记✨🎁🟩 Unity50个demo案例教程✨🎁🟨 Unity100个精华细节BUG✨🎁🟨 Unity100个面试题✨🎁 文章

PHP面经

CORS(cross origion resource sharing)跨域资源共享,可以允许跨站请求资源。客户端需要用特定的方法去请求资源(如xmlhttprequest)同时需要带上特定的报文头信息,服务端也要支持跨域的资源请求 memcache和redis的异同点 memcache可以利用多线程,吞吐量高,适合大访问量memcache只支持简单的key/value结构memcache无法

本周(9 月 2 日 - 9 月 7 日)科技新闻

2024 Inclusion・外滩大会聚焦 AI 发展1: 各界大咖探讨了 AI 的智能进步规律、对产业的影响、与人类的关系等问题。比如 “互联网之父” 凯文・凯利认为现在的人工智能擅长回答已知问题,但不擅长提出新问题,未来人工智能能否进行复杂的多步思维链、回答未知问题是重要探索方向。对于 AGI 是否存在泡沫,百川智能创始人、CEO 王小川否认了这一说法,认为大模型发展符合预期,关键在于实现知识

java基础总结06-面向对象2

1 JAVA类的定义 JAVA里面有class关键字定义一个类,后面加上自定义的类名即可。如这里定义的person类,使用class person定义了一个person类,然后在person这个类的类体里面定义person这个类应该具有的成员变量(即属性)和方法,如这里定义的int id和int age这个两个成员变量,或者叫属性,这个id表示人的身份证号码,人应该具有这个属性,age表示人