作者:smarxdray
虾皮 sg 三轮面经(通过)
一面(2021.7.8)
- 【项目】介绍下百度的实习经历
- 用户登录密码存储,哈希和加盐的过程是在前端还是后端
- 浏览器输入 URL 过程
- tcp 连接建立过程
- http 与 https 的区别
- 【项目】介绍下分片降低 redis 热键访问压力
- 写 db 数据如何同步到 cache
- cache key 失效后大量流量请求 db 如何处理(数据存在于 db 种)
- 【项目】介绍下数据库慢查询的优化
- MySQL 索引默认数据结构
- B+树相对 B 树优点
- MySQL 里的主键,外键以及组合索引分别在什么场景下使用
- 为什么实际项目里建议不用外键
- 【设计题】根据查询场景设计索引
- 常见的用来计算哈希的方法
- 如何解决哈希冲突
- 【算法题】实现 LRU cache
- 【算法题】给定数字 N,打印 1~N 中心螺旋矩阵
参考答案 :
- 如何加密传输和存储用户密码 : https://zhuanlan.zhihu.com/p/36603247
- HTTP vs HTTPS(应用层):https://javaguide.cn/cs-basics/network/http&https.html
- 计算机网络常见知识点&面试题(补充):https://javaguide.cn/cs-basics/network/other-network-questions.html
- 安全系列之——主流 Hash 散列算法介绍和使用:https://cloud.tencent.com/developer/news/682510
- Redis 知识点&面试题总结:https://javaguide.cn/database/redis/redis-questions-01.html
- MySQL 知识点&面试题总结 : https://javaguide.cn/database/mysql/mysql-questions-01.html
- 如何在 Java 中实现 LRU 缓存 :https://www.baeldung.com/java-lru-cache
二面(2021.7.16)
- 团队介绍
- 自我介绍
- 印象最深刻的项目
- redis 的 zset 数据结构
- 加盐的目的
- 重放指的是什么
- 介绍下彩虹表,彩虹表为什么叫彩虹表
- 用户登录状态怎么保持
- https 为什么需要证书
- 加盐过程,盐如何存储
- 实现一个向用户展示商品历史价格的网站,
- 百万级别商品,爬虫脚本怎么解决
- 什么样的分布式方案
- 布隆过滤器原理
- 用户量增大,如何提升系统容量
- 消息队列作用
- loadbalancer 如何实现分布式
- 缓存如何实现分布式
- 哈希如何减少重哈希代价
- 如何分析热键
- 增强 db 能力的方案
- 网站会面临的安全问题
- 介绍下 csrf,攻击者如何拿到用户身份,csrf 预防方法,csrf token 如何实现无法伪造
- 如何应对 shopee 钓鱼网站
- 为什么选 sg shopee,国内与 sg 的倾向,有通过渠道了解过 sg 吗
- 字节与百度工作方式的区别,眼下喜欢哪一种
- 反问环节
参考答案(部分参考答案和一面中的重合了,这里就不多放一编了):
- 什么是彩虹表?:https://www.zhihu.com/question/19790488 、密码破解的利器——彩虹表(rainbow table):https://www.jianshu.com/p/732d9d960411
- TikTok 三面:“聊聊 TCP/IP 常见的攻击手段”:https://mp.weixin.qq.com/s/U8S8IEb_rH5FHUKvoBJCUg
- 消息队列知识点&面试题总结 : https://javaguide.cn/high-performance/message-queue/message-queue.html
- 布隆过滤器:https://javaguide.cn/cs-basics/data-structure/bloom-filter/
- 谈谈 redis 的热 key 问题如何解决:https://www.cnblogs.com/rjzheng/p/10874537.html、如何快速定位 Redis 热 key:https://www.infoq.cn/article/3l3zaq4h8xpnom2glsyi
HR 面(2021.7.26)
- 英文自我介绍
- 为什么投递 shopee 职位
- 为什么选择 sg
- sg 介绍
- 反问环节
网易云音乐三轮后端(通过)
一面(2021.8.30)
- 自我介绍
- 【项目】实习项目在技术架构上,除了语言的差别,还有哪些更深入的差异
- 【项目】选择一个实习项目,介绍下具体做的事情
- 【项目】随着活动事件越来越多,如何从后端进行设计上的优化
- 使用 mq 对业务进行异步解耦之后,在消息消费上有哪些需要注意的点
- 【项目】在发放奖励场景下,如何保证消费的幂等性
- 【redis】有了解过 redis 集群如何部署的吗
- 【redis】用 redis 如何实现分布式锁
- 【redis】zset 实现原理是什么
- 【redis】跳表优化的理念是什么
- 【redis】为什么采用跳表,而不使用哈希表或平衡树实现呢?
- 【redis】在数据量比较小时,跳表相较其他数据结构的缺点是什么
- 【项目】数据库是单节点还是分布式的,有做分库分表吗
- 【项目】在你的业务场景下,是怎么进行分库分表的?
- 【分库分表】在查询分库分表的数据时,没有带分库分表的 key,底层查询是怎么样的,对性能有影响吗
- 【分库分表】分库分表下 ID 全局唯一是如何做的?
- 【MySQL】MySQL 联合索引查询时需要注意哪些问题
- 【MySQL】从数据结构角度分析为何需要最左匹配原则
- 【项目】有性能优化案例吗
- 【IO】BIO 和 NIO 的区别是什么
- 【JVM】java gc 算法了解哪些
- 【JVM】可达性分析里哪些对象可以作为 gc root
- 【JVM】类的 static 变量时 gc root 吗,一个普通 map 对象的 key,value 可以被回收吗
- 【JVM】想要 map 里的 value 在 gc 时可以被及时回收,应该对 map 做什么样的改造呢
- 【多线程】java 多线程下的变量可见性有什么解决方案
- 【多线程】阻塞队列里锁的如何实现的,设计阻塞队列时,主要阻塞在哪些操作上
- 【多线程】线程安全的数组和链表有哪些
- 【网络】tcp 协议的连接、断开过程
- 【网络】挥手时为什么需要等待 2 倍 MSL
- 反问环节
参考答案 :
- Redis 知识点&面试题总结:https://javaguide.cn/database/redis/redis-questions-01.html
- 【Redis】拼多多面试官问我 zset 底层是如何实现的,我反手就把跳表的数据结构画了出来:https://segmentfault.com/a/1190000037473381
- 为啥 redis 使用跳表(skiplist)而不是使用 red-black?:https://www.zhihu.com/question/20202931
- 分布式 ID:https://javaguide.cn/distributed-system/distributed-id.html
- 读写分离&分库分表:https://javaguide.cn/high-performance/read-and-write-separation-and-library-subtable.html
- MySQL 知识点&面试题总结:https://javaguide.cn/database/mysql/mysql-questions-01.html
- JVM 垃圾回收详解:https://javaguide.cn/java/jvm/jvm-garbage-collection.html
- Java 并发常见知识点&面试题总结(进阶篇):https://javaguide.cn/java/concurrent/java-concurrent-questions-02.html
- JDK 提供的并发容器总结:https://javaguide.cn/java/concurrent/java-concurrent-collections.html
- 「为什么这么设计系列」为什么 TCP 建立连接需要三次握手:https://draveness.me/whys-the-design-tcp-three-way-handshake/
- 用 Java 如何设计一个阻塞队列,然后说说 ArrayBlockingQueue 和 LinkedBlockingQueue:https://www.cnblogs.com/jimoer/p/14887921.html
二面(2021.9.4)
- 自我介绍
- 哪个实习项目成长比较大
- 【项目】实习项目里主要做了哪些的工作
- 【项目】了解任务系统等项目相关信息
- 【项目】项目中最大的难点是什么
- 【项目】如何保证缓存和数据库的一致性
- 【项目】分布式锁是怎么用的
- 【分布式锁】如果需要一个严格的分布式锁,需要怎么做
- 【分布式锁】如何处理分布式锁因为超时被提前释放的问题
- 【设计题】高并发场景下评论点赞功能的设计(点赞数量须持久化到 db)
- 反问环节
参考答案 :
- 拜托,面试请不要再问我 Redis 分布式锁的实现原理!【石杉的架构笔记】:https://juejin.im/post/5bf3f15851882526a643e207
- 微博架构组面试:类微博点赞系统设计:https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247505978&idx=2&sn=d9190cb5345c5798a07d460811d51c74&chksm=cea197f1f9d61ee772de9c02f2b04f432b4493078152c67626c7bccb48b5ca31b17ca4ec6412&token=1069133552&lang=zh_CN#rd
HR 面(2021.9.8)
- 自我介绍
- base 地偏好
- 还有哪些公司在面试中,面试进展
- 有什么爱好或热爱
- 未来职业规划
- 为什么选择互联网
- 求职过程中在团队或工作氛围上有什么样的想法
- 平时有使用过网易云音乐产品吗
- 平时在什么场景下使用到我们的产品
- 听歌听哪种风格多一点
- 了解乡村音乐吗
- 基于哪些维度对面试公司做出最终的选择
- 期望第一年的收入达到什么范围
- 反问环节
京东后端三轮面经(通过)
一面 (2021.7.28)
- 自我介绍
- 【项目】收获最大的项目,两个项目有什么不一样,自己承担什么角色,实现哪些内容
- 【项目】项目为什么引入 etcd
- 【Java 基础】Java 中的==和 equals 区别
- 【Java 基础】hashmap 的实现原理、1.8 之后的改变
- 【Java 基础】接口和抽象类的区别
- 【Java 基础】可变长参数
- 【Java 新特性】java8 有哪些新特性
- 【Java 多线程】介绍下 ThreadLocal 和使用场景
- 【JVM】jvm 优化工具
- 【设计模式】简单工厂和抽象工厂的区别
- 【设计模式】熟悉的设计模式有哪些
- 【设计模式】优化 if-else 方法
- 【MySQL】MySQL 里行锁和表锁及其特性
- 【MySQL】介绍乐观锁、悲观锁、重入锁、排他锁
- 对方屏幕共享项目中一个源文件,找代码里的优缺点(单例实现的策略模式)
- 【算法题】递归实现单链表反转
- 反问环节
参考答案 :
- Java 基础知识&面试题总结: https://javaguide.cn/java/basis/java-basic-questions-01.html
- 接口和抽象类有什么区别?:https://www.zhihu.com/question/20149818
- Java 集合框架基础知识&面试题总结: https://javaguide.cn/java/collection/java-collection-questions-01.html
- Java 并发常见知识点&面试题总结(进阶篇):https://javaguide.cn/java/concurrent/java-concurrent-questions-02.html
- 设计模式之工厂模式(factory pattern):https://www.cnblogs.com/yssjun/p/11102162.html
- 设计模式总结 :https://www.cnblogs.com/chenssy/p/3357683.html
- 条件语句的多层嵌套问题优化:https://mp.weixin.qq.com/s/7i-TPFovLwrSmbWaIiX8dQ
- MySQL 锁:灵魂七拷问 :https://tech.youzan.com/seven-questions-about-the-lock-of-mysql/、通俗易懂 悲观锁、乐观锁、可重入锁、自旋锁、偏向锁、轻量/重量级锁、读写锁、各种锁及其 Java 实现!:https://zhuanlan.zhihu.com/p/71156910
二面(2021.8.5)
- 自我介绍
- 字节和有取向吗
- 【项目】介绍下 redis 在项目中是怎么使用的?
- 【项目】介绍下 redis 分布式锁项目中有什么作用?怎么实现的?
- 【MySQL】MySQL 优化的方法
- 【Java 多线程】介绍下 ThreadLocal 的原理和使用场景
- 【Java 基础】equals 和 hashcode 区别
- 【Java 基础】java 的基本类型和空间大小
- 【Spring Boot】Spring Boot 自动装配原理
- 【Java 基础】Java I/O 流有用过吗
- 【设计模式】软件设计原则有哪些?
- 【设计模式】介绍下模板方法
- 【设计模式】装饰器模式
- 找工作的标准
- 像从事的方向偏业务还是偏底层框架
- 反问环节
参考答案 :
- MySQL 高性能优化规范建议:https://javaguide.cn/database/mysql/mysql-high-performance-optimization-specification-recommendations.html
- Java 基础知识&面试题总结: https://javaguide.cn/java/basis/java-basic-questions-01.html
- Java 并发常见知识点&面试题总结(进阶篇):https://javaguide.cn/java/concurrent/java-concurrent-questions-02.html
- Spring Boot 自动装配原理:https://javaguide.cn/system-design/framework/spring/spring-boot-auto-assembly-principles.html
- 设计模式总结 :https://www.cnblogs.com/chenssy/p/3357683.html
阿里巴巴后端面经(通过)
【cto线-业务平台事业部】一面(2021.8.11)
- 【闲聊】去年为什么没有接实习offer
- 【闲聊】为什么没有选择直接去字节和百度?两家公司感觉有什么区别?
- 【闲聊】对阿里的印象怎么样
- 【项目】介绍下你在百度实习做的项目,做这个项目过程中有什么难点
- 【项目】讲讲你对依赖倒置原则的理解,你是如何基于这个原则来重构项目代码的?
- 【项目】如何保证重构不会影响正常的业务?
- 【项目】单测的覆盖率有多少?
- 【编程语言】Go 跟 Java 的区别在哪?为什么Docker/Kubernetes们选择Go?
- 【编程语言】协程和线程有什么区别
- 【项目】简单说下单点登录的实现
- 【认证授权】如果 Cookie 禁用的话如何解决?Cookie 和 Session 有什么区别?
- 【认证授权】什么是 Token?什么是 JWT??如何解决token方案无法主动过期的问题?
- 【认证授权】RBAC 模型了解吗?
- 【多线程】Java线程池的原理
- 【JVM】jvm的内存区域?
- 【JVM】垃圾收集算法有哪些?如何判断一个对象是否已经死亡?
- 【设计模式】设计模式了解哪些
参考答案 :
- 再读《重构》- ThoughtWorks 洞见:https://insights.thoughtworks.cn/reread-refactoring/
- 单元测试到底是什么?应该怎么做? - 腾讯技术工程的回答 - 知乎 :https://www.zhihu.com/question/28729261/answer/1058317111
- 为什么Docker/Kubernetes们选择Go?:https://zhuanlan.zhihu.com/p/446697672
- Go 面试官:什么是协程,协程和线程的区别和联系?:https://segmentfault.com/a/1190000040373756
- JWT 身份认证优缺点分析以及常见问题解决方案:https://javaguide.cn/system-design/security/advantages&disadvantages-of-jwt.html
- 认证授权基础:https://javaguide.cn/system-design/security/basis-of-authority-certification.html
- Java线程池学习总结: https://javaguide.cn/java/concurrent/java-thread-pool-summary.html
- Java 内存区域详解:https://javaguide.cn/java/jvm/memory-area.html
- JVM 垃圾回收详解:https://javaguide.cn/java/jvm/jvm-garbage-collection.html
- 设计模式总结 :https://www.cnblogs.com/chenssy/p/3357683.html
【cto线-业务平台事业部】二面(2021.8.20)
- 【闲聊】自我介绍
- 【闲聊】学校里有无发表过论文、专利或者参加过竞赛
- 【闲聊】百度、字节有没有给offer?还有其他offer吗?
- 【项目】百度项目的业务效果怎么样、QPS怎么样?
- 【项目】介绍下用户邀请分享的实现?
- 【JVM】jvm内存分为哪几个区域,哪些是线程私有的,哪些是线程共享的
- 【Java基础】
ClassNotFound
与NoClassDefinedError
有什么区别 - 【多线程】能说下什么是CAS吗?什么是 ABA 问题?ABA 问题怎么解决?
- 【MySQL】MySQL数据库的索引为什么使用B+树而不是B树
- 【Redis】Redis中有哪些数据结构?为啥 redis 使用跳表(skiplist)而不是使用红黑树?
- 【Redis】有没有遇到过缓存被击穿的情况
- 【算法题】leetcode 1478. 安排邮筒
参考答案 :
- ClassNotFoundException 和 NoClassDefFoundError 的区别:https://cloud.tencent.com/developer/article/1153789
- 如何理解ABA问题:https://elsef.com/2020/03/08/如何理解ABA问题/
- AQS 原理以及 AQS 同步组件总结:https://javaguide.cn/java/concurrent/aqs.html
- 深入理解 MySQL 索引底层原理:https://zhuanlan.zhihu.com/p/113917726
- Redis 知识点&面试题总结 :https://javaguide.cn/database/redis/redis-questions-01.html
- 为啥 redis 使用跳表(skiplist)而不是使用红黑树?:https://www.zhihu.com/question/20202931
【cto线-零售云事业部】终面(2021.9.18)
(流程转到该部门)
- 【闲聊】自我介绍
- 【实习】百度实习团队规模,项目流量怎么样
- 【项目】采用哪些方法应对高并发流量
- 【项目】配置缓存的时候有哪些考虑,哪些数据放哪些不放入缓存
- (HR入会)介绍/宣传部门业务
- 反问环节