首页 > 其他分享 >货拉拉面试:全程八股!被问麻了

货拉拉面试:全程八股!被问麻了

时间:2023-10-13 16:22:05浏览次数:32  
标签:八股 可用性 CAP 技术 拉拉 问麻 分布式系统 一致性 限流

今天来看货拉拉 Java 技术岗的面试问题,废话不多说,先看问题。

一面问题

  1. 先让介绍项目,超卖问题项目是怎么实现的?有什么改进的想法?
  2. 线程池的核心参数?
  3. 在秒杀的过程中,比如只有 10 个名额,有 100 个人去抢,页面上需要做一些什么处理?
  4. HashSet 了解吗?
  5. HashMap 了解吗?从 0 个 put 20 个数据进去,整个过程是怎么样的?HashMap 扩容机制?是 put 12 个数据之前扩容还是之后扩容?什么时候装红黑树?为什么是 8 的时候转,为什么是 6 的时候退化回链表?
  6. ConcurrenHashMap 了解吗?用到哪些锁?
  7. CAS 原理了解吗?
  8. synchronized 有多少种锁?锁升级。
  9. MySQL 有哪些锁?
  10. 一条 SQL 执行的全流程?
  11. 地址输入 URL 到数据返回页面,整个流程?
  12. 域名服务器寻址?

二面问题

  1. 问了一下项目的锁,问怎么优化?
  2. 怎么进行项目部署的?
  3. 之前搭过最复杂的项目是什么?
  4. 你感觉这种架构有什么好处?为什么要进行微服务拆分?
  5. Nacos 用过吗?
  6. CAP 理论?Base 理论?
  7. MQ 用过吗?
  8. 有什么技术优势?

1.怎么解决超卖问题?

答:超卖问题是一个相对来说,比较经典且相对难处理的问题,解决它可以考虑从以下三方面入手:

  1. 前端初步限制:前端先做最基础的限制处理,只允许用户在一定时间内发送一次抢购请求。
  2. 后端限流:前端的限制只能针对部分普通用户,如果有恶意刷单程序,那么依靠前端是解决不了任何问题的,所以此时就需要后端做限流操作了,而后端的限流又分为以下手段:
    1. IP 限流:限制一个 IP 在一定时间内,只能发送一个请求。此技术实现要点:通过在 Spring Cloud Gateway 中编写自定义全局过滤器来实现 IP 限流。
    2. 接口限流:某个接口每秒只接受一定数量的请求。此技术实现要点:通过 Sentinel 的限流功能来实现。
  3. 排队处理:即时做了以上两步操作,仍然不能防止超卖问题的发生,此时需要使用分布式锁排队处理请求,才能真正的防止超卖问题的发生。此技术实现要点:
    1. 方案一:使用 Lua 脚本 + Redis 实现分布式锁。
    2. 方案二:使用 Redisson 实现分布式锁。

PS:关于这些技术实现细节,例如:Spring Cloud Gateway 全局自定义过滤器的实现、Sentinel 限流功能的实现、分布式锁 Redisson 的实现等,面试训练营有讲解,需要的私信我。

2.CAP 理论和 Base 理论?

CAP 理论

CAP 理论是分布式系统设计中的一个基本原则,它提供了一个思考和权衡一致性、可用性和分区容错性之间关系的框架。
CAP 理论的三个要素如下:

  1. 一致性(Consistency):在分布式系统中的多个副本或节点之间,保持数据的一致性。也就是说,如果有多个客户端并发地读取数据,在任何时间点上,它们都应该能够观察到相同的数据。
  2. 可用性(Availability):系统在任何时间点都能正常响应用户请求,即系统对外提供服务的能力。如果一个系统不能提供响应或响应时间过长,则认为系统不可用。
  3. 分区容忍性(Partition tolerance):指系统在遇到网络分区或节点失效的情况下,仍能够继续工作并保持数据的一致性和可用性。

CAP 理论指出,在分布式系统中,不能同时满足一致性、可用性和分区容错性这三个特性,只能是 CP 或者是 AP。

  • CP:强一致性和分区容错性设计。这样的系统要求保持数据的一致性,并能够容忍分区故障,但可用性较低,例如在分区故障期间无法提供服务。
  • AP:高可用性和分区容错性设计。这样的系统追求高可用性,而对一致性的要求较低。在分区故障期间,它可以继续提供服务,但数据可能会出现部分不一致。

CAP 无法全部满足的原因

CA 或 CAP 要求网络百分之百可以用,并且无延迟,否则在 C 一致性要求下,就必须要拒绝用户的请求,而拒绝了用户的请求就违背了 A 可用性,所以 CA 和 CAP 在分布式环境下是永无无法同时满足的,分布式系统要么是 CP 模式,要么是 AP 模式。

BASE 理论

BASE 理论是对分布式系统中数据的一致性和可用性进行权衡的原则,它是对 CAP 理论的一种补充。
BASE 是指:

  1. 基本可用性(Basically Available):系统保证在出现故障或异常情况下依然能够正常对外提供服务,尽管可能会有一定的性能损失或功能缺失。在分布式系统中,为了保证系统的可用性,有时会牺牲一致性。
  2. 软状态(Soft State):系统中的数据的状态并不是强一致的,而是柔性的。在分布式系统中,由于网络延迟、节点故障等因素,数据可能存在一段时间的不一致。
  3. 最终一致性(Eventually Consistent):系统会保证在一段时间内对数据的访问最终会达到一致的状态。即系统允许数据副本在一段时间内存在不一致的状态,但最终会在某个时间点达到一致。

BASE 理论强调系统的可用性和性能,尽可能保证系统持续提供服务,而不是追求强一致性。在实际应用中,为了降低分布式系统的复杂性和提高性能,可以采用一些方法来实现最终一致性,如版本管理、异步复制等技术手段。

PS:BASE 理论并不是对 CAP 理论的颠覆,而是对分布式系统在某些场景下的设计原则,在具体系统设计中,开发人员需要根据业务需求和场景来权衡和选择适当的一致性和可用性策略。

3.你有什么技术优势?

当面试官问你这个问题时,你可以从以下几个方面回答:

  1. 总结你掌握的技术点:首先,从你所应聘的职位和相关领域出发,总结并列出你的技术专长或专业专长。注意,你讲的这些技术点一定要向面试公司要求的技术点靠拢。
  2. 强调你的技术专长:在列举领域后,强调你在这些领域中的技术专长。你可以提及一些主要技术、框架等方面的技术专长。
  3. 举例说明:提供一些具体的项目案例或工作经验,展示你在技术领域上的实际应用能力。说明你如何使用所掌握的技术解决具体问题、优化系统性能或提升用户体验等。这样可以更加具体地说明你的技术优势,并证明你的技能在实践中是有价值的。
  4. 强调自己“软”优势:向面试官展示你的“软”优势,例如:喜欢专研技术(加上具体的例子,例如每天都有写代码提交到 GitHub)、积极学习和持续成长等能力。同时,强调你在团队合作中的贡献和沟通技巧等其他能力,这些也是技术优势的重要补充。

PS:其他常规的八股问题,可以在我的网站 www.javacn.site 找到答案,本文就不再赘述了,大家自己去看吧。

小结

货拉拉解决了日常生活中搬家难的痛点,也是属于某一个细分赛道的龙头企业了,公司不大,但算的上是比较知名的企业。他们公司的面试题并不难,以八股和项目中某个具体问题为主,只要好好准备,拿到他们公司的 Offer 还是比较简单的。

最后:祝大家都能拿到满意的 Offer。

本文已收录到我的面试小站 www.javacn.site,其中包含的内容有:Redis、JVM、并发、并发、MySQL、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、设计模式、消息队列等模块。

标签:八股,可用性,CAP,技术,拉拉,问麻,分布式系统,一致性,限流
From: https://www.cnblogs.com/vipstone/p/17762425.html

相关文章

  • 前端面试八股文 工程化+性能优化+计算机基础
    前端面试八股文工程化+性能优化+计算机基础前端页面性能如何优化?以下是一些前端性能优化的常用方法:减少资源加载时间:这可以通过多种方式实现,比如压缩和合并CSS和JavaScript文件,使用CDN(内容分发网络)来快速传输资源,以及使用浏览器缓存来避免重复下载。优化图片:图片通常是网页......
  • 前端面试八股文 Vue
    前端面试八股文Vue讲一下Vue框架的原理?我们使用Vue开发应用,实际上是编写若干Vue组件,实现模板、data、生命周期钩子等,然后执行newVue(),将根组件挂载到指定的DOM节点上面,当我们编写的组件中生命周期钩子里面的或者在模板的元素事件中改变数据时候,视图会响应地更新。这样就实现了......
  • 前端面试八股文 JavaScript
    前端面试八股文JavaScript谈谈对原型链的理解在JavaScript中,每个对象都有一个原型对象proto,指向其构造函数的原型对象prototype。当我们创建一个新的实例对象时,这个对象会从其构造函数的原型对象prototype中继承属性和方法。如果实例对象自身没有某个属性或方法,但是其构造函数......
  • 八股乱背,力扣不会!下辈子远离计算机
    昨天接到了许久未见老友的一个电话,片刻寒暄之后聊到主题:朋友受人之托,帮人打听家中小孩选择计算机专业之后的就业问题的。既然是朋友,自然不敢欺瞒,就把目前计算机就业相关的真实情况如实“汇报”了。那么计算机行业现状如何呢?大家看这幅图自然就明白了:杭州一家不知名的公司(我从......
  • 2023中大厂Android面试八股文合集,GitHub,牛客,leetcode已爆火!
    前言金九银十已过半,不知道大家现在都到哪个阶段了,有没有已经找到心仪的工作的朋友?有没有还没准备好面试在各大平台找资料临时抱佛脚的朋友?或是现在在准备,想要明年金三银四跳槽的朋友?不管你是现在急切找工作还是找资料备战,我都非常推荐你看看我花2个多月从GitHub,牛客,leetcode上为大......
  • 设计模式八股
    UML-UnifiedModelingLanguage统一建模语言,又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。进行设计时经常使用这种方法进行建模 创建型模式:单例模式:局部静态变量懒汉式,在第一次调用函数时才对其进行初始化,因为局部静态变量只能被初始化一次,即便有多线......
  • java八股文
     java的单继承,实现runable接口,本质上都是这样来执行线程的 runable是函数接口,lambda表达式,启动线程,Callable接口,Futuretask传给Thread,thread执行外方法,实际上也是runable线程池来创建线程 ......
  • nlp八股-中文分词
    分词基于字典的分词,基于标注的分词基于字典的分词基于字典博客列出所有分词可能,算出每种分词概率马尔可夫假设:每个词的出现只跟前一个词的出现有关n-gram:每个词的出现跟前n-1个词有关构建有向无环图,viterbi算法求最优路径效率更高jieba分词原理加载字典,生成......
  • nlp八股-深入思考的一些博客
    Norm浅谈Transformer的初始化、参数化与标准化RMSNorm:去掉了LayerNorm的均值,只保留了方差Pre-norm和Post-norm的对比:为什么Pre-norm效果更差数学解释Pre-norm模型没有Post-norm'深',所以理论上限更低Pre-norm的残差连接作用更明显,Post-norm弱化了残差连接数学解释,所以Pre-......
  • 八股-Java并发
    title:八股--Java并发top:falsecover:falsetoc:truemathjax:truedate:2023-09-0516:28:51password:summary:tags:categories:启动线程的方式线程继承Thread类实现Callable或者Runable使用start()在处理器中注册线程并执行run方法若只执行run方法会......