阿里、美团、拼多多、网易大厂面试之Redis+多线程+JVM+微服务...
mhr18 2024-11-03 13:36 32 浏览 0 评论
非常非常不错的一篇面经文章,文中很多的面试题目都值得我们在面试前刷一遍,强烈推荐阅读3遍以上。如果觉得不错,可以收藏分享一下。(面经没有具体答案,需要大家一起来探讨学习一下。)
美团篇(33道)
- 了解SOA,微服务吗?
- 分布式系统如何负载均衡?如何确定访问的资源在哪个服务器上?
- 设计一个分布式负载均衡缓冲系统,如何快速定位到是那个服务器?
- 如何保证缓冲区和数据库之间的强一致性?
- HashMap高并发情况下会出现什么问题?
- 说一说在浏览器中输入一个url后,直到浏览器显示页面的过程中发生了什么?
- 字符串中句子的反转(比如ABC DEF,输出DEF ABC)
- 给任意二叉树的所有结点加next指针
- 用过反向代理吗?
- 进程间共享内存的方式有哪些?
- linux下如何查看网络端口状态,如何查看内存使用情况?
- ConcurrentHashMap如何扩容?
- 知道java的异常吗?
- 运行时异常如果不处理会怎么样?应该怎么处理运行时异常?
- 写代码:给你5000万个int,求出前1000个最大的数,有2G内存。
- 给你n个不重复的整数,随机找出m个不重复的整数,要求时间和空间复杂度都是O(m)。
- 对于SQL慢查询的优化?
- 用过哪些容器?
- 用过动态代理吗?
- 说说深入理解JVM中印象最深刻的章节
- 堆和栈中存的是什么?static修饰的遍历存在哪里?
- 说说《Effective Java》中你印象最深的三条和你的理解
- 你觉得你哪一块只是最熟悉
- 那你说说HashMap的内部实现;
- HashMap是线程安全的吗?
- 那ConcurrentHashMap内部是如何实现的?每个segment是个什么数据结构?
- 你的项目中用到哪些技术?
- 说说你用了它的什么?
- Spring的优点?Spring AOP的原理?Spring如何实现解耦合?
- 对链表了解吗?说说他们的区别?
- 会做链表两个结点的交换吗?
- 再写一个,给你一个链表和一个整数k
- 说说mybatis配置了xml过后是如何完成数据库操作的?
Redis
- redis 和 memcached 什么区别?
- 为什么高并发下有时单线程的 redis 比多线程的memcached 效率要高?
- redis 主从复制如何实现的?
- redis 的集群模式如何实现?
- redis 的 key 是如何寻址的?
- 使用 redis 如何设计分布式锁?说一下实现思路?使用 zk 可以吗?如何实现?这两种有什么区别?
- 知道 redis 的持久化吗?底层如何实现的?有什么优点缺点?
- redis 过期策略都有哪些?LRU 算法知道吗?写一下 java 代码实现?
- 缓存穿透、缓存击穿、缓存雪崩解决方案?
- 在选择缓存时,什么时候选择 redis,什么时候选择 memcached
- 缓存与数据库不一致怎么办?
- 主从数据库不一致如何解决
- Redis 常见的性能问题和解决方案
- Redis 的数据淘汰策略有哪些?
- Redis 当中有哪些数据结构?
- 假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?
- ...............
拼多多篇(40道)
- 给一个函数,返回 0 和 1,概率为 p 和 1-p,请你实现一个函数,使得返回 01 概率一样。
- 10 亿个 url,每个 url 大小小于 56B,要求去重,内存 4G。
- 把一个 bst 转化成一个双向链表。
- http 和 https 区别,https 在请求时额外的过程,https 是如何保证数据安全的。
- IP 地址子网划分。
- POST 和 GET 区别。
- 硬链接和软连接区别。
- DNS 解析过程。
- kill 用法,某个进程杀不掉的原因(进入内核态,忽略 kill 信号)。
- linux 用过的命令。
- 系统管理命令(如查看内存使用、网络情况)。
- 管道的使用。
- grep 的使用,一定要掌握,每次都会问在文件中查找。
- shell 脚本。
- find 命令。
- awk 使用。
- Linux 下的一些指令,(进程id), (进程 id),(进程id),?(上一条命令退出时状态),怎么查看进程,按照内存大小,CPU 占用排序等等。(大写 M 和大写 P)。
- http 的 get 和 post 方法。
- 介绍下你所了解的 epoll。
- 数据库 sql 的了解程度。
- 项目中遇到的问题,自己咋解决的等等。
- 手写一个全排列。
- B树和B+树。
- 介绍一下 Hash,怎么解决冲突。
- 进程间的通信,共享内存方式的优缺点。
- 说下你平时看的一些技术博客,书籍。
- linux 下的一些指令。
- 工作中你觉得最不爽的事情是什么。
- 说下你的优缺点。
- 有没有想过去创业公司。
- 写个 strcpy 函数。
- 说说你自己的性格。
- 给你一个系统(面试官好像是无人车部门的),后台的逻辑已经实现了,但是前端加载很慢,怎么检测。
- 以后可能要学习很多新技术,你怎么看。
- 项目中遇到的困难(提前想好,并且把实现或者优化方法说清楚)。
- 系统的量级、pv、uv 等。
- 应对高并发的解决办法(分布式)。
- 在项目中主要负责了哪些工作。
- nginx 的负载均衡。
- 分布式缓存的一致性,服务器如何扩容(哈希环)。
多线程
- 现在有 T1、T2、T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行?
- 在 Java 中 Lock 接口比 synchronized 块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
- 在 java 中 wait 和 sleep 方法的不同?
- 用 Java 实现阻塞队列
- 用 Java 写代码来解决生产者——消费者问题
- 用 Java 编程一个会导致死锁的程序,你将怎么解决?
- 什么是原子操作,Java 中的原子操作是什么?
- Java 中的 volatile 关键是什么作用?怎样使用它?在 Java 中它跟 synchronized 方法有什么不同?
- 什么是竞争条件?你怎样发现和解决竞争?
- 你将如何使用 threaddump?你将如何分析 Thread dump?
- Java 中你怎样唤醒一个阻塞的线程?
- 为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方法?
- 在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?
- 什么是不可变对象,它对写并发应用有什么帮助?
- 你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的?
- 使用synchronized修饰静态方法和非静态方法有什么区别。
- 简述ConcurrentLinkedQueue和LinkedBlockingQueue的用处和不同之处。
- 导致线程死锁的原因?
- 怎么解除线程死锁。
- 非常多个线程(可能是不同机器),相互之间需要等待协调,才能完成某种工作,问怎么设计这种协调方案。
- 用过读写锁吗,原理是什么,一般在什么场景下用。
- 开启多个线程,如果保证顺序执行,有哪几种实现方式,或者如何保证多个线程都执行完再拿到结果。
- 延迟队列的实现方式,delayQueue和时间轮算法的异同。
更多面试资料、架构学习文档需要获取的朋友们可以转发分享此文,关注小编后台私信:“面试资料”即可一并获取。
网易篇(72道)
- HashMap的源码,实现原理,JDK8中对HashMap做了怎样的优化。
- HaspMap扩容是怎样扩容的,为什么都是2的N次幂的大小。
- HashMap,HashTable,ConcurrentHashMap的区别。
- 极高并发下HashTable和ConcurrentHashMap哪个性能更好,为什么,如何实现的。
- HashMap在高并发下如果没有处理线程安全会有怎样的安全隐患,具体表现是什么。
- java中四种修饰符的限制范围。
- Object类中的方法。
- 接口和抽象类的区别,注意JDK8的接口可以有实现。
- 动态代理的两种方式,以及区别。
- Java序列化的方式。
- 传值和传引用的区别,Java是怎么样的,有没有传值引用。
- 一个ArrayList在循环过程中删除,会不会出问题,为什么。
- @transactional注解在什么情况下会失效,为什么。
- B+树
- 快速排序,堆排序,插入排序(其实八大排序算法都应该了解
- 一致性Hash算法,一致性Hash算法的应用
- JVM的内存结构。
- JVM方法栈的工作过程,方法栈和本地方法栈有什么区别。
- JVM的栈中引用如何和堆中的对象产生关联。
- 可以了解一下逃逸分析技术。
- GC的常见算法,CMS以及G1的垃圾回收过程,CMS的各个阶段哪两个是Stop the world的,CMS会不会产生碎片,G1的优势。
- 标记清除和标记整理算法的理解以及优缺点。
- eden survivor区的比例,为什么是这个比例,eden survivor的工作过程。
- JVM如何判断一个对象是否该被GC,可以视为root的都有哪几种类型。
- 强软弱虚引用的区别以及GC对他们执行怎样的操作。
- Java是否可以GC直接内存。
- Java类加载的过程。
- 双亲委派模型的过程以及优势。
- 常用的JVM调优参数。
- dump文件的分析。
- Java有没有主动触发GC的方式(没有)。
- Java实现多线程有哪几种方式。
- Callable和Future的了解。
- 线程池的参数有哪些,在线程池创建一个线程的过程。
- volitile关键字的作用,原理。
- synchronized关键字的用法,优缺点。
- Lock接口有哪些实现类,使用场景是什么。
- 可重入锁的用处及实现原理,写时复制的过程,读写锁,分段锁(ConcurrentHashMap中的segment)。
- 悲观锁,乐观锁,优缺点,CAS有什么缺陷,该如何解决。
- ABC三个线程如何保证顺序执行。
- 线程的状态都有哪些。
- sleep和wait的区别。
- notify和notifyall的区别。
- ThreadLocal的了解,实现原理。
- 常见的数据库优化手段索引的优缺点,什么字段上建立索引数据库连接池。
- durid的常用配置。
- TCP,UDP区别。三次握手,四次挥手,为什么要四次挥手。
- 长连接和短连接。
- 连接池适合长连接还是短连接。
- 观察者模式代理模式单例模式,有五种写法,可以参考文章单例模式的五种实现方式可以考Spring中使用了哪些设计模式
- 分布式事务的控制。
- 分布式锁如何设计。
- 分布式session如何设计。
- dubbo的组件有哪些,各有什么作用。
- zookeeper的负载均衡算法有哪些。
- dubbo是如何利用接口就可以通信的。
- redis和memcached的区别。
- redis支持哪些数据结构。
- redis是单线程的么,所有的工作都是单线程么。
- redis如何存储一个String的。
- redis的部署方式,主从,集群。
- redis的哨兵模式,一个key值如何在redis集群中找到存储在哪里。
- redis持久化策略。
- SpringMVC的Controller是如何将参数和前端传来的数据一一对应的。
- Mybatis如何找到指定的Mapper的,如何完成查询的。
- Quartz是如何完成定时任务的。
- 自定义注解的实现。
- Spring使用了哪些设计模式。
- Spring的IOC有什么优势。
- Spring如何维护它拥有的bean。
- 一些较新的东西JDK8的新特性,流的概念及优势,为什么有这种优势。
- 区块链了解如何设计双11交易总额面板,要做到高并发高可用
JVM
- JVM 内存分哪几个区,每个区的作用是什么?
- 如和判断一个对象是否存活?(或者 GC 对象的判定方法)
- 简述 Java 垃圾回收机制?
- Java 中垃圾收集的方法有哪些?
- Java 内存模型
- Java 类加载过程?
- 简述 Java 类加载机制?
- 类加载器双亲委派模型机制?
- 什么是类加载器,类加载器有哪些?
- 简述 Java 内存分配与回收策率以及 Minor GC 和Major GC?
蚂蚁金服篇(39道)
- HashMap&ConcurrentHashMap
- 再谈谈一致hash算法?
- 乐观锁&悲观锁?
- 可重入锁&Synchronize?
- 事务四大特性?
- 事务的二段提交机制?
- 聚簇索引&非聚簇索引?
- 用自己的实践经历说一下索引的使用场景(说一个就要举一个例子)?
- 当前读&快照读?
- 类加载过程?
- 双亲委派机制及使用原因?
- 说说GC算法?
- Http&Https的区别
- Https的加密方式
- 线程池的核心参数和基本原理
- 线程池的调优策略
- 说说自己参与的项目,技术难度在哪里?
- Collections.sort底层排序方式?
- 排序稳定性?
- 具体场景的排序策略?
- Http请求过程,DNS解析过程
- 三次握手四次挥手
- 简述线程池和并发工具的使用?
- 数据库索引原理
- 频繁老年代回收怎么分析解决
- Spring IOC、AOP?
- 讲讲SpringBoot/SpringCloud的一些应用?
- 阻塞队列不用java提供的自己怎么实现,condition和wait不能用
- 拥塞窗口讲一讲,为什么要用慢启动算法
- 负载均衡的原理?
- Redis的数据一致性问题(分布式多节点环境 & 单机环境)?
- 讲讲docker容器?
- 如何实现何高并发下的削峰,限流?
- 项目中用的中间件的理解(Dubbo、MQ、Redis、kafka、zk)
- 服务器雪崩是怎么造成的?之前有这样的经历吗?怎么防备?
- 高并发架构的设计思路
- 以前项目中遇到的最大问题和解决策略
- 生活中遇到的最大的挫折
- 生活中遇到的最大的令你最有成就感的事情
Spring全家桶(SpringCloud、Docker)
Spring
- 不同版本的 Spring Framework 有哪些主要功能?
- 什么是 Spring Framework?
- 列举 Spring Framework 的优点。
- Spring Framework 有哪些不同的功能?
- Spring Framework 中有多少个模块,它们分别是什么?
- 什么是 Spring 配置文件?
- Spring 应用程序有哪些不同组件?
- 使用 Spring 有哪些方式?
- 什么是 Spring IOC 容器?
- 什么是依赖注入?
- spring 中有多少种 IOC 容器?
- 什么是 spring bean?
- spring 提供了哪些配置方式?
- spring 支持集中 bean scope?
- spring bean 容器的生命周期是什么样的?
- 什么是 spring 的内部 bean?
- 什么是基于注解的容器配置?
- 如何在 spring 中启动注解装配?
- spring DAO 有什么用?
- spring JDBC API 中存在哪些类?
- 列举 spring 支持的事务管理类型
- 什么是 AOP?
- 什么是 Aspect?
- AOP 有哪些实现方式?
- Spring AOP and AspectJ AOP 有什么区别?
Docker
- 什么是Docker?
- 如何使用Docker构建与环境无关的系统?
- Dockerfile中的命令COPY和ADD命令有什么区别?
- 什么是Docker镜像?
- 什么是Docker容器?
- 什么是Docker Hub?
- Docker容器在任何给定时间点可以处于什么状态?
- 有没有办法识别Docker容器的状态?
- Dockerfile中最常见的指令是什么?
- 什么类型的应用程序 - 无状态或有状态更适合Docker容器?
- Docker Image和Layer有什么区别?
- 什么是虚拟化?
- 什么是管理程序?
- 什么是Docker Swarm?
- 你将如何监控生产中的Docker?
更多面试专题答案、实战学习文档,需要获取的朋友们可以转发分享此文,关注小编后台私信:“面试资料”即可一并获取。
相关推荐
- 订单超时自动取消业务的 N 种实现方案,从原理到落地全解析
-
在分布式系统架构中,订单超时自动取消机制是保障业务一致性的关键组件。某电商平台曾因超时处理机制缺陷导致日均3000+订单库存锁定异常,直接损失超50万元/天。本文将从技术原理、实现细节、...
- 使用Spring Boot 3开发时,如何选择合适的分布式技术?
-
作为互联网大厂的后端开发人员,当你满怀期待地用上SpringBoot3,准备在项目中大显身手时,却发现一个棘手的问题摆在面前:面对众多分布式技术,究竟该如何选择,才能让SpringBoot...
- 数据库内存爆满怎么办?99%的程序员都踩过这个坑!
-
你的数据库是不是又双叒叕内存爆满了?!服务器监控一片红色警告,老板在群里@所有人,运维同事的电话打爆了手机...这种场景是不是特别熟悉?别慌!作为一个在数据库优化这条路上摸爬滚打了10年的老司机,今天...
- springboot利用Redisson 实现缓存与数据库双写不一致问题
-
使用了Redisson来操作Redis分布式锁,主要功能是从缓存和数据库中获取商品信息,以下是针对并发时更新缓存和数据库带来不一致问题的解决方案1.基于读写锁和删除缓存策略在并发更新场景下,...
- 外贸独立站数据库炸了?对象缓存让你起死回生
-
上周黑五,一个客户眼睁睁看着服务器CPU飙到100%——每次页面加载要查87次数据库。这让我想起2024年Pantheon的测试:Redis缓存能把WooCommerce查询速度提升20倍。跨境电商最...
- 手把手教你在 Spring Boot3 里纯编码实现自定义分布式锁
-
为什么要自己实现分布式锁?你是不是早就受够了引入各种第三方依赖时的繁琐?尤其是分布式锁这块,每次集成Redisson或者Zookeeper,都得额外维护一堆配置,有时候还会因为版本兼容问题头疼半...
- 如何设计一个支持百万级实时数据推送的WebSocket集群架构?
-
面试解答:要设计一个支持百万级实时数据推送的WebSocket集群架构,需从**连接管理、负载均衡、水平扩展、容灾恢复**四个维度切入:连接层设计-**长连接优化**:采用Netty或Und...
- Redis数据结构总结——面试最常问到的知识点
-
Redis作为主流的nosql存储,面试时经常会问到。其主要场景是用作缓存,分布式锁,分布式session,消息队列,发布订阅等等。其存储结构主要有String,List,Set,Hash,Sort...
- skynet服务的缺陷 lua死循环
-
服务端高级架构—云风的skynet这边有一个关于云风skynet的视频推荐给大家观看点击就可以观看了!skynet是一套多人在线游戏的轻量级服务端框架,使用C+Lua开发。skynet的显著优点是,...
- 七年Java开发的一路辛酸史:分享面试京东、阿里、美团后的心得
-
前言我觉得有一个能够找一份大厂的offer的想法,这是很正常的,这并不是我们的饭后谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司...
- mysql mogodb es redis数据库之间的区别
-
1.MySQL应用场景概念:关系型数据库,基于关系模型,使用表和行存储数据。优点:支持ACID事务,数据具有很高的一致性和完整性。缺点:垂直扩展能力有限,需要分库分表等方式扩展。对于复杂的查询和大量的...
- redis,memcached,nginx网络组件
-
1.理解阻塞io,非阻塞io,同步io,异步io的区别2.理解BIO和AIO的区别io多路复用只负责io检测,不负责io操作阻塞io中的write,能写多少是多少,只要写成功就返回,譬如准备写500字...
- SpringBoot+Vue+Redis实现验证码功能
-
一个小时只允许发三次验证码。一次验证码有效期二分钟。SpringBoot整合Redis...
- AWS MemoryDB 可观测最佳实践
-
AWSMemoryDB介绍AmazonMemoryDB是一种完全托管的、内存中数据存储服务,专为需要极低延迟和高吞吐量的应用程序而设计。它与Redis和Memcached相似,但具有更...
- 从0构建大型AI推荐系统:实时化引擎从工具到生态的演进
-
在AI浪潮席卷各行各业的今天,推荐系统正从幕后走向前台,成为用户体验的核心驱动力。本文将带你深入探索一个大型AI推荐系统从零起步的全过程,揭示实时化引擎如何从单一工具演进为复杂生态的关键路径。无论你是...
你 发表评论:
欢迎- 一周热门
-
-
Redis客户端 Jedis 与 Lettuce
-
高并发架构系列:Redis并发竞争key的解决方案详解
-
redis如何防止并发(redis如何防止高并发)
-
Java SE Development Kit 8u441下载地址【windows版本】
-
开源推荐:如何实现的一个高性能 Redis 服务器
-
redis安装与调优部署文档(WinServer)
-
Redis 入门 - 安装最全讲解(Windows、Linux、Docker)
-
一文带你了解 Redis 的发布与订阅的底层原理
-
Redis如何应对并发访问(redis控制并发量)
-
Oracle如何创建用户,表空间(oracle19c创建表空间用户)
-
- 最近发表
- 标签列表
-
- oracle位图索引 (74)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (59)
- oracle主从同步 (56)
- oracle 乐观锁 (53)
- redis 命令 (83)
- php redis (97)
- redis 存储 (67)
- redis 锁 (74)
- 启动 redis (73)
- redis 时间 (60)
- redis 删除 (69)
- redis内存 (64)
- redis并发 (53)
- redis 主从 (71)
- redis同步 (53)
- redis结构 (53)
- redis 订阅 (54)
- redis 登录 (62)
- redis 面试 (58)
- redis问题 (54)
- 阿里 redis (67)
- redis的缓存 (57)
- lua redis (59)
- redis 连接池 (64)