• 关注官方微信 微信公众号 添加方式:
    1:搜索微信号(gogolinux
    2:扫描左侧二维码
  • 登录 注册
  • 一起学LINUX - GOGOLINUX

    查看: 185|回复: 0
    打印 上一主题 下一主题

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

    [复制链接]

    4

    主题

    4

    帖子

    16

    积分

    新手上路

    Rank: 1

    积分
    16
    跳转到指定楼层
    楼主
    发表于 2019-12-10 06:44:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    非常非常不错的一篇面经文章,文中很多的面试题目都值得我们在面试前刷一遍,强烈推荐阅读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的请求?
    • 了解哪些开源的中间件?缓存?消息?分布式框架?
    • 用到过哪些设计模式?单例模式的实现?
    • yabovip入口的事务实现原理、操作过程、如何做到事物之间的独立性等问题
    • yabovip入口的脏读,幻读,不可重复读出现的原因原理,解决办法
    • yabovip入口的隔离级别、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+树,不用平衡二叉树做索引结构?
    • 创建yabovip入口索引应该怎么考虑?
    • 使用int 做primary key和使用string 有什么优劣?
    • yabovip入口分表的方法?
    • 表结构,订单纪录如下,写一个语句,求卖的最好的 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和yabovip入口数据的一致性。比如用户名既保存在yabovip入口,又保存在redis做缓存。有如下操作 update_db(username); update_redis(username)。但是执行update_db后故障,update_redis没有执行。有什么简单办法解决这个问题。
    • yabovip入口表包含三列:广告编号ad_id,广告开始投放时间ad_start,广告投放结束时间ad_end。用一行SQL语句查询给定时间段内存在的广告。
    • 讲讲MapReduce的原理。
    • 举出几种进程通信、线程通信的方式。
    • 对列表中每一个元素找出比它大的第一个元素:输入一个listin,返回一个listout。对于任意listin[x],将满足 y > x 且 listin[y] > listin[x] 的第一个 listin[y] 值作为 listout[x] 的值。时间复杂度限制为O(n)。
    滴滴篇

    • B+树、B-树的区别?
    • yabovip入口隔离级别,幻读和不可重复读的区别?
    • 有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、乐观锁和悲观锁的理解及如何实现,有哪些实现方式?
    针对以上问题,小编整理了一份并发编程的实战学习文档以及面试答案,整理不易,诚意分享,有需要的朋友帮忙转发此,加一下口口:1921894148 好友哦,更多BATJ面试专题文档分享!




    MySQL篇

    • 主键 超键 候选键 外键
    • yabovip入口事务的四个特性及含义
    • 视图的作用,视图可以更改么?
    • drop,delete与truncate的区别
    • 索引的工作原理及其种类
    • 连接的种类
    • yabovip入口范式
    • yabovip入口优化的思路
    • 存储过程与触发器的区别
    针对以上问题,小编整理了一份MySQL面试答案。加一下口口:1921894148 好友哦,更多BATJ面试专题文档分享!


    Redis篇

    • 使用Redis有哪些好处?
    • redis相比memcached有哪些优势?
    • redis常见性能问题和解决方案
    • MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据
    • Memcache与Redis的区别都有哪些?
    • Redis 常见的性能问题都有哪些?如何解决?
    • redis 最适合的场景
    • Redis的同步机制了解么?
    • 是否使用过Redis集群,集群的原理是什么?
    • redis集群如何保证一致性?
    针对以上问题,小编整理了一份Redis的实战学习文档以及面试答案,整理不易,诚意分享,加一下口口:1921894148 好友哦,更多BATJ面试专题文档分享!




    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的实战学习文档以及面试答案,整理不易,诚意分享,加一下口口:1921894148 好友哦,更多BATJ面试专题文档分享!




    算法篇

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






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

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    分享到:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    官方微博:

    官方头条号:

    官方微信

    手机访问:

    官方微信

    QQArchiver 手机版 小黑屋 一起学LINUX - GOGOLINUX 闽ICP备18025837号-1 Discuz! X3.4 Powered by © 2001-2013 Comsenz Inc. 

    本站资源均来自互联网或会员发布,如果侵犯了您的权益请与我们联系,我们将在24小时内删除!谢谢!

    快速回复 快速发帖 返回顶部 返回列表