据说这些用来问一两年工作经验的人(吓死宝宝了)

范围覆盖:java基础,集合框架,jvm,spring,redis。(无序,后期整理)

在北京做Java开发如何月薪达到两万,需要技术水平达到什么程度?

https://www.zhihu.com/question/39890405


redis,那我说下自己被面过的问题:--begin--(以下是一些需要把这里大部分问题都搞清楚融汇贯通之后才能答的,烧脑,烧脑,加油吧!)

39、redis有序队列实现,跳表的实现,

redis源码分析之有序集SortedSet

https://www.jianshu.com/p/75ca5a359f9f


Redis SortedSet实现原理及跳表:https://blog.csdn.net/linyu19872008/article/details/72403962

40、map各种底层数据结构实现的优劣(哈希表,红黑树,跳表等)。

红黑树、B(+)树、跳表、AVL等数据结构,应用场景及分析,以及一些英文缩写:https://www.cnblogs.com/charlesblc/p/5987812.html
https://blog.csdn.net/moneyshi/article/details/50593243
 

41、redis的key过期的实现,用的什么数据结构,定期机制具体操作过程,为什不用定时器?redis定时器怎么实现的,实现支持百万级定时器你有什么好的设计思路?

回答同问题1:
 
 

42、还有就是问些跟集群相关的。分片为啥不用一致性hash?和redis方案比有啥优劣。

redis 集群的分片(同问题17):

https://www.cnblogs.com/houziwty/p/5167075.html

https://blog.csdn.net/ai2713165/article/details/50513974

https://blog.csdn.net/weijiaxiaobao/article/details/51311747

redis集群 数据迁移方式 Hash槽 和 一致性hash对比,优缺点比较:https://blog.csdn.net/tianpeng341204/article/details/78963850

https://www.zhihu.com/question/53927336

 

43、数据迁移的具体过程,假如迁移过程中迁出节点挂了会怎样?

数据迁移:https://blog.csdn.net/liaokailin/article/details/47670895

迁移过程中的问题:http://www.360doc.com/content/16/0425/23/16915_553797555.shtml

https://mp.weixin.qq.com/s?__biz=MjM5NjkxMjA1MA==&mid=2247483772&idx=1&sn=51d93d22e1ed2efbff5596839d5b77df&chksm=a6e34fa19194c6b7e4775eea10bfb5632458d04706ed1620dc0432f6911cc6a306b86dee26c8&mpshare=1&scene=23&srcid=0705sl1vlnkvPkwBSm6fUQTb#rd

 

44、java smart client实现原理。(不知道,应该不会问吧)

45、如何实现节点的高可用,一致性怎么保证?raft协议怎么设计的?

自己好好想想吧http://blog.51cto.com/anyisalin/1739115

raft:https://www.zhihu.com/question/36648084

http://www.jdon.com/artichect/raft.html

 

46、redis事务怎么实现的,了解mysql事务实现吗?计算机本身实现事务的原理?有了解过分布式事务怎么做吗?

好好想想再答
 
 

47、阿里的tcc和mysql的xa了解吗?两段提交协议是啥?

48、有了解过zookeeper吗?如果要你实现分布式事务你怎么做?

工作四年经验问的,可能针对某个点一直问下去,问到你不会为止(CTO)。

回复鲁肃:

大神平常用到的东西都会研究原理甚至自己实现一遍吗,萌新刚毕业一年,只对消息队列原理清楚

回复潘璋[2]:

一般都是先看下别人资料或者文档研究下原理,然后再去看代码,逼着自己去实现一个简单的。其实数据库设计这方面是我不咋熟的,自己只写过简单的只在本地k/v数据库,而且持久化特性的事务还没实现,就是原理可能了解一点,因为写的过程中会反过来加深理解。

回复鲁肃:

我目前也是类似,自己写了一个消息队列,研究了主流的几个,刚毕业有点浮躁,总感觉时间不够用

回复潘璋[2]:

那你比我要厉害的多,我在你这个时期还没这个动手的意识。

 
 

---end---




1.如何实现redis的key失效    

redis key失效的话,如果是代码层面,用setNx设置key的有效时间;如果问的是底层策略的话,redis保存了起始和有效时间,有三种策略,一个是在get时检查当前时间是否满足,二是启动定期检查,三是淘汰,应该就不算如何实现了
问:主动失效的流程,如何保证下一轮可以继续上一轮的检测,默认的通过检验的比例是多少,让你来实现,你打算怎么做
这个知识我忽略了,下来补补,三克油先。如果让我来实现的话,我会用hash值来做,不管是单机的,还是高可用的集群形式,数据的安放都是在一个固定的范围内的,检测比率不应该太大,redis是单线程的,影响读写性能,比如把这个范围分N份,每次扫一份这样,然后同步删除持久化文件,我想到的大概是这样吧

redis的key失效机制(自己整理,从源码角度。)

https://blog.csdn.net/Happy_wu/article/details/79695415

如何保证下一轮可以继续上一轮的检测http://blog.sina.com.cn/s/blog_48c95a190101e5hv.html

 代码段五给出了函数activeExpireCycle的实现及其详细描述,其主要实现原理就是遍历处理Redis服务器中每个数据库的expires字典表中,从中尝试着随机抽样REDIS_EXPIRELOOKUPS_PER_CRON(默认值为10)个设置了失效时间的主键,检查它们是否已经失效并删除掉失效的主键,如果失效的主键个数占本次抽样个数的比例超过25%,Redis会认为当前数据库中的失效主键依然很多,所以它会继续进行下一轮的随机抽样和删除,直到刚才的比例低于25%才停止对当前数据库的处理,转向下一个数据库。这里我们需要注意的是,activeExpireCycle函数不会试图一次性处理Redis中的所有数据库,而是最多只处理REDIS_DBCRON_DBS_PER_CALL(默认值为16),此外activeExpireCycle函数还有处理时间上的限制,不是想执行多久就执行多久,凡此种种都只有一个目的,那就是避免失效主键删除占用过多的CPU资源。代码段五有对activeExpireCycle所有代码的详细描述,从中可以了解该函数的具体实现方法。

默认的通过检验的比例是多少https://blog.csdn.net/wwd0501/article/details/51900063
处理定时任务:https://blog.csdn.net/orangleliu/article/details/52038092

2spring里对aop的扩展。(昨天写的都丢了,好心痛,csdn再这样我就不用你了。)

https://isudox.com/2017/05/24/spring-aop-guide/
https://www.cnblogs.com/hq-123/p/6008695.html
https://www.cnblogs.com/wangzheand/p/5939618.html

Spring Bean的生命周期(非常详细,总被问到)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值