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

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

面试官:你们项目如何使用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面试题** 来领取


总结一下软通外派阿里的面试题相关推荐

  1. 又一道软通动力7K月薪面试题——银行业务调度系统

    后期补充:网友对我诟病最多的就是我帮学生做面试题,说这是小偷和骗子行为,在此,我对自己给学员做面试题做出如下解释:  (1)学员拿着面试题来找老师,学生也事先思考和尝试后实在没有办法,又求职心切才想到 ...

  2. 牛客网软通动力软件测试机试_软通动力测试工程师笔试题

    此面试题转自网络,本人只做学习参考,无其他用意,证明软件错误不存在 B)证明软件错误的存在 C)改正程序所有的错误 D)发现程序所有的错误 2.对于软件质量描述不正确的是:( ) A)高质量的过程产生 ...

  3. 软通动力月薪8K面试题解析

    移动用户资费统计系统  ===========================================================   PS:  这是朋友去面试的时候面到的题,做不出来了, ...

  4. 关于2017年软通动力校招的笔试题

    1.输入一个数组,按照英文26个字母顺序,输出每个数字对应的字母,如果查找不到,则输出? 如[1, 3, 30], 输出ac?. 用java编译: public class Zs { /** * @p ...

  5. 彩色星球与阿里云签署合作备忘录;京东科技和软通动力达成战略合作 | 全球TMT...

    海外市场 HUAWEI Ads在今年的应用增长奖(App Growth Awards)评选中获奖.HUAWEI Ads是华为终端生态的商业化平台,覆盖150个广告主行业,主要为华为终端开发者提供应用变 ...

  6. 软通动力外派华为手机

    工作4年拿了个上海软通动力外派到华为终端手机开发,薪水9K的Offer.在金桥上班,听说这外包公司不怎么样. 不过纠结的是在外派到华为的工作中能多学习到东西和积累经验多吗,以后找做手机开发这行的工作前 ...

  7. 软通动力上市难掩隐忧,软件外包模式或受冲击

    数据智能产业创新服务媒体 --聚焦数智 · 改变商业 2022年3月7日,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")在深交所创业板上市,首次公开发行6352.94 ...

  8. 进北京软通动力的经历

    记得刚来北京那年(2016年)从事开发行业,才知道了还分前后端,投递简历才知道自己的职位是web前端,前端开发工程师.同时招聘网站认识了,软通动力,中软国际,文思海辉等一系列大公司.当时感觉就是一家大 ...

  9. 热评云厂商:软通动力7.93亿元,加速云业务创新升级

    全球云观察<云白皮书(2020-2021)>热评云厂商60家之四十二 软通动力在云转型上也十分积极,抓住当前的最新趋势,强化云战略,并成立云业务事业群,专注云MSP及相关领域的发展. 软通 ...

最新文章

  1. np.nan is an invalid document, expected byte or unicode string
  2. Python并发编程之多进程(二)
  3. mysql 按时间累计计算_精通MySQL索引背后的数据结构及算法原理
  4. 您好,这是我的第一篇文章
  5. android开发隐藏软键盘,Android开发之完全隐藏软键盘的方法
  6. 再见 XShell 和 ITerm 2,是时候拥抱全平台高颜值终端工具 Hyper 了!
  7. 用函数刷新页面内容比刷新页面要好
  8. [framework] multi learner
  9. mongodb 字符串转bson_大数据存储技术选型(六)--Mongodb专题介绍
  10. 常量表达式(constexpr)
  11. Linux操作系统进程模型分析
  12. Sturts2 三种开发模式 (转)
  13. html短期总结(至表单)
  14. Docker容器运行
  15. 【遥感科学】第二章 电磁辐射和地物光谱特性
  16. luogu P4315 月下“毛景树”
  17. 网络上的计算机病毒怎么办,电脑中病毒了怎么办
  18. MySQL数据库程序设计(三)
  19. 计算机绘制表格教案,word中插入表格教案
  20. JavaWeb 01 JavaWeb概述

热门文章

  1. 苹果电脑拷贝文件到u盘很慢_防病毒入侵防误删,爱国者这款U盘值得种草
  2. Flink任务报:Could not allocate the required slot within slot request timeout.
  3. 计算机公开课教学反思,公开课教学反思
  4. 《管理十诫》学习总结
  5. 数字孪生技术最新八大应用实践方向
  6. 伺服电机的控制方式及优缺点对比?
  7. 元宇宙应用层出不穷,沉浸式体验能否被实现?
  8. 基于Java音乐网站的设计与实现
  9. 80年代经典影视剪辑( 原创 )
  10. 省常中模拟 day1