zhanbiao 发表于 2021-2-17 21:21:43

美团、腾讯、头条、滴滴面试:并发+MySQL+Redis+Nginx+算法

非常非常不错的一篇面经文章,文中很多的面试题目都值得我们在面试前刷一遍,强烈推荐阅读3遍以上。如果觉得不错,可以收藏分享一下。(面经没有具体答案,需要大家一起来探讨学习一下。)
美团面试常问


[*]java虚拟机内存模型
[*]内存溢出一般发生在哪个区?永久代会不会导致内存溢出?
[*]动态加载类的框架了解哪些?
[*]动态代理一般有哪几种实现方式?动态代理的应用场景有哪些?
[*]栈会不会溢出?栈溢出一般抛什么异常?jvm在哪里设置栈的大小?设置的参数是什么?
[*]用过哪些命令查看jvm的状态、堆栈信息?
[*]jvm的垃圾回收机制?
[*]java类加载机制?如何实现自定义类加载器?findClass与loadClass的区别?
[*]String、StringBuffer、StringBuilder的区别?对应的使用场景?
[*]如何实现不可变的类?
[*]浅复制和深复制?怎样实现深复制?
[*]HashMap、HashTable、ConcurrentHashMap的区别?
[*]CAS是一种什么样的同步机制?
[*]NIO的原理,包括哪几个组件?
[*]简单介绍一下java的反射机制?反射在哪些地方有应用场景?
[*]spring加载bean的流程?
[*]java线程池?线程池构造函数的几个参数含义?keepAliveTime解释一下?
[*]一个接口,要去调用另外5个接口,每一个接口都会返回数据给这个调用接口,调用接口要对数据进行合并并返回给上层。这样一种场景可能用到并发包下的哪些类?你会怎么去实现这样的业务场景?
[*]CountDownLatch和CyclicBarrier的区别?
[*]线程加锁有哪些方式?synchronized和lock的区别?
[*]volatile关键字的作用?为什么使用AtomicLong而不使用Long?AtomicLong的底层是怎么实现的?
[*]mysql的存储引擎有哪几种?
[*]sql优化有哪些着手点?组合索引的最左前缀原则的含义?
[*]springmvc处理请求的流程?
[*]spring的事务怎么使用?事务回滚?自定义异常?
[*]脏读?幻读?
[*]tcp四次挥手的过程?TIME_WAIT为什么至少设置两倍的MSL时间?
[*]get和post请求的区别?
[*]cookie和session的请求?
[*]了解哪些开源的中间件?缓存?消息?分布式框架?
[*]用到过哪些设计模式?单例模式的实现?
[*]数据库的事务实现原理、操作过程、如何做到事物之间的独立性等问题
[*]数据库的脏读,幻读,不可重复读出现的原因原理,解决办法
[*]数据库的隔离级别、MVCC
[*]乐观锁、悲观锁、互斥锁、读写锁的原理实现与区别
[*]线程的生命周期
[*]一致性hash算法原理与应用
[*]CAP原则
[*]CAS操作
[*]分布式raft算法
腾讯篇

Java基础

[*]JAVA中的几种基本数据类型是什么,各自占用多少字节。
[*]String类能被继承吗,为什么。
[*]String,Stringbuffer,StringBuilder的区别。
[*]ArrayList和LinkedList有什么区别。
[*]讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当new的时候,他们的执行顺序。
[*]用过哪些Map类,都有什么区别,HashMap是线程安全的吗,并发下使用的Map是什么,他们内部原理分别是什么,比如存储方式,hashcode,扩容,默认容量等。
[*]JAVA8的ConcurrentHashMap为什么放弃了分段锁,有什么问题吗,如果你来设计,你如何设计。
[*]有没有有顺序的Map实现类,如果有,他们是怎么保证有序的。
[*]抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么。
[*]继承和聚合的区别在哪。
[*]IO模型有哪些,讲讲你理解的nio ,他和bio,aio的区别是啥,谈谈reactor模型。
[*]反射的原理,反射创建类实例的三种方式是什么。
[*]反射中,Class.forName和ClassLoader区别 。
[*]描述动态代理的几种实现方式,分别说出相应的优缺点。
[*]动态代理与cglib实现的区别。
[*]为什么CGlib方式可以对接口实现代理。
[*]final的用途。
[*]写出三种单例模式实现 。
[*]如何在父类中为子类自动完成所有的hashcode和equals实现?这么做有何优劣。
[*]请结合OO设计理念,谈谈访问修饰符public、private、protected、default在应用设计中的作用。
[*]深拷贝和浅拷贝区别。
[*]数组和链表数据结构描述,各自的时间复杂度。
[*]error和exception的区别,CheckedException,RuntimeException的区别。
[*]请列出5个运行时异常。
[*]在自己的代码中,如果创建一个java.lang.String类,这个类是否可以被类加载器加载?为什么。
[*]说一说你对java.lang.Object对象中hashCode和equals方法的理解。在什么场景下需要重新实现这两个方法。
[*]在jdk1.5中,引入了泛型,泛型的存在是用来解决什么问题。
[*]这样的a.hashcode() 有什么用,与a.equals(b)有什么关系。
[*]有没有可能2个不相等的对象有相同的hashcode。
[*]Java中的HashSet内部是如何工作的。
[*]什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决。
[*]java8的新特性。
JVM

[*]什么情况下会发生栈内存溢出。
[*]JVM的内存结构,Eden和Survivor比例。
[*]JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为Eden和Survivor。
[*]JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代,说说你知道的几种主要的JVM参数。
[*]你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms和G1,包括原理,流程,优缺点。
[*]垃圾回收算法的实现原理。
[*]当出现了内存溢出,你怎么排错。
[*]JVM内存模型的相关知识了解多少,比如重排序,内存屏障,happen-before,主内存,工作内存等。
[*]简单说说你了解的类加载器,可以打破双亲委派么,怎么打破。
[*]讲讲JAVA的反射机制。
[*]你们线上应用的JVM参数有哪些。
[*]g1和cms区别,吞吐量优先和响应优先的垃圾收集器选择。
[*]怎么打出线程栈信息。
开源框架

[*]简单讲讲tomcat结构,以及其类加载器流程,线程模型等。
[*]tomcat如何调优,涉及哪些参数 。
[*]讲讲Spring加载流程。
[*]Spring AOP的实现原理。
[*]讲讲Spring事务的传播属性。
[*]Spring如何管理事务的。
[*]Spring怎么配置事务(具体说出一些关键的xml 元素)。
[*]说说你对Spring的理解,非单例注入的原理?它的生命周期?循环注入的原理,aop的实现原理,说说aop中的几个术语,它们是怎么相互工作的。
[*]Springmvc 中DispatcherServlet初始化过程。
[*]netty的线程模型,netty如何基于reactor模型上实现的。
[*]为什么选择netty。
[*]什么是TCP粘包,拆包。解决方式是什么。
[*]netty的fashwheeltimer的用法,实现原理,是否出现过调用不够准时,怎么解决。
[*]netty的心跳处理在弱网下怎么办。
[*]netty的通讯协议是什么样的。
[*]springmvc用到的注解,作用是什么,原理。
[*]springboot启动机制。
操作系统

[*]Linux系统下你关注过哪些内核参数,说说你知道的。
[*]Linux下IO模型有几种,各自的含义是什么。
[*]epoll和poll有什么区别。
[*]平时用到哪些Linux命令。
[*]用一行命令查看文件的最后五行。
[*]用一行命令输出正在运行的java进程。
[*]介绍下你理解的操作系统中线程切换过程。
[*]进程和线程的区别。
[*]top 命令之后有哪些内容,有什么作用。
[*]线上CPU爆高,请问你如何找到问题所在。
头条篇


[*]5个人去一个海岛寻宝,最后一共找到了100枚金币。他们约定了一个分配方案。
[*] 给你一个有序整数数组,数组中的数可以是正数、负数、零,请实现一个函数,这个函数返回一个整数:返回这个数组所有数的平方值中有多少种不同的取值。
[*]一个环有10个节点,编号0-9。从0点出发,走N步又能回到0点,共有多少种走法?
[*]一个乱序数组,求第K大的数。排序方式使用字典序。
[*]一棵二叉树,求最大通路长度。(即最大左右子树高度之和)
[*]进程和线程的区别,使用线程真的能节省时间?
[*]go协程的调度方式,使用协程真的能节省时间?
[*]水平触发边沿触发的区别?在边沿触发下,一个socket有500的数据,已读取200然后不再处理,是不是剩下的300就永远无法读取?
[*]有函数如下,输入1,返回什么?
[*]设计http协议,A端发送 AAAA,至少让B端知道AAAA已发送完成。
[*]流量总入口为api_gateway,api_gateway挂了会导致全部挂挂,用什么机制增大可用性?
[*]mysql为什么要用b+树,不用平衡二叉树做索引结构?
[*]创建数据库索引应该怎么考虑?
[*]使用int 做primary key和使用string 有什么优劣?
[*]数据库分表的方法?
[*]表结构,订单纪录如下,写一个语句,求卖的最好的 top 10 product_id。
[*]微服务,A服务请求B服务B1接口,B1接口又请求A服务A2接口。会不会有问题?
[*]不使用高级工具,只使用Linux自带的工具,你会如何debug?
[*]如何预估一个mysql语句的性能?
[*]go函数中,返回值未命名,发生了panic,但是在函数内recover了。函数返回什么值?
[*]socket中,在tcp协议层面,数据分为10个报文发放。1-7次很顺利,第8次丢失。这次通信一定失败吗?如果第8次数据会重发,那在接收端是不是:先读取到1-7次的数据,然后读取到8-10次的数据?还是9-10次的数据会先到达?
[*] free -h,buffers 和cached有什么不同
[*]后台进程有什么特点,如果要你设计一个进程是后台进程,你会考虑什么
[*]僵尸进程是什么,如果产生一个僵尸进程,如何查找僵尸进程
[*]孤儿进程是什么
[*]一个进程有20个线程,在某个线程中调用fork,新的进程会有20个线程吗?
[*] tcp/ip 流量控制和拥塞控制
[*]301/302有什么区别?应用上有什么异同。
[*]50X相关错误码的内涵是什么?
[*]close wait和time wait是什么?如何排查?有什么意义?
[*]http req和resp的中数据有哪些
[*] 什么是连接的半打开,半关闭状态
[*]假如一个业务依赖单点redis,此redis故障将导致业务不可用,如何改进
[*]redis sharding有哪些做法
[*]当大量数据要求用redis保存,单机单点难以满足需要,设计(换寻找)一个负载均衡的方案
[*]当redis 采用hash做sharding,现在有8个节点,负载方案是 pos = hash(key) % 8,然后保存在pos节点上。这样做有什么好处坏处?当8个节点要扩充到10个节点,应该怎么办?有什么更方便扩充的方案吗?(一致性hash, presharding)
[*]如何保证redis和数据库数据的一致性。比如用户名既保存在数据库,又保存在redis做缓存。有如下操作 update_db(username); update_redis(username)。但是执行update_db后故障,update_redis没有执行。有什么简单办法解决这个问题。
[*]数据库表包含三列:广告编号ad_id,广告开始投放时间ad_start,广告投放结束时间ad_end。用一行SQL语句查询给定时间段内存在的广告。
[*]讲讲MapReduce的原理。
[*] 举出几种进程通信、线程通信的方式。
[*]对列表中每一个元素找出比它大的第一个元素:输入一个listin,返回一个listout。对于任意listin,将满足 y > x 且 listin > listin 的第一个 listin 值作为 listout 的值。时间复杂度限制为O(n)。
滴滴篇


[*]B+树、B-树的区别?
[*]数据库隔离级别,幻读和不可重复读的区别?
[*]有hell, well, hello, world等字符串组,现在问能否拼接成helloworld,代码实现。
[*]快排算法实现
[*] 线程安全的单例模式
[*]25匹马赛跑,有一个赛场,只有五个赛道,没有计时器,只能通过目测来记录快慢,求出第三3快的马要多少场比赛?
[*]kmp算法next数组的求解思路
[*]数组中有三个数字出现超过3/4,求这三个数字?
[*]1到n+2个数组中缺了两个数,如何用O(n)时间,O(1)空间找到这两个数字。
[*]一条线段长为1,随机选两个点,将改线段分为三段,三段能成三角形的概率是多少?
[*]有一个教授,他三个学生,脑袋背后分别各写了一个数字,其中一个数字是另外两个数字的和,经过几轮后,有一个学生猜出了自己的数字请问是什么原因?
[*]B+树做索引时,B+树通常高度为多少层?要参考哪些条件?
并发编程篇

1、线程与进程的区别?
2、什么是多线程中的上下文切换?
3、死锁与活锁的区别,死锁与饥饿的区别?
4、什么是Executors框架?
5、什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?
6、什么是Callable和Future?
7、什么是FutureTask?
8、什么是竞争条件?你怎样发现和解决竞争?
9、为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?
10、Java中你怎样唤醒一个阻塞的线程?
11、java中有几种方法可以实现一个线程?
12、如何停止一个正在运行的线程?
13、notify()和notifyAll()有什么区别?
14、什么是Daemon线程?它有什么意义?
15、乐观锁和悲观锁的理解及如何实现,有哪些实现方式?
针对以上问题,小编整理了一份并发编程的实战学习文档以及面试答案,整理不易,诚意分享,有需要的朋友帮忙转发此,关注小编+后台私信“资料”即可获取资料领取方式!






MySQL篇


[*]主键 超键 候选键 外键
[*]数据库事务的四个特性及含义
[*]视图的作用,视图可以更改么?
[*] drop,delete与truncate的区别
[*]索引的工作原理及其种类
[*]连接的种类
[*]数据库范式
[*]数据库优化的思路
[*]存储过程与触发器的区别
针对以上问题,小编整理了一份MySQL面试答案。关注小编后台私信“资料”获取。



Redis篇


[*]使用Redis有哪些好处?
[*]redis相比memcached有哪些优势?
[*]redis常见性能问题和解决方案
[*]MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据
[*]Memcache与Redis的区别都有哪些?
[*]Redis 常见的性能问题都有哪些?如何解决?
[*]redis 最适合的场景
[*] Redis的同步机制了解么?
[*]是否使用过Redis集群,集群的原理是什么?
[*]redis集群如何保证一致性?
针对以上问题,小编整理了一份Redis的实战学习文档以及面试答案,整理不易,诚意分享,有需要的朋友帮忙转发此文,关注小编+后台私信“资料”即可获取资料领取方式!








Nginx篇


[*]请解释一下什么是Nginx?
[*]请列举Nginx的一些特性?
[*]请列举Nginx和Apache 之间的不同点?
[*]请解释Nginx如何处理HTTP请求。
[*] 在Nginx中,如何使用未定义的服务器名称来阻止处理请求?
[*] 使用“反向代理服务器”的优点是什么?
[*]请列举Nginx服务器的最佳用途。
[*] 请解释Nginx服务器上的Master和Worker进程分别是什么?
[*]请解释你如何通过不同于80的端口开启Nginx?
[*]请解释是否有可能将Nginx的错误替换为502错误、503?
[*]在Nginx中,解释如何在URL中保留双斜线?
[*]请解释ngx_http_upstream_module的作用是什么?
[*]请解释什么是C10K问题,后来是怎么解决的?
[*]请陈述stub_status和sub_filter指令的作用是什么?
[*]解释Nginx是否支持将请求压缩到上游?
[*] 解释如何在Nginx中获得当前的时间?
[*]用Nginx服务器解释-s的目的是什么?
[*]解释如何在Nginx服务器上添加模块?
[*] nginx中多个work进程是如何监听同一个端口的?如何处理客户连接的惊群问题?
[*]nginx程序的热更新是如何做的?
针对以上问题,小编整理了一份Nginx的实战学习文档以及面试答案,整理不易,诚意分享,有需要的朋友帮忙转发此,关注小编+后台私信“资料”即可获取资料领取方式!








算法篇


[*]10亿个数字里里面找最小的10个。
[*]有1亿个数字,其中有2个是重复的,快速找到它,时间和空间要最优。
[*]2亿个随机生成的无序整数,找出中间大小的值。
[*]给一个不知道长度的(可能很大)输入字符串,设计一种方案,将重复的字符排重。
[*]遍历二叉树。
[*]有3n+1个数字,其中3n个中是重复的,只有1个是不重复的,怎么找出来。
[*]写一个字符串(如:www.javastack.cn)反转函数。
[*]常用的排序算法,快排,归并、冒泡。 快排的最优时间复杂度,最差复杂度。冒泡排序的
[*]优化方案。
[*]二分查找的时间复杂度,优势。
[*]一个已经构建好的TreeSet,怎么完成倒排序。
[*]什么是B+树,B-树,列出实际的使用场景。
[*]一个单向链表,删除倒数第N个数据。
[*]200个有序的数组,每个数组里面100个元素,找出top20的元素。
[*]单向链表,查找中间的那个元素。
更多面试专题答案、实战学习文档,需要获取的朋友们可以转发分享此文,关注小编后台私信:“资料”即可一并获取。









Java后端面试高频题视频讲解

xmKK 发表于 2021-2-17 21:26:00

没有找到私信功能,

小彪 发表于 2021-2-17 21:30:17

转发了

初音未来ink 发表于 2021-2-17 21:34:34

start

wuowudi 发表于 2021-2-17 21:38:51

转发,谢分享

Blue传说 发表于 2021-2-17 21:43:08

资料

White→寻筆 发表于 2021-2-17 21:47:25

已转发

Tracy4 发表于 2021-2-17 21:51:42

已转发

Ne_home新_ 发表于 2021-2-17 21:55:59

收藏了

玩具九 发表于 2021-2-17 22:00:16

转发了
页: [1] 2
查看完整版本: 美团、腾讯、头条、滴滴面试:并发+MySQL+Redis+Nginx+算法