华为电商项目面经总结

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 华为电商项目面经总结

今天向大家介绍下面试华为电商项目面经,面试官可是华为公司的大佬哦!

面试问题如下

线程安全的集合

1.Vector

Vector和ArrayList类似,是长度可变的数组,与ArrayList不同的是,Vector是线程安全的,它给几乎所有的public方法都加上了synchronized关键字。由于加锁导致性能降低,在不需要并发访问同一对象时,这种强制性的同步机制就显得多余,所以现在Vector已被弃用。

2.HashTable

HashTable和HashMap类似,不同点是HashTable是线程安全的,它给几乎所有public方法都加上了synchronized关键字,还有一个不同点是HashTable的K,V都不能是null,但HashMap可以,它现在也因为性能原因被弃用了

3.ConcurrentHashMap ConcurrentHashMap和HashTable都是线程安全的集合,它们的不同主要是加锁粒度上的不同。HashTable的加锁方法是给每个方法加上synchronized关键字,这样锁住的是整个Table对象。而ConcurrentHashMap是更细粒度的加锁

在JDK1.8之前,ConcurrentHashMap加的是分段锁,也就是Segment锁,每个Segment含有整个table的一部分,这样不同分段之间的并发操作就互不影响。JDK1.8对此做了进一步的改进,它取消了Segment字段,直接在table元素上加锁,实现对每一行进行加锁,进一步减小了并发冲突的概率。

4.CopyOnWriteArrayList和CopyOnWriteArraySet

它们是加了写锁的ArrayList和ArraySet,锁住的是整个对象,但读操作可以并发执行。

5.除此之外还有ConcurrentSkipListMap、ConcurrentSkipListSet、ConcurrentLinkedQueue、ConcurrentLinkedDeque等,至于为什么没有ConcurrentArrayList,原因是无法设计一个通用的而且可以规避ArrayList的并发瓶颈的线程安全的集合类,只能锁住整个list,这用Collections里的包装类就能办到。

redis线程安全是怎么保证的

Redis是个单线程程序,所以它是线程安全的。

redis穿透以及解决方案

1.缓存空对象会有一个必须考虑的问题:

空值做了缓存,意味着缓存层中存了更多的键,需要更多的内存空间(如果是攻击,问题更严重),比较有效的方法是针对这类数据设置一个较短的过期时间,让其自动剔除。

2.布隆过滤器实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路。但是随着集合中元素的增加,我们需要的存储空间越来越大。同时检索速度也越来越慢,上述三种结构的检索时间复杂度分别为 O(n),O(log n),O(n/k)布隆过滤器的原理是,当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如果这些点有任何一个0,则被检元素一定不在;如果都是1,则被检元素很可能在。这就是布隆过滤器的基本思想。

redis雪崩以及解决方案

缓存雪崩,是指在某一个时间段,缓存集中过期失效。

第一,大多数考虑用加锁或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写,避免缓存失效时对数据库造成太大的压力,虽然能够在一定的程度上缓解了数据库的压力但是与此同时又降低了系统的吞吐量。

第二,分析用户的行为,尽量让缓存失效的时间均匀分布。

第三,如果是因为某台缓存服务器宕机,可以考虑做主备,比如:redis主备,但是双缓存涉及到更新事务的问题,update可能读到脏数据,需要好好解决。

redis竞争资源是怎么解决的

利用redis自带的incr命令

可以使用独占锁的方式,类似操作系统的mutex机制。

使用乐观锁的方式进行解决(成本较低,非阻塞,性能较高)

说说Throadlocal

ThreadLocal用于保存某个线程共享变量:对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量。

多线程死锁问题的解决

线程死锁一般是发生在多个线程的多个锁之间,比如线程A拥有临界区对象LockA的所有权,等待临界区对象LockB;线程B拥有临界区对象LockB的所有权,等待临界区对象LockA;由于两个线程间相互等待各自的锁,并且不释放,就会导致程序一直等待下去,发生死锁;

加锁顺序一致

避免锁未释放的场景

XML中依赖注入几种方式

构造器注入

setter注入

接口注入

实体类中没有getset方法,然后在xml中依赖注入后会报什么错

null

Bean中导入集合需要哪些标签

<list>,<set>,<map>为 TsetUtil 的List、Set、Map集合属性赋值

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
7月前
|
SQL NoSQL 关系型数据库
基础版本抖音(字节跳动青训)
本抖音项目是基于grpc通讯协议开发的高性能微服务,不仅使用gin作为业务层框架,gorm框架作为持久层框架,还使用预编译sql防止sql注入,同时该项目结合连接池技术来构建连接工厂和复用grpc连接来提高系统的性能,这样可以有效的处理高并发场景下的挑战,还可以通过减少频繁创建和销毁grpc连接带来的性能开销
|
消息中间件 设计模式 负载均衡
2023年我凭借这份pdf成功拿到了阿里,腾讯,京东等六家大厂offer
拿到大厂的offer一直是程序员朋友的一个目标,我是如何拿到大厂offer的呢,今天给大家分享我拿到大厂offer的利器,大厂核心知识面试宝典,375页面试宝典,内容囊括jvm,java集合,java多线程并发,java基础,spring原理,微服务,网络,日志,zookeeper,kafka,mongoDB,设计模式,负载均衡,数据库,数据结构,分布式缓存。
68 0
|
消息中间件 设计模式 存储
查漏补缺第六期(京东一面)
前言 目前正在出一个查漏补缺专题系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~ 本专题主要以Java语言为主, 好了, 废话不多说直接开整吧~ Kafka的应用场景有哪些,在项目里是如何应用的 Kafka 是一个高吞吐量、可扩展的分布式流处理平台,主要用于构建实时数据流应用程序和数据管道。以下是一些Kafka的应用场景:
|
Web App开发 搜索推荐 数据安全/隐私保护
极简极速!小米团队力作,难得的良心产品!
电脑端浏览器层出不穷,好用的也有很多选择,Chrome、Firefox、Edge等。
极简极速!小米团队力作,难得的良心产品!
|
设计模式 缓存 算法
互联网大厂考点(阿里+百度+腾讯+字节跳动+美团+京东)
- 01 互联网大厂考点(阿里+百度+腾讯+字节跳动+美团+京东) - 02 Java 面试考点大全(基本功底+常用技术+技术深度+技术经验+学习能力+工作能力+项目经验) - 03 面试真题重现
297 0
|
XML 缓存 NoSQL
华为电商项目面经总结
华为电商项目面经总结
141 0
|
UED
设计新丁战阿里,一个挑剔的UED在阿里的100天
首先把话放在最前面——我是一个很挑剔的人。   在学校念书的时候就是这样,比如因为受不了宿舍嘈杂混乱的环境要去外面租房子住、比如在每天穿梭在校区不同的食堂找食吃还经常去除解馋、比如学校健身房器材种类少又太旧更别提没有一系列健身课程、再比如学校后勤人员常常态度极差像欠她钱一样......所以说,读
6499 0
|
安全
淘宝造物节2017十大神店:一言不合自己造!
买不到心仪球鞋,一言不合自己造,上海男生罗汉干脆在淘宝上做起手绘球鞋; 做正经的书法家太枯燥,一言不合自己造,朱敬一用“段子书法”杀出一片天地; 如今木匠们重款式而轻工艺,一言不合自己造,62岁郑安全专攻榫卯,让“爸爸的木匠小屋”意外走红;中式童装“成人气”十足,一言不合自己造,两个法国人在北京胡同设计“法式唐装”——“tangroulou”,让刘烨家的诺一追爱不已。
2455 0
|
前端开发 Swift iOS开发
携程、阿里、京东、腾讯iOS春招面试过程以及面试题总结!
面经包含:携程、阿里、京东、腾讯 五一假期,春招基本上已经结束了,剩下少量面试和少量流程中。虽然还没有最终决定,不过也还是决定来开个帖子,写一些总结。 楼主是今年春招的时候开始看看面经,真题做的很少,很水=。
2122 0