首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    华为的职级与薪资体系。。

    那对于 25 届打算冲华为的同学,可以看看《Java 面试指南》中收录的一些 QA,比如说: 签三方的时候看英语四六级吗? 为什么大家对华为评价这么高? 定级谈薪和小奖状的顺序? 审批用了多久?...切 base 地还能收到小奖状吗? 华为流程真的很恶心吗?...这次我们就以《二哥的Java 面试指南》中同学 11 的华为面经为例,来看看华为的面试都会问哪些问题,好做到知彼知己百战不殆。...三分恶面渣逆袭:延时双删 当数据库发生变化时,我们直接删除 Redis 缓存中的 key 就可以了,因为下一次请求会将数据库同步到 Redis 缓存中。...因此,不同的线程可以同时操作不同的段,从而实现并发访问。

    23210

    面试之Redis

    如果你快速的在 Google 中搜索“Redis queues”,你马上就能找到大量的开源项目,这些项目的目的 就是利用 Redis 创建非常好的后端工具,以满足各种队列需求。...如果发现加锁次数是 0 了,说明这个客户端已经不再持有锁了,此时就会用:“del myLock”命令,从 redis 里删除这个 key。然后呢,另外的客户端 2 就可以尝试完成加锁了。...比如如果我想新添加个节点 D, 我需要从节点 A、B、 C 中得部分槽到 D 上。 使用 redis 如何设计分布式锁?说一下实现思路?使用 zk 可以吗?如何实现?这两种有什么区别?...发生上述不一致的原因在于,主从库数据不一致问题,加入了缓存之后,主从不一致的时间被拉长了 处理思路:在从库有数据更新之后,将缓存当中的数据也同时进行更新,即当从库发生了数据更新之后,向缓存发出删除,淘汰这段时间写入的旧数据...no-eviction 禁止驱逐数据 Redis 当中有哪些数据结构 字符串 String、字典 Hash、列表 List、集合 Set、有序集合 SortedSet。

    33810

    《逆袭进大厂》第十三弹之Redis重点篇

    大家好,我是阿秀。 大家五一过的怎么样啊?有没有出去玩,哦不,有没有被堵在路上... 机智的我选择呆在实验室里看B站技术视频和《计算机程序的构造和解释》 ?...字典 字典的底层是哈希表,类似 C++中的 map ,也就是键值对。...7的下一个节点是39,大于16,因此我们退回到7 从7开始,在下一层继续查找,就可以找到16。 这个例子中遍历的节点不比一维列表少,但是当节点更多,查找的数字更大时,这种做法的优势就体现出来了。...多个 socket 可能会并发产生不同的操作,每个操作对应不同的文件事件,但是 IO 多路复用程序会监听多个 socket,会将 socket 产生的事件放入队列中排队,事件分派器每次从队列中取出一个事件...惹不起,我还躲不起吗,一气之下阿秀以后都不再提供 md 格式的文件了,以后只在公众号提供自己的文章,并且提供一些 PDF 资料的下载了。 还有,对于上述问题,你,学废了吗?

    48020

    【Redis面试】基础题总结(中)

    渐进式REHASH的详细过程如下: 1.为ht[1]分配空间,让字典同时持有ht[0]和ht[1]两个哈希表; 2.在字典中的索引计数器rehashidx设置为0,表示REHASH操作正式开始; 3.在...REHASH期间,每次对字典执行添加、删除、修改、查找操作时,程序除了执行指定的操作外,还会顺带将ht[0]中位于rehashidx上的所有键值对迁移到ht[1]中,再将rehashidx的值加1; 4...REHSH期间,字典同时持有两个哈希表,此时的访问将按照如下原则处理: 1.新添加的键值对,一律被保存到ht[1]中; 2.删除、修改、查找等其他操作,会在两个哈希表上进行,即程序先尝试去ht[0]中访问要操作的数据...中取值,当按照分值的范围访问有序集合列表时可以直接从zsl中取值,采用了空间换时间的策略。...若此时进程B在新的主节点上加锁成果,之后原主节点重启,成为了从节点,系统中将同时出现两把锁,这是违背锁的唯一性原则的。 总之,就是在单个主节点的架构上实现分布式锁,是无法保证高可用的。

    21620

    ConcurrentDictionary 对决 Dictionary+Locking

    所以,既然现在已经有了一个线程安全的字典类,我们再也不需要自己实现了。很棒,不是吗? 问题起源 事实上我之前只使用过 CocurrentDictionary 一次,就是在我测试其反应速度的测试中。...如果指定的键值对不存在,将会直接创建一个。同时,因为我们已经持有了对该字典的锁,可以直接将键值对添加到字典中。然后释放字典锁,并返回结果。...如果有两个线程同时在查询同一个键值,第一个得到字典锁的线程将会完成对象的创建工作,另一个线程会等待这个创建的完成,并在得到字典锁之后获取到已创建的键值结果。 这样挺好的,不是吗? 真不是!...对战第二局:并行访问不同对象 不,你说的情况根本就不成立! 好吧,上面的例子有点特殊,但确实描述了问题,只是这种用法比较极端。...对战第六局:创建消耗不同时间的对象 针对不同数据项的创建所消耗的时间不同,将会怎样? 创建多个消耗不同时间的数据项,并且并行的添加至字典中。这是 ConcurrentDictionary 的最强点。

    1.6K70

    Python自动化试题仓

    有GIL在,则某一时刻只能有一条线程运行,不会有多条线程同时修改数据的情况产生,那为什么还要加锁?...3、一行代码实现删除列表中重复的值 ? 4、如何生成一个随机数? 5、如何使用python删除一个文件?...1).json中的dumps方法是用来将特定格式的数据进行字符串化的操作,比如列表字典都可以进行字符串化操作然后写入json的file;而且如果是要写入json文件就必须要进行dumps操作;   2)...有GIL在,则某一时刻只能有一条线程运行,不会有多条线程同时修改数据的情况产生,那为什么还要加锁?   1).需要锁。因为很多操作不是原子操作。线程会在执行到100条字节码的时候切换。...li = [x**2 for x in range(1,11)] print(li) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 3、一行代码实现删除列表中重复的值

    93020

    redis面试必会6题经典_redis 面试

    有不少同学也在积极准备大厂面试中,从聊天中可以看得出来大家都信心满满。 其中有一个同学我印象特别深刻,因为我经常晚上发文章,然后隔天早上起来就看到他的点赞了,看得出来是有认真在看的同学。...既然CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了,因为如果使用多线程的话会更复杂,同时需要引入上下文切换、加锁等等,会带来额外的性能消耗。...在进行渐进式 rehash 的过程中,字典会同时使用 ht[0] 和 ht[1] 两个哈希表, 所以在渐进式 rehash 进行期间,字典的删除、査找、更新等操作会在两个哈希表上进行。...21、RDB、AOF、混合持久,我应该用哪一个? 一般来说, 如果想尽量保证数据安全性, 你应该同时使用 RDB 和 AOF 持久化功能,同时可以开启混合持久化。...我看网上很多文章都是使用一个“固定的 key”加锁,这样会导致不同的 key 之间也会互相阻塞,造成性能严重损耗。

    1.7K42

    《我想进大厂》之Redis夺命连环11问

    C语言的字符串不记录自身的长度信息,而SDS则保存了长度信息,这样将获取字符串长度的时间由O(N)降低到了O(1),同时可以避免缓冲区溢出和减少修改字符串长度时所需的内存重分配次数。...压缩列表ziplist:压缩列表是为节约内存而开发的顺序性数据结构,他可以包含多个节点,每个节点可以保存一个字节数组或者整数值。...解决方案: 加锁更新,比如请求查询A,发现缓存中没有,对A这个key加锁,同时去数据库查询数据,写入缓存,再返回给用户,这样后面的请求就可以从缓存中拿到数据了。...针对雪崩几个解决方案: 针对不同key设置不同的过期时间,避免同时过期 限流,如果redis宕机,可以限流,避免同时刻大量请求打崩DB 二级缓存,同热key的方案。 Redis的过期策略有哪些?...volatile-lru:从已设置过期时间的key中,移出最近最少使用的key进行淘汰 volatile-ttl:从已设置过期时间的key中,移出将要过期的key volatile-random:从已设置过期时间的

    47420

    面试官最爱问的 11道 Redis 面试题,我替你整理好了

    C语言的字符串不记录自身的长度信息,而SDS则保存了长度信息,这样将获取字符串长度的时间由O(N)降低到了O(1),同时可以避免缓冲区溢出和减少修改字符串长度时所需的内存重分配次数。...压缩列表ziplist:压缩列表是为节约内存而开发的顺序性数据结构,他可以包含多个节点,每个节点可以保存一个字节数组或者整数值。...解决方案: 加锁更新,比如请求查询A,发现缓存中没有,对A这个key加锁,同时去数据库查询数据,写入缓存,再返回给用户,这样后面的请求就可以从缓存中拿到数据了。...针对雪崩几个解决方案: 针对不同key设置不同的过期时间,避免同时过期 限流,如果redis宕机,可以限流,避免同时刻大量请求打崩DB 二级缓存,同热key的方案。 Redis的过期策略有哪些?...volatile-lru:从已设置过期时间的key中,移出最近最少使用的key进行淘汰 volatile-ttl:从已设置过期时间的key中,移出将要过期的key volatile-random:从已设置过期时间的

    72630

    面渣逆袭:Redis连环五十二问,图文详解,这下面试稳了!

    排行榜 Redis提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统。 社交网络 赞/踩、粉丝、共同好友/喜好、推送、下拉刷新。...解决⽅案: 加锁更新,⽐如请求查询A,发现缓存中没有,对A这个key加锁,同时去数据库查询数据,写⼊缓存,再返回给⽤户,这样后⾯的请求就可以从缓存中拿到数据了。...C语⾔的字符串不记录⾃身的⻓度信息,⽽SDS则保存了⻓度信息,这样将获取字符串⻓度的时间由O(N)降低到了O(1),同时可以避免缓冲区溢出和减少修改字符串⻓度时所需的内存重分配次数。...Redis 中的字典相当于 Java 中的 HashMap,内部实现也差不多类似,采用哈希与运算计算下标位置;通过 "数组 + 链表" 的链地址法 来解决哈希冲突,同时这样的结构也吸收了两种不同数据结构的优点...艾小仙《我要进大厂》 [5].田维常《后端面试小笔记》 [6]. 美团二面:Redis与MySQL双写一致性如何保证? [7]. 妈妈再也不担心我面试被Redis问得脸都绿了 [8].

    1.2K31

    Redis面试知识点-精简版

    int16 count; //ziplist中的元素数量 ... } 1.3、hash redis的hash字典相当于hashMap,都是数组+链表结构,不同的是,redis的字典只能是字符串...它会保留新旧2个hash结构,查询时会同时查询2个hash,然后在定时任务中循序渐进的将旧的hash迁移到新的hash中。...: 定时扫描 redis默认每秒进行10次过期扫描,但不是扫面全部,而是采用一种简单的贪心策略: 从过期字典中随机选出20个key; 删除这20中过期的key; 如果过期的key超过1/4,就重复步骤...懒惰过期 只在用到这个key的时候,进行判断,然后删除 优点:不占用cpu 缺点:占用内存 定期过期: 达到最大内存阈值的时候,扫描一定数量进行删除 从节点过期策略 从节点不会进行过期扫描...,当主节点删除过期key时,会同步del指令到aof文件,同步给所有从节点。

    55700

    什么是 “分布式锁” ?

    key 为分布式锁的key value 为分布式锁的值,一般为不同的客户端设置不同的值 NX 代表如果要设置的key已存在,则取消设置 EX 代表过期时间为秒,PX则为毫秒,比如上面示例中为10秒过期...锁误删除 还是类似的问题,客户端A加锁同时设置超时时间3秒,结果3s之后程序逻辑还没有执行完成,锁已经释放。客户端B此时也来尝试加锁,这时客户端A代码执行完成,执行释放锁,结果释放了客户端B的锁。...) 从图中我们可以看出,client1线获取到锁,然后发生GC停顿,超过了锁的有效时间导致锁被释放,然后锁被client2拿到,然后两个客户端同时拿到锁在写数据,问题产生。...解锁 如果key都不存在了,那么就直接返回 如果key、field不匹配,那么说明不是自己的锁,不能释放,返回空 释放锁,重入次数-1,如果还大于0那么久刷新过期时间,反之那么久删除锁 ?...不过,实际中我们当然是有啥用啥,老板说用什么就用什么,我才不管那么多。

    75430

    Python编程:从入门到实践(选记)「建议收藏」

    有些 Python 2 print 语句也包含括号,但其行为与 Python 3 中稍有不同。简单地说,在 Python 2 代码中,有些 print 语句包含括号,有些不包含。...为此,你需要指定新元素的索引和值。 这种操作将列表中既有的每个元素都右移一个位置: 3.2.3  从列表中删除元素 1....使用 del 语句将值从列表中删除后,你就无法再访问它了。 2. 使用方法 pop() 删除元素 有时候,你要将元素从列表中删除,并接着使用它的值。...根据值删除元素 有时候,你不知道要从列表中删除的值所处的位置。如果你只知道要删除的元素的值,可使用方法 remove() 。 使用 remove() 从列表中删除元素时,也可接着使用它的值。...alien_0['points'] print(alien_0) ❶处的代码行让 Python 将键 ‘points’ 从字典 alien_0 中删除,同时删除与这个键相关联的值。

    6.4K50

    史上最全Redis总结

    双端、无环、带长度记录、 多态:使用 void* 指针来保存节点值, 可以通过 dup 、 free 、 match 为节点值设置类型特定函数, 可以保存不同类型的值。 字典是如何实现的?...如果你快速的在 Google 中搜索“Redis queues”, 你马上就能找到大量的开源项目, 这些项目的目的就是利用 Redis 创建非常好的后端工具, 以满足各种队列需求。...其中三个特性: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。...当发现没有命中Redis,去查数据库的时候,在执行更新缓存的操作上加锁,当一个线程访问时,其它线程等待,这个线程访问过后,缓存中的数据会被重建,这样其他线程就可以从缓存中取值。...如果过期了此时就会删除。 为什么Redis的操作是原子性的,怎么保证原子性的? 对于Redis而言,命令的原子性指的是:一个操作的不可以再分,操作要么执行,要么不执行。

    1.1K20

    整理好了,Redis面试题

    大家好,我是帅地。 验证自己 Redis 学得如何,最好的方式就是看一看市面上的一些面试题,帅地地这个周末把 Redis 面试题补全了一些,供大家复习和准备面试。...List(列表) 列表类型是用来储存多个有序的字符串,列表中的每个字符串成为元素,一个列表最多可以储存 2 ^ 32 - 1 个元素,在 Redis 中,可以队列表两端插入和弹出,还可以获取指定范围的元素列表...Set(集合) 集合类型也是用来保存多个字符串的元素,但和列表不同的是集合中不允许有重复的元素,并且集合中的元素是无序的,不能通过索引下标获取元素,Redis 除了支持集合内的增删改查,同时还支持多个集合取交集...5. zset(sorted set:有序集合) 有序集合和集合有着必然的联系,它保留了集合不能有重复成员的特性,但不同得是,有序集合中的元素是可以排序的,但是它和列表的使用索引下标作为排序依据不同的是...当释放锁的时候,只需将这个瞬时节点删除即可。同时,其可以避免服务宕机导致的锁无法释放,而产生的死锁问题。完成业务流程后,删除对应的子节点释放锁。 在实践中,当然是从以可靠性为主。

    58160

    我画了 19 张图,帮你彻底搞懂 Redis

    2.2.列表 如果同时满足下面条件,就使用压缩列表,否则使用双向链表。 列表中单个元素小于64字节 列表中元素个数少于 512 压缩列表在内存中是一块儿连续的内存空间,结构如下: ?...集合中元素都是整数类型 集合中元素个数不超过512个 2.4.有序集合 如果同时满足下面2个条件,就使用压缩列表,否则使用跳表。...2.5.字典 如果同时满足下面2个条件,就使用压缩列表,否则使用hash表。...如果lazyfree-lazy-user-del不设置为yes,那redis是否采用异步删除,是要看删除的时机的。...让它保存到不同的redis实例上,这样也会存在两个问题: 客户端在访问的时候需要给这个key加前缀 客户端在删除的时候需要根据所有前缀来删除不同实例上保存的这个key 11 bitmap使用 有一道经典的面试题

    78031

    redis灵魂拷问:19图+11题带你面试通关

    列表中单个元素小于64字节 列表中元素个数少于 512 「压缩列表」在内存中是一块儿连续的内存空间,结构如下: 「压缩列表查找时间复杂度是o(n)」 2.3.集合 如果同时满足下面条件,就使用有序整数数组...集合中元素都是整数类型 集合中元素个数不超过512个 2.4.有序集合 如果同时满足下面2个条件,就使用压缩列表,否则使用跳表。...❞ 2.5.字典 如果同时满足下面2个条件,就使用压缩列表,否则使用hash表。...❝如果lazyfree-lazy-user-del不设置为yes,那redis是否采用异步删除,是要看删除的时机的。...客户端需要保证本地缓存和redis缓存的一致性 2.给热点key加一个随机前缀,让它保存到不同的redis实例上,这样也会存在两个问题: 客户端在访问的时候需要给这个key加前缀 客户端在删除的时候需要根据所有前缀来删除不同实例上保存的这个

    32420

    Python基础篇

    列表是动态的,长度大小不固定,可以随意地增加、删减或者改变元素(mutable)。 而元组是静态的,长度大小固定,无法增加删减或者改变(immutable)。...而对于列表来说,由于其是动态的,我们只需简单地在列表末尾,加入对应元素就可以了。如下操作后,会修改原来列表中的元素,而不会创建新的列表。...l[1:3] # 返回列表中索引从1到2的子列表 [2, 3] tup = (1, 2, 3, 4) tup[1:3] # 返回元组中索引从1到2的子元组 (2, 3) 另外,列表和元组都 可以随意嵌套...当然,现在你写程序时,我还是推荐使用format函数,毕竟这是最新规范,也是官方文档推荐的规范。 也许有人会问,为什么非要使用格式化函数,上述例子用字符串的拼接不也能完成吗?...对于接下来的所有项目,你都能直接使用 Pycharm 来构建。把不同模块放在不同子文件夹里,跨模块调用则是从顶层直接索引,一步到位,非常方便。 我猜,这时你的好奇心来了。

    82350
    领券