个人介绍某末流985本科,计科专业,Java后台岗位,今年三月份开始准备秋招,我的情况可能和大家比较类似就是到了春招的时候才决定去工作那种。所以找实习的时候被虐的比较惨,无项目无Java开发经验(只是在学校学习的时候大二写过一点Java),实习拿了华为武研所,但是做的也不是Java。所以秋招的时候就是无互联网大厂实习项目也只是demo级别。最终拿到Offer:字节(意向书),拼多多(意向书),OPPO(已拒),小米(谈完薪资),华为(OC)。还在面试流程的只剩阿里了,其余的面试都拒了。一路走来再牛客上看了很多的面经,之前也单独的发过想想还是对于秋招汇总一下。学习情况牛客网高级项目课+参加字节夏令营做的一个demo高并发秒杀+看面经汇总博客。公司面经字节https://www.nowcoder.com/discuss/291549阿里一面:时长1h30min自我介绍TCP的三次握手,为什么三次握手TCP粘包,保护消息边界和流?客户端和服务器最多能发送和接收多少TCP连接数?说一下B树和B+树的区别。为什么数据库索引中用B+数而不用B树B+树相比B树的优势?我说了查询性能更稳定,他说这样不是降低查询效率嘛,那为什么不用B树呢?了解数据库索引吗?说一下种类,说一下应用场景。索引是怎么提高性能的,在哪些列上可以创建索引,在哪些列上不能创建索引什么时候索引会失效?怎么知道有没有加索引B+树的叶子结点上存了哪些信息呢数据库的事务说一下,详细说一下脏读,说一下隔离级别事务的底层原理是什么呢MVCC详细说一下说一下Hashmap和CourrentHashMap红黑树说一下,说一下左旋和右旋,画一下给我看看说一下并发编程的几个特性volatile关键字的两层语义它的底层原理是啥呢手写一个计数器,开10个线程,保证最后计数输出为10问一下JVM的内存模型说一下内存结构,那这两个有什么联系呢,为什么要分代说一下一个对象在内存里面的生存周期。我说一下一些大对象直接进入老年代。然后面试官说我说错了,这个我不是很理解,感觉网上很多都是这么说的,查了一些资料应该也是会直接放进去的,不懂。说一下GC算法说一下OutOfMemoryError类加载详细说一下说一下四种引用状态说一下最长上升子序列,nlogn的时间复杂度二面:29min自我介绍说一下项目怎么解决超卖少卖的问题,怎么用数据库配合解决了解分布式事务吗说一下分布式唯一ID生成了解RPC吗,不了解。了解netty吗,不了解。说一下你登录注册的模块吧,详细过程你Token的过期时间为什么不能存在cookie里面呢?没想过考虑过跨域攻击啥的吗,没考虑那我就没啥问题了,等会给你发两个题做一下就没了。题目:补充如下程序通过N个线程顺序循环打印从0至100,如给定N=3则输出:thread0: 0thread1: 1thread2: 2thread0: 3thread1: 4...注意线程号与输出顺序间的关系。全美高中生智力竞赛第二天就要开始了,但是大家还没有找到队中的主力彼得·帕克。帕克去哪里了? 原来身为蜘蛛侠的他,被其女友丽兹的父亲,也就是《英雄归来》里面的大Boss,关进了一个仓库里。要打开这个仓库,必须要破解一个独特的密码锁。这个密码锁构造是从左到右有N个小洞,小洞的编号为1到N, 每个小洞最多可以放进一个小球。密码锁旁边有N个小球用于开锁,每个小球代表一个大写英文字母。密码锁的密码长度X(1<=X<=N),帕克需要从第1个小洞开始依次放入不同小球到洞里。好在帕克的朋友小胖子是一个电脑天才,他帮帕克破解出了其中几个位置的密码。那么请问共有多少种密码组合呢?输入描述第一行输入一个字符串,代表N个小球,(1<N< 1 000 000),每个小球代表一个大写字母;第二行输入小胖子破解的密码数量M, (0<M<N)后面接着M行,代表小胖破解密码的小洞位置和需要用到的字母;输出描述输出所有不重复的密码组合的数量三面:1h10min自我介绍简单说了项目之后开始聊规划,聊人生聊了这么久算是压力面,表现的不好(等等看还有没有后续吧,唉)拼多多一面:首先问了一下在实习,实习是主要干啥了。简单介绍一下自己。参加的程序设计竞赛,数学建模竞赛你觉得对你的意义在哪你以后的发展设想问了项目部署在哪个环境下:LinuxLinux环境下上线一个服务,如果CPU占用太满了,怎么排查。用ps命令鬼扯了一下怎么查看内存占用。用top命令扯了一下。说到内存泄漏,问有没有碰到,内存泄漏怎么解决?我说了GC说了一下怎么判断对象是否存活,介绍了一下GC的算法问了一下c++每次都要new,delete,但是经常会忘了delete,那么有什么方式解决这个问题?我觉得比较像IOC的原理,就说了用容器去管理对象,我们在外面不用new,只需要从容器里拿,容器帮助我们解决new,delete。生活场景下什么时候用UDP。介绍一下TCP,说一下三次连接的过程,为什么不是二次,四次挥手为什么不是四次?有没有写过这个连接,说了一下课设写过一个简单的聊天服务器,不过就很简单的你发送我回答那种问了一个我的项目是什么。说了一下是跟着视频写的,但是自己做了一些优化,感觉凉凉。说一下mysql和redis的区别,感觉回答的不好redis为什么不能代替mysql,如果redis能存大量的数据呢为什么不能?说到了事务问我项目中哪里用到了,woc,一紧张给忘了哪用了又扯了一下实习的工作,说下自己对于这个的理解有没有什么想我的?问了一下工作地点。二面:说一下多态的底层的原理?说了一下编译时多态和运行时多态以及JVM调用invokestatic方法然后调用动态分派的过程,通过栈帧的信息去找到被调用方法的具体实现,然后使用这个具体实现的直接引用完成方法调用。然后问我它是怎么找到对象实际类的?我不知道啊说了一下反射?他说反射太慢了,那我就不知道了,只知道调了命令ArrayList 和 Linklist 的区别?大致都说了一下,扯到 ArrayList 线程不安全,我是个智障忘了 Linklist 线程安全不安全了。就说我还没注意到这个,跳过。详细说一下 Hashmap 的 put 过程插入链表的时候是前插还是后还真没注意,就说没注意,猜测是后插。HashMap 和 TreeMap 的区别为何要用红黑树? 说了一下插入删除查询的时间复杂度的原因那为什么不直接用红黑树?说了一下小于8个时候查询什么的O(n)就很优秀了,实现红黑树又比较复杂。他说这个跟你没关系啊,实现都是底层的事情?那就说了小于8个时候查询什么的O(n)就很优秀了你为什么一直说个人理解? 我说有的问题我也不能确定我的回答就是正确的,只能通过我已经学过的东西和看过的东西来去确定写道算法题:问我写 Java 的为什么笔试都是 c++ 写的给定一个字符串,里面只有数字(0 ~ 9)、字母(a ~ z,A ~ Z),小数点(.),在这个字符串中找出一个最大的合法数字连续子串123.456 -> 456123.789.456 -> 789.456123abc789.4mk56.1cde23 -> 789.4123.456.789->789二十分钟写完:写的稍微有点点问题,但是面试官没看出来,说了一下时间复杂度我说 O(n),他说你这个里面不是又套了一重循环吗,为什么不是 O(n^2) 的本来说今天就到这结束了,看我没说话又问了一点。问了一下 c++ 的模板? 我心里我没用过啊,然后说了一下模板不能在局部定义就不知道了linkhashmap 应用场景 我没用过,因为知道是根据 key 插入有序,说了一下先来后到的场景深拷贝? 我不清楚说了一下拷贝的概念问了一下 Java 是引用传递还是值传递问了内存泄漏的场景?我说了这个的示例https://blog.csdn.net/lzm1340458776/article/details/26386585 说得他一脸疑惑小米https://www.nowcoder.com/discuss/244884OPPO 提前批一面:自我介绍static关键字,final关键字。HashMap是不是线程安全的?为什么不是线程安全?courrenthashmap怎么保证线程安全?回答了jdk改版后的区别。问了CAS是啥,大致的说了一下,过程说的是对的,但是几个字母说错了,尴尬。线程池有几种,记得有四种,只说了三个名字出来。说一些你知道的这几个线程池的区别,各自的特点。说了一下一个新的进程加入到线程池的步骤说一下线程池的几个重要的参数。问了我newFixedThreadPool这个线程池的初始化大小是怎么决定的,我说测试一下看一般会有多少线程再来决定,面试官想知道一个理论的方法,我不知道。问了一下你在项目里面承担了什么样的角色,你觉得比较难的点在哪,怎么解决的?大致说了一下Redis的持久化,以及前缀树来过滤敏感词,问了时间复杂度和空间复杂度。不知道空间复杂度是多少。然后看了我在简历上说在学院的助理干过。问我这个工作是干啥的,中间有没有发生什么事情?说了一件比较操蛋的事情,然后问我是怎么解决的,自己是怎么想的?然后问了他Java在OPPO里面会用来干啥,就结束了。二面+HR面:前期主要是介绍项目,介绍项目的难点,你是怎么解决的。为什么这样去解决。你是怎么学习的。你的日后职业生涯规划是什么。差不多都是这样的问题吧,都是聊项目。HR面试:内容被要求保密,但基本上都是差不多HR常问的那些问题。网易提前批(二面挂)一面:自我介绍学习了哪些数据结构?问了堆和栈的区别:我知道想问操作系统的但是我刚开始一紧张我卡词了然后我说了一下竞赛里面的堆栈,Java内存划分:介绍了一下几个区域,然后还详细说了一下这个里面是放啥的怎么GC?说了一下GC条件,对象存活判断的两个方法,GC算法引用计数法的问题new一个对象是放到堆上那么你new一个线程呢,放到哪里? 不知道问了堆的划分,问了GC Eden区的时候对象会怎么办问了Java虚拟机初始化的参数,我不知道说了有关年轻代的几个参数如果老年代满了怎么办,我不清楚说了好像是有个full gc可以操作一下说一下项目的登录注册功能,说一下如何保持你的登录态你说了你做性能优化,为什么要做性能优化说一下你项目中出现的异常数据库挂掉了是怎么表现的,比方说什么日志? 哎都给提醒了我也不知道了,就说了你网页请求访问是没有响应的,功能都没了最近看了哪几本书,你怎么学习比方说你碰到了Redis的一个问题,谷歌不到,认识的人也不会,你怎么办? 我说去官网找客服,谁都可以不会但是开发的人员不能不回会有没有看过一些开源的源码?一开始尬住了,最近是没怎么看源码,面试官很好问了我又没有看过jdk的,我说了看了hashmap,courrenthashmap这些数据结构的都看了问了一下为什么长度达到一定的长度要转化为红黑树有什么问题?问了部门业务,说接下来有段空档期想给点建议好继续学习,说了学习微服务,redis继续深入的了解。二面:先自我介绍一下问了实习的东西,觉得最难的最有挑战性的点在哪kafka的重复消费? 没说好问了一下项目,登陆注册功能实现问了生成验证码的实现设计一个怎么使得验证码有效期,过了一段时间就过期了。问了线程和进程的区别。ArrayList的底层原理?怎么扩容?线程池的概念,好处在哪多进程和多线程的区别? 没回答上你有什么想问我的?当场懵逼,问了怎么这么惊讶,我说面试时间太短了,感觉一般面得不好的时间都不长,说面试时间不是固定的。最后写一点Java后台面试题吧(之前也写过了,复制一下,凑最后一贴)计算机网络这些问题是最常见,感觉基本上也就会问这些。OIS参考模型,每一层涉及到了哪些协议,每一层负责了什么?最重要的就是传输层,这一块一定要好好看TCP的特点是什么?什么是窗口滑动协议,什么是快速重传,什么是拥塞避免,什么是慢启动?怎么做到可靠数据传输?TCP的流量控制是什么?如果RcvWindow=0应该怎么办?有哪几种定时器?作用分别是什么?TCP和UDP的区别?什么场景使用TCP,什么场景什么UDP?哪些应用层协议使用了TCP,哪些使用了UDP?UDP要实现可靠数据传输应该怎么做?TCP的三次握手和四次挥手?为什么是三次,为什么是四次?为什么TCP采用随机初始序列号?客户端和服务器最多能发送和接收多少TCP连接数?(最后一个问的较少)如果TCP连接的时候服务器发送的最后一个报文时,客户端挂了会怎样?那如果服务器宕机了,客户端怎么处理?TIME_WAIT 和 CLOSE_WAIT 状态?TIME_WAIT 为什么需要保持 2MSL 这么长的时间?大量TIME_WAIT造成的影响?如何尽量处理 TIMEWAIT 过多?TCP粘包(问的较少)影响TCP 网络时延的因素当你输入域名访问一个网站的时候,背后的过程是什么涉及到哪些协议?什么是https协议?https协议用到了哪种密钥?什么是有状态什么是无状态?HTTP的八种请求?GET和POST的区别?HTTP的一些常见的状态码要熟悉!重定向和转发的区别?HTTP和HTTPS的区别?HTTP1.0和HTTP1.1的区别?HTTPS的工作流程?Cookie,Session,Token的区别SSL加密的过程?延伸出对称加密和非对称加密的过程和区别DNS协议!域名解析过程,递归查询和迭代查询的区别?Ping命令的过程和ARP协议(这个做了解就好了)操作系统这个是我比较惨的,但是一般问的不深。进程和线程的区别是什么?进程和线程占有的资源是哪些?操作系统创建进程的过程?进程的状态和控制原语?Java的Runnable对应着哪些操作系统状态?还有哪些控制函数像sleep,notify这些改成成什么状态了?进程间通信!为什么需要进程间通信?线程通信?进程同步和进程互斥。实现临界区互斥的基本方法?如何正确的停止一个线程!中断和异常进程隔离,虚拟内存,虚拟地址空间多线程、多进程的区别及适用场景什么是缓存?有哪些缓存的更新算法?用过的Linux命令,常用:看被占用的端口的进程;查看一个进程的端口号;显示CPU的信息 ,查看CPU使用率;查看所有进程;查看进程的详细信息;查看内存使用情况等等僵尸进程,孤儿进程以及守护进程?怎么创建一个守护线程?僵尸进程危害以及避免僵尸进程的方式!进程调度算法以及死锁!产生死锁原因;产生死锁的条件;处理死锁的几种条件;银行家算法操作系统的特征(这个最基本,但是一次面试我不知道)数据库这块我也不是很熟悉,只知道一些基本的,最后的两个选看我觉得,会更好,但是千万不能看了一点就说会,不然会给自己埋大坑。数据库的事务,事物的特性,事务的隔离级别分别解决了哪些问题,理解什么是脏读,幻读! 事务的实现原理通过什么要保证的事务的特性?什么是左连接,什么是右连接,什么是全连接,什么是内连接?数据库的索引有什么作用?用什么来实现的?好处坏处是啥?索引的种类,原理,索引存了哪些内容,什么时候索引会失效?唯一索引和主键索引的区别!单列和联合索引,最左匹配原则,什么时候该用联合索引?怎么看这个表是否加了索引?B树和B+树有什么区别?为什么索引不用B树?那B+树的叶子结点上存了哪些信息?数据库的锁?乐观锁悲观锁,共享锁和排它锁。MySql中主要使用的引擎,它们主要的区别是啥。数据库范式数据库五大约束?数据库连接池:工作原理,参数,种类,会出现的问题数据库的读写分离,数据切分(数据库分库分表,水平切分垂直切分啊)数据库的主从:实现原理,mysql主从复制的方式,如何配置主从同步,主从同步会出现的问题数据结构和算法排序算法必会,然后是剑指Offer题,Leetcode hot100,Leetcode 字节跳动专题,刷的滚瓜烂熟才行。这一块我可能会好一点,我大二的时候入了ACM的坑,所以我秋招算法的这一块准备的比较少。给大家分享一些我碰到的面试算法题以及我看过的面经涉及到的。剑指offer和字节跳动专题我写了,那个hot 100我没写。放下链接吧:剑指offer:https://xiaorui2.github.io/2019/06/24/%E5%89%91%E6%8C%87Offer%E5%88%B7%E9%A2%98%EF%BC%88%E6%8C%81%E7%BB%AD%E6%9B%B4%E6%96%B0%EF%BC%89/Leetcode字节跳动专题:https://xiaorui2.github.io/2019/06/30/LeetCode%E5%AD%97%E8%8A%82%E8%B7%B3%E5%8A%A8%E4%B8%93%E9%A2%98/面试涉及到的一些算法题:https://xiaorui2.github.io/2019/07/27/%E9%9D%A2%E8%AF%95%E6%B6%89%E5%8F%8A%E5%88%B0%E7%9A%84%E4%B8%80%E4%BA%9B%E7%AE%97%E6%B3%95%E9%A2%98/面试涉及到的一些机智题:https://xiaorui2.github.io/2019/08/13/%E9%9D%A2%E8%AF%95%E5%B8%B8%E8%A7%81%E7%9A%84%E6%9C%BA%E6%99%BA%E9%A2%98/几大排序算法:https://xiaorui2.github.io/2019/07/06/%E5%85%AB%E5%A4%A7%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95/数据结构的话:B树,B+树,红黑树这些必知道,然后就是写二叉搜索啊,平衡二叉树啊这些知道是什么就行Java知识Java知识要准备的太多了,很多细节,我就捡着说一些都是我自己汇总的一些Java 基础Java和c++的区别(第一次被问我说的很糟),Java为什么跨平台?Java语言的特点和特性(第一次我也回答的很糟),多态的底层原理?抽象类和接口的区别?抽象类与普通类的区别?Java访问修饰符有哪些?this关键字和super关键字?Object类下面的方法,尤其是hashCode方法和equals方法?== 和 equals 的区别是什么?若对一个类不重写,它的equals()方法是如何比较的?int 和Integer的比较!Java基本的数据类型?String为什么不可变?好处在哪?String 常量池?String, Stringbuffer, StringBuilder 的区别。static关键字(第一次问我忘了都不知道)和final关键字ArrayList 和 LinkedList 区别?三种方式访问集合中的元素,ArrayList遍历删除会出的问题?Foreach原理以及Fail-fast机制!Java泛型Java反射:反射的好处;得到class的方式;反射的原理Throwable、error、exception的区别?异常的种类!Java创建线程的四种方式?线程实现callable接口和runnable接口的区别?线程中start和run的区别?sleep(),wait(),yield()和join()方法?sleep()与wait()的区别?Java是值传递还是引用传递Java的null类型?java创建对象时,new 出一个对象 和 = null的区别?空串与null串?Java中创建对象的5种方式?为什么会出现 4.0-3.6=0.40000001 这种现象?HashMap,HashTable,CourrentHashMap:HashMap的底层实现,put,get过程;如何解决Hash碰撞的;(延伸出Hash冲突的几种解决方法)HashMap的初始化容量为什么为2的次幂?为什么HashMap是非线程安全的?HashMap和HashTable的区别?为什么HashMap长度大于8才转换为红黑树,而不是6?HashMap和TreeMap比较?HashMap,HashTable,CourrentHashMap的key和value是否可为null?那为什么这么设计?CourrentHashMap为什么是线程安全的?(引出Java线程安全,Volatile关键字,CAS这些)并发编程的的三个概念(特性)?为什么会有Volatile关键字?volatile关键字的两层语义!!Volatile底层原理!!什么是线程安全?产生线程不安全的原因是什么?Java线程安全的类?Java线程安全的类:公平锁/非公平锁;可重入锁;独享锁/共享锁;乐观锁/悲观锁;自旋锁等等synchronized关键字:三种应用方式;为什么能实现实现内存可见性;底层原理是啥?ReentrantLock关键字:实现原理;CAS原理以及CSA的问题synchronized和ReentrantLock的异同以及Synchronized修饰静态方法和成员方法的区别?线程池:线程池的好处?基本组成部分?Java中的ThreadPoolExecutor类!线程池涉及到的参数!线程池的状态?线程池任务执行流程!!任务缓存队列及排队策略,如何自定义拒绝策略?线程池的种类?配置线程池大小,根据CPU密集和IO密集划分阻塞队列以及生产者消费者的实现内存泄漏和内存溢出,常见的内存泄露(介绍一下HashMap泄露的场景),避免内存泄漏的几点建议?如何定位找到内存泄漏!!ThreadLocal介绍,实现原理!!ThreadLocal是如何做到为每一个线程维护变量的副本的呢?ThreadLocal和同步机制的区别。设计模式的单例和工厂是面得最多的!单例的几种实现方式,一般写典型的双重检查锁定,因为会延伸出volatile,线程安全这些。然后就是饿汉式,线程安全为什么不用这个方式呢,简单又线程安全?然后是抽象工厂模式和工厂方法模式区别?JDK或者Spring当中哪里用了设计模式?JVM:Java内存模型?JVM内存结构?内存模型和内存结构的联系?Java对象结构?JAVA虚拟机内存划分?每个区域分别装着哪些东西为什么要划分?堆的划分,为什么要设置两个Survivor区?新生代 Survivor 空间不足怎么办?年轻代的几个参数?一个对象从创建到销毁都是怎么在这些部分里存活和转移的?Java中new对象干的几件事?Java四种引用状态?类加载的过程?类加载基于的机制?为什么要双亲委派?为什么需要破坏双亲委派?自己写个String能加载吗?类初始化时机?对象的创建的过程?GC算法与垃圾回收!为什么需要垃圾回收以及什么时候GC?GC涉及到的内存部分?对象存活判断的几种方式?说一下你了解的几个垃圾收集器JVM初始化步骤JVM调优(这个比较少)Java 虚拟机栈会出现的两种异常?项目项目这块我比较少,只有牛客网的高级项目课以及一个高并发秒杀的demo,这一块的话我的建议不管项目大不大你都要吃透,不然面试的场景设计以及面试官对你的项目提问的时候你会不知道怎么办,项目这一块的主要是Spring的问题,Redis,Kafka,这里就要吹一下牛客网了,这个项目课的确是小白专用,涉及到的知识点太多太多了。很值!Redis:Redis是什么,用在哪?Redis 的缺点?Redis是单线程的为什么速度那么快?那它为什么弄成了单线程的?(这个背一下网上的答案是不够的的,我在面阿里三面的时候就被问了,答案的话我也只知道网上的,还需要自己去思考)Redis和mem有什么区别?Redis和MySql的区别?Redis 支持的数据类型有哪些?用在什么场景?它的底层数据结构是啥?Zset底层为什么要用两个数据结构?Redis的并发竞争问题如何解决?Redis的缓存穿透,缓存雪崩,缓存击穿?怎么解决?怎么保证缓存和数据库数据的一致性?Redis有哪些数据淘汰策略Redis持久化方式!!Redis集群!集群是如何判断是否有某个节点挂掉?集群进入fail状态的必要条件?Redis哨兵Redis主从复制和一致性保证!Redis热key问题Spring:这一块问的比较少其实,但是IOC和AOP问的很多SpringBoot的启动和运行原IOC和AOP原理?Spring生成***对象BeanFactory 和 FactoryBean 的区别Spring各个注解的作用?注解的原理?哪些bean会被扫描?Bean的生命周期!!Spring 实例化 Bean 的过程。Spring 直接注入和直接new一个对象有什么不同?Spring事务管理:事务原理?事务管理接口?实现方式!Spring解决对象相互依赖Kafka:优点和缺点?和传统的MQ对比有什么区别?为什么 Kafka 吞吐量高一些概念像broker,topic,partition这些partition 删除策略写入可靠性保障(分布式一致性问题)两种消费模式kafka消费者消费消息的流程kafka 如何保证消息有序消息丢失场景:如何防止数据丢失,消息重复解决方案主节点选择方案个人不同项目会问的:(高并发)如何解决超卖少卖?你自己重新设计一下,一个高并发,你要怎么应对单用户订单存Hash,那一个用户下了很多单怎么办?减库存然后下订单,但是服务器宕机?负载均衡实现方式,策略?限流主要的算法?令牌桶算法的缺点在哪?(导致不公平性)
相关推荐