总结一下软通外派阿里的面试题

article/2025/9/3 8:03:45

前段时间,面了几家大外派到阿里的项目,所以和大家分享一下面试题

上来就是老套路
面试官:说下你们项目的流程
果咩: 巴拉巴拉。。。。

面试官:你们项目如何使用redis高可用的

果咩:可以使用哨兵模式和Cluster集群

面试官:那你讲一下哨兵模式吧

果咩:当我们的主机master宕机之后,我们的slave会等待我们的master上线,再次期间不会进行任何操作,这个时候我们可以手动的进行主机切换,将我们其中的一台从机slaver装换成我们的主机master,当原来的master恢复重新上线的时候,会自动沦为从机slave,可是我们无法知道redis什么时候宕机,所以我们需要他们自动的监控和进行主从切换,而哨兵提供了这些功能,监控,通知和自动的故障转移,最常见的哨兵模型就是一主二从三哨兵

面试官:使用三个哨兵会不会浪费?

果咩:不会,在哨兵模式下,我们需要奇数个哨兵,因为当主机宕机之后哨兵会去判断master是否宕机,在哨兵集群下进行投票,当投票数超过设定的值的时候会进行从机slave选举成为master,所以我们最少需要三台哨兵去监控我们的主机

面试官:说一下redis的持久化

果咩:持久化方式主要有两种,rdb和aof

rdb是redis默认的持久化方式,在指定的时间间隔内将内存中的数据集快照(Snapshot)写入磁盘的二进制文件,所产生的也就是dump.rdb文件,它恢复时是将快照文件直接读到内存里。

aof是以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,

面试官:知道如何实现分布式锁吗

果咩:我知道的有两种方式,一个是redis,另一个是zk,我对redis比较了解,我就说一下redis如何实现分布式锁吧

单机模式下可以使用setnx 去设置锁,设置成功,返回 1 ;设置失败,返回 0 。 (挖坑,让他有下面的提问)

在集群模式下使用redlock去实现分布式锁(这个我没回答上来,后面会进行学习)

面试官:使用setnx会不会出现什么问题

果咩:不设置过期时间,宕机后会变成死锁,为了保证操作的原子性,我们可以使用SET key value NX PX 30000命令,在java是这样实现的

     //jedis为例找到如下参数的 nxxx 改成nx,expx改成px set(final String key, final String value, final String nxxx, final String expx,final int time) 

面试官:那删除key的时候怎么办

果咩:删除的时候可以使用lua脚本语言保证删除过程的原子性,在删除的时候要先判断value值是否一样

面试官:那你写过lua表达式吗?

果咩:没有。。。(害,这个还真没写过,后面继续学习)

面试官:讲一下缓存雪崩和缓存穿透

果咩:
雪崩就是在大量redis突然失效的时候,请求在缓存无法获取进而去访问数据库,数据库压力过大导致服务器宕机的行为

缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求。这时的用户很可能是攻击者,攻击会导致数据库压力过大。

面试官:那你有什么办法解决缓存雪崩吗

果咩:尽量保证大量的key的失效时间不在同一时间段内,保证缓存的高可用,避免单点缓存宕机

面试官:还有其他方法吗?

果咩:这里我说的是利用redis的数据淘汰策略(希望大佬指点一下)

面试官:解决缓存穿透呢?

果咩:将那些不存在的值也放进缓存中,或者使用布隆过滤器

面试官:那你说一下redis为什么执行单线程的还怎么快

果咩:

  • 采用了多路IO复用,多路指的是多个连接,复用是使用同一个线程
  • 基于内存,而内存的读写速度非常快
  • 单线程减少了上下文切换线程的时间

面试官:redis 的String的容量是多大

果咩:额。。。这个。。。不太清楚
(这个当时没回答上了 ,后面查阅知道是512M)

redis终于结束了!

面试官:jvm为什么采用分带收集

果咩:我们根据不同的年代选择适合的垃圾回收算法

比如在新生代中,每次收集都会有大量对象死去,所以可以选择复制算法,而老年代的对象存活几率是比较高的,而且没有额外的空间对它进行分配担保,所以我们必须选择“标记-清除”或“标记-整理”算法进行垃圾收集

面试官:类加载机制是什么

果咩:将我们编译好的.class文件加载到内存当中,将静态数据放进方法区内,并在堆中创建对象,用来封装方法区中的数据结构,并提供了访问数据的入口

类的加载过程包括了加载、验证、准备、解析、初始化五个阶段。

面试官:双亲委派是什么?

果咩:当一个类需要加载的时候,会先交给父类加载器去完成,当父类无法加载的时候,才交给子类去加载,保证了不同类加载器最终得到的是同一个对象,也同时避免了重复加载

面试官:关于eureka你们用来做什么了

果咩:服务注册和发现
面试官 : 就这???
大佬们,eureka到底还能用来干点啥??

面试官:说一下你boot都用过什么注解吧

果咩:首先是启动类 @SpringBootApplication

配置文件注解@Configuration

包扫描注解@ComponentScan

自动注入@AutoWired

@RestController,@RequestMapping,@Service,@Bean,@Value

面试官:你知道bean都是怎么注入的吗?

果咩:关于ioc的注入,基于xml bean的配置和@controller等注解,包扫描进行ioc注入

bean之间的依赖注入可以通过setter,构造器,工厂模式进行注入
手动进行依赖装配过多会导致不易管理,所以我们可以使用注解的方式进行自动装配进行注入,比如@Autowire 和@Resource

面试官:说一下@Autowired和@Resource的区别

果咩:

  • @Autowired是spring的 @resource是jdk的
  • @Autowired默认按照类型装配,默认情况下它要求依赖对象必须存在如果允许为null,可以设置 required属性为false,如果我们想使用按照名称装配,可 以结合@Qualifier注解一起使用;
  • @Resource默认按照名称装配,当找不到与名称匹配的bean才会按照类型装配,可以通过name属性指定,如果没有指定name属 性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找 依赖对象.

面试官:嗯好 ,今天我们就先聊这么多,后续通过的话会有阿里找你进行二面
我:好的好的,谢谢您

这就是我的一场初面的面试题,后续还有其他的面试问题 等我整理出来分享给大家
我这有一份关于java的面试题,大家可以关注我的公众号 **果咩z**(在最下方!),回复:**java面试题** 来领取

java面试题
java面试题


http://chatgpt.dhexx.cn/article/uV2RuqfZ.shtml

相关文章

阿里巴巴一面 :十道经典面试题解析

1. 用到分布式事务嘛?为什么用这种方案,有其他方案嘛? 什么是分布式事务 谈到事务,我们就会想到数据库事务,很容易就想到原子性、一致性、持久性、隔离性。 分布式事务跟数据库事务有点不一样,它是指事务的参与者、支持事务的服务器、资源…

46 道阿里巴巴 Java 面试题,你会几道?

做技术的有一种资历,叫做通过了阿里的面试。 这些阿里 Java 相关问题,都是之前通过不断优秀人才的铺垫总结的,先自己弄懂了再去阿里面试,不然就是去丢脸,被虐。 希望对大家帮助,祝面试成功,有…

最新出炉的阿里巴巴面试题及答案汇总(513页)

前言 秋招已经结束了,不知道各位有没有拿到自己心仪的offer?最近有不少粉丝去阿里巴巴面试了,回来之后我整理成了一份手册java面试时常用到的面试题(附答案)那么今天分享给大家,祝愿大家都能找到满意的工作…

阿里云面试题

转自:https://yq.aliyun.com/articles/6656 今天为大家分享的是《阿里巴巴常考面试题及汇总答案(上篇)》 原文如下: 一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的? 答&…

历年阿里面试题汇总(2017年不断更新中)

Volatile的特征: A、禁止指令重排(有例外) B、可见性 Volatile的内存语义: 当写一个volatile变量时,JMM会把线程对应的本地内存中的共享变量值刷新到主内存。 当读一个volatile变量时,JMM会把线程对应的…

iOS-阿里面试题

先把这个几个面试写出来,各位看官可以试着去网上找找答案。 这些是《蚂蚁金服》的面试题 问题缩减如下: 1:在KVO中,他是怎么知道监听的对象发生了变化? 2:字典的工作原理 ?怎100w个中是怎么快…

最全阿里面试题:已拿offer,阿里P8岗位完整阿里技术面试题目,这些面试题你能答出多少

我们在操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突)。如 何保证数据并发访问的一致性、有效性,是所有数据库必须解决的一个问题,锁的冲突也是 影响数据库并发访问性能的一个重要因素&#…

阿里 90 道常问面试题及答案(软件测试岗位)

目录 1、问:你在测试中发现了一个 bug,但是开发经理认为这不是一个 bug,你应该怎样解决? 2、问:给你一个网站,你如何测试? 3、在搜索引擎中输入汉字就可以解析到对应的域名,请问如…

阿里面试题及答案

一面 1、自我介绍下自己,不超过3分钟(实际上我的自我介绍不到一分钟) 2、你感觉比本科阶段自己进步了多少,有哪些进步 3、研究生期间最大的进步是什么 4、你觉得你适合从事哪个方向的开发 5、synchronized与lock的区别&#xff0…

最新阿里高级Java面试题(首发,70道,带详细答案)

阿里巴巴 整理的70道阿里的Java面试题,都来挑战一下,看看自己有多厉害。下面题目都带超详细的解答,详情见底部。 1、java事件机制包括哪三个部分?分别介绍。 2、为什么要使用线程池? 3、线程池有什么作用? …

阿里面试官内部题库,阿里发布2022年Java岗(正式版)面试题

阿里巴巴2022年Java架构师岗面试题(正式版) 这不马上就是金三银四的面试跳槽季了嘛,小编也是通过一些小手段为大家拿到了一份阿里巴巴2022年Java架构师岗面试题(正式版)现在分享给大家,这份资料也是阿里面试…

vue打包找不到js或css文件

修改vue.config.js文件中的publicPath 把 / 改成 ./

Vue打包优化篇-CDN加速

优化原因 在没有使用cdn加速之前打包后数据如下,可以看出element-ui、vue、vuex、vue-router这些依赖都打进chunk-vendors.js中导致体积很大,假设再来很多依赖项是不是更大,同时也会影响单页面应用首屏加载速度,所以这里采用一种打…

vue打包后dist的使用

发现问题 vue项目完成打包出dist后准备打开index.html,发现居然页面是一片空白,f12一片报红。 分析问题 经过多次网上查询后发现这是由于vue打包时,脚手架会帮你配置好大量参数,但其中路径publicPath被配置为了"/",需…

vue打包的文件加上版本号

为什么要加版本号?因为有时候打包文件部署上线后发现线上没更新,原因是因为线上环境有缓存,故加上版本号可解决此问题! 在vue.config.js配置: 输出文件名js文件增加版本号: output: {filename: js/[name]…

解决vue打包后去掉console

方法一:使用插件 babel-plugin-transform-remove-console npm install babel-plugin-transform-remove-console --save-dev 安装插件生产环境:在项目的babel.config.js的plugin中添加节点。 let transformRemoveConsolePlugin [];if (process.env.N…

Vue打包路径配置

1. 配置文件 module.exports {// ......// 相对路径都是相对于index.js所在的目录config开始的build: {// index,assetsRoot两个路径基本不用改动,只是用于文件打包存放的路径// index.html的路径index: path.resolve(__dirname, ../dist/index.html),// js,css,f…

Vue打包并发布项目

一、 打包vue项目步骤: 1、对当前vue项目进行打包的命令如下: npm run build2、打包完成,会输出Build complete并且在vue项目中会生成一个名字为dist的打包文件。如下图: 二、 使用静态服务器工具包发布打包的vue项目 1、首先…

vue打包后static中的文件未打包进去

在vue中未使用到的静态资源文件,例如:引用在index.html的js的(此处不知为何,vue打包认为其为未引用),后端返回才引用到的图片等文件。 目前只涉及到此两类,后续再补充。 打包时static中的文件…

vue打包上线相关配置

1、打包: npm run build项目打包后,代码都是经过压缩加密的,如果运行时报错,错误信息无法得知是哪里报错 有了 map 文件就可以像未加密的代码一样,准确的输出哪一行那一列有错。 一般情况下时不需要保留的 在 vue.con…