作者:滴滴offer粑粑给我,我要
来源:牛客网
秋招之路终结篇:
楼主:二本本科、无实习经验、CS专业(但是个人觉得和非科班没啥区别,专业课也没有听...)
秋招之路:6.28——10.29,战线很长、6.28的第一封简历投出、10.29的面完滴滴三面暨秋招结束
海投简历:180+吧,在牛客网的求职校招日程里( https://www.nowcoder.com/school/schedule ),牛客打钱(手动狗头),有合适岗位的公司都投,每天投几个,自然而然就到180,前期建议投一些小公司练练面试,后期就是大公司干,千万不要认为自己没有准备好就不投,等你准备好,黄花菜都凉了
方向:Java方向、只会SSM,其他Redis、中间件都不会
岗位:Java开发 / 后端开发
Offer:滴滴、京东、科大讯飞sp、58集团、用友、锐捷网络、联行科技(新公司大背景、薪资+补助下来跟滴滴差不多了)
秋招范围:基础能过==白菜,基础+实践动手==SP,基础超强==SP,很多完善的知识点其他大佬有推荐,都很nice,我就不献丑推荐了,关于众多选择,选择哪一个比较好,个人觉得死磕一个大佬给的知识点方向,然后再查缺补漏其他的,
我自己的范围:
首先说明我是Java开发,我的范围只适合Java开发的,其他方向我不太了解,并且很多公司侧重点也不一样,比如字节不侧重语言,侧重操作系统四大金刚那些,也看公司吧,就像考不同的学校,会有不同的大纲,因为我是本科生,都比较侧重基础
Java:Java基础杂七杂八的(经典必考集合各种死磕源码吧)、多线程并发包各种死磕(我是死磕到源码),JVM死磕到细节、GC死磕到细节、JVM调优自己练习练习
框架:spring看看IOC和AOP的源码,但是太难太难了,就光那个方法名就特别长,前期就只知道个IOC和AOP是啥,后期就去看源码记大概一个原理过程,SpringMvc的流程,一些注解吧,Mybatis也是那些常考的点吧,缓存可以了解一下
数据库:数据库死磕,越深越好
操作系统和网络:背常考的、但是太深了,还是菜
设计模式:太多了记不住,我就是简单了解一下,叭叭给他说有啥用,Java里哪里用了xx模式
算法和数据结构:是我秋招开始补的、做完类型题进行总结,刷的就是LeetCode吧,我是先LeetCode,然后剑指offer,但是我也是有很多笔试直接挂的,除了遇到一些简单的,或者原题或者类似的题能A,一定要总结套题,类型题,一定总结一定总结一定总结
Redis:没有用过,但是就是记吧,那些常考的东西
IO模型、网络编程:比较菜了,不咋会
Linux:我也比较菜了,就会简单的命令
微服务、分布式、集群、中间件:我不了解,只知道有这个玩意
关于源码阅读:建立在自己会使用这个东西之后再去阅读源码,阅读常用的方法源码即可,第一次阅读源码建议看视频跟着阅读或者找博客,要不然比较生疏很难,,,,
我的简历和项目:简历也没有亮点,项目就是CRUD的项目,技术就SSM很low,其他的大厂基本都是简历直接挂,菜的一逼,项目是老师的活不能放github,但是真的很low,我觉得简历还是实习经验是亮点,或者一些计算机类的比赛,
关于面试:面完问一下面试官对你的评价,找到自己的不足,反正我每次问面试评价都是:基础不错,就是动手实践不是很好,xxx,,,,如果感觉跟面试官聊得不错的,可以厚着脸皮要个微信加,反正我面滴滴三面要微信加,被面试官拒绝了,其他的也有成功的,哈哈哈哈哈
我一般线上面试会录屏或者录音,面完之后复盘总结,这就是为什么我面经这么全的原因,不是我记性好,,,,,哈哈哈哈哈
如何拿到offer的:因为没有实习,项目也low,我就是死磕基础,把很多源码看了,集合、JUC下的,面试就磕源码,操作系统和计算机网络背不住,就是手写吧。我拿的offer里,基本都是Java问的很多
心态:秋招就像心电图一样,考研就像前期平稳,后期曲线上涨,因为自己也很乐观,在整个秋招之路里,也有人说话,自己也有几个网上的小伙伴群,每次就是说说话,互相激励对方,如果你是一个人的话,希望找几个小伙伴一起交流说说话,避免自闭低沉消极
个人技巧:
- 看了很多面试的知识,根本记不住,在小伙伴群里会经常互相面试对方,很多时候把自己学的东西说出来,是非常容易记住的
- 还是记不住怎么办,手抄写在纸上,就是硬写,秋招以来我大概写了20+的单面A4纸吧
实习和秋招冲突选择:当时自己也考虑过这个问题,因为没有去实习,就简历投的比较早,战线很长很累,最终感觉就是如果能在实习的过程中花一些时间去准备秋招的知识,我觉得这是最优的选择,但是这也是很累的选择,当然如果你基础也很nice的话,我觉得会非常轻松,能实习就去实习,因为没有实习经验真的很吃亏,就靠基础吃饭了,死磕基础,因为我自己没有选择去实习,在整个秋招很多时候也比较吃亏,但是最终还是坚持下来了!!
坎坷的offer:
- 贝壳是第一家面完 全部流程的公司,当时认为能过,结果被挂了,不知道是什么原因,可能学校吧...,当时挺难过的。
- 京东是8.13 14的一二面,面完之后一直没信,二面面试官也说我技术面过了提交了HRBP处理了,等到了8.29正式批给我发来线下面试邀请再次联系了二面面试官帮我反馈,当天晚上收到HRBP的oc,给我说锁定简历,给我发offer,问了几个hr的问题,9.5问hrbp什么时候发offer,hrbp问我要了身份证,之后一直持续到9月底,期间给HBRP发了四次微信询问offer的事,没有一次回我微信的,9.30二面面试官帮我反馈了我一直没有收到offer的情况,HR那边还是没有给反馈,国庆期间最终找到零售校招HR帮我查了一下我的信息,结果说没有查找我的信息,我给他说了我是提前批,HBRP问我要了身份证各种情况,说帮我对接一下HBRP,最后发现是把我的信息遗漏了,重新给我提交,10.10收到offer,等待京东这段时间,身边的人都说我凉了凉了,但是我还是坚持下来了,天天找各种途径去查,最终也是没有辜负自己的努力。
- 滴滴是8.9投的简历,8.27笔试,邀约9.7的线下面试,但是我拒绝了,期间一直想去问问能不能申请线上面试,结果没有找到途径,9.12电话邀约了9.16一面,面完之后一直就没有信了,也没有拒信,官网状态还是面试流程中,然后一直给滴滴的邮箱发消息问面试结果、不下5次吧,都是石沉大海,在牛客找滴滴hr联系方式,也没有方式,在10.15的时候再次给滴滴邮箱和滴滴招聘公众号发消息,下午来了hr约二面了,我坚持的等到了,9.16-10.15 一个月的时间啊,这期间也基本每个人都告诉我是挂了,是不会有感谢信的,但是我还是坚持,同样我是在10.10收到的京东offer,但是我还是不甘心,还是去坚持问滴滴,就是要个结果,挂就去京东,过就继续面,再约面滴滴这期间,我同样面试了其他家为了面试查缺补漏吧,大大小小公司我都投,一直坚持到offer,给自己的目标就是面完滴滴三面就不面了,结束秋招,因为太累太累了。。。
总结来说: 秋招就像一场考试,给定了要考的范围,就是你能不能去坚持死磕他了,坚持死磕对了,加上一点运气+临场发挥就是胜利,祝各位加油!!!冲冲冲!!!就是干!!!
以下面经推荐用电脑观看,markdown语法编写,电脑看是正常的,手机看就是乱的
滴滴(说的下周发offer):线上面
8.9投简历:
8.27笔试:
9.16一面:80分钟左右
- Java集合说一说吧set ,list,map都问了一遍
- TreeSet和HashSet区别 红黑树区别,有序无序
- hashmap和concurrenthashmap
- 线程池用过没,线程池的参数什么意思,每个都问了一遍
- 拒绝策略说一说
- synchroBlockQueue 到底可以存几个
- 锁用过没,l 叭叭各种锁,
- 锁的什么方法你用过 tryLock getHoldCount
- lock和tryLock区别 给他唠了一个acquire这个,但是唠的不明白 唠了一个状态
- lock的公平锁和非公平锁的怎么实现的(源码级别),不限于概念
- 类加载机制,不是类加载几个过程
- 如果多个类加载器加载同一个类,会出现什么情况
- tomcat的加载过程 我说了不了解,当时就应该问是不是init doPostxx
- spring的生命周期,不是bean 没有get到点上,不知道
- AOP
- ASM怎么实现cglib
- mybatis的插件用过没, 搞了半天不是那个
- 项目, 背景:暂存数据,每一次把用户填写的数据暂存到数据库,暂存字段,0暂存,1正式存 如果实现a用户暂存数据1,b用户暂存数据2,实现a下次只能看见数据1, 给car表加一个操作人字段,每次判断 car表怎么设计的, id,车牌号,xxx,xx,暂存标记 car表主键是什么 主键id 主键id有什么规则吗? 自增长 如果一个车牌号重复了,添加的时候怎么处理的 每次填入的时候,都会在数据库里查询一下,判断是否有 如果4个人同时填入车牌号为888的车,怎么处理这个问题 叭叭叭半天,给添加这个操作加锁,给判断重复车牌号方法加锁, 加锁为消化资源,你考虑一下在数据库进行操作吧 叭叭了隔离级别,说了mysql默认隔离级别(可重复读) 此时感觉不对了,没有get到点上了 隔离级别是解决什么问题的啊 并发的时候问题,叭叭脏读等问题, 隔离级别什么时候才出来啊? 不知道 这个点没有回答好
- 数据库索引,索引类别 唯一索引,聚簇索引,非聚簇索引
- 聚簇索引和非聚簇索引区别
- 二叉树和B+树的区别 叭叭半天,没有get到点上 B+树所有数据都在叶子节点,每次查找时间稳定 叶子节点都有指向下一个叶子节点的指针,范围查找比较方便
- 那如果把二叉树弄成,所有数据都存在叶子节点呢 二叉树,如果删除的话,可能会变成线性树,时间复杂度变高
- 那如果平衡二叉树呢 叭叭了,记得好像磁盘存储是用的b+树结构,索引是存在磁盘上的,用B+树会减少IO操作
- 怎么减少IO操作的 完全懵逼了,
- 磁盘上所有文件都是B+树存储吗? 文件夹的文件吧
- 磁盘上怎么存储这些数据的
- 你了解什么文件格式 elf,a.out
- Linux操作系统了解过吗 Linux不太了解过,用过Linux命令,进程同步
- Linux命令用过哪些 cd,grep,pwd,mv,管道符,ps
- Linux根目录下有哪些文件夹 etc,bin,我好像记得是,可能记不太清楚了
- 手撕翻转树,递归+递推
- 手撕最小路径和
10.17二面:50分钟左右
- 开源项目了解什么
- SpringBoot如何加载,源码
- 学习源码如何深入学习的 叭叭叭ArrayList和LinkedList
- 如果去了解spring的启动过程,你怎么去了解
- tomcat启动的流程,要加载什么资源
- 项目中有哪些收获
- 项目中负责哪些点,技术方向吧
- 为什么用mvc架构 面试官:其实这个mvc架构知识点还是很深的,要做好还是很难的
- 项目里Spring的事务是怎么管理的 在方法上加注解
- 那为什么加注解可以实现,这个加载机制是怎么实现的,源码级别
- 为什么这个注解可以实现事务
- 那这个事务和数据库的事务有什么关联 acid,事务隔离级别
- 那你们当时项目选技术是怎么思考,比如mybatis用的什么连接池 用的c3p0
- 那你知道有其他的连接池,各自有什么区别 c3p0、dbcp、druid三大连接池对比 - wawa3338的博客 - CSDN博客
https://blog.csdn.net/wawa3338/article/details/81380662 c3p0,dbcp与druid 三大连接池的区别 - 泡面之家 - CSDN博客
https://blog.csdn.net/qq_34359363/article/details/72763491 druid的功能强大、扩展好, druid c3p0 dbcp - 那你感觉连接池的功能都有什么 资源重用 更快的系统响应速度 新的资源分配手段 统一的连接管理,避免数据库连接泄漏
- 项目大概几个人,开发的人,源码包大小多少
- juc看过哪些,说AQS的机制
- Lock如果给线程分配锁的 叭叭ReentrantLock
- 公平锁和非公平锁的区别,源码级别 面试官补充:非公平锁就是抢占式的嘛
- 队列呢,了解什么 ArrayBlockQueue,LinkedBlockQueue
- 各个队列使用场景
- queue里面都有什么方法 offer,add,put
- 各个方法仔细讲讲,都会出现什么情况,添加的方法有什么,都有什么不同出队列呢,都有什么,跟offer对应的
- jvm看过什么、jvm常用命令
- jstat的参数,比如看一个线程的回收情况,怎么看、其他的命令呢
- 动手去编译JDK源码
- JVM的类加载流程,到解析到字节码
- 如何去验证版本的冲突的,比如jdk1.6到jdk1.7
- 初始化去怎么做的
- 实际运用中,ClassLoader都有了解什么
- 如何实现一个动态加载、实现哪些方法 实现ClassLoader这个类 首先加载这个字节码的字符流,然后有个loader方法吧,记不太清楚了
- 如何获取当前的ClassLoader getClassLoader方法
- 那可以保持建立多个ClassLoader吗? 给他扯到了不同ClassLoader加载一个clas出来的类不一样
- 为什么加载器加载出来的类不一样 不同加载器加载出来的类不一样,因为加载器不同啊 面试官补充:因为每个加载器都有自己的隔离机制
- jvm内存模型
- 多线程如何实现主存同步的 缓存一致性扯一扯,Java内存模型
- 那通过什么指令去实现其他工作内存无效的 save,xx,忘记了
- Java里怎么实现缓存一致性的 volatile、synchronized、lock、信号量、wait/notify 面试官补充:信号量也是加锁实现的
- jvm的锁优化有什么 说了synchronized,
- 那还有其他编译器的锁优化吗,比如锁粗化 锁消除、、、、、
- 网络编程知道吗
- 创建socket的过程
- 从server端开始说吧,几个步骤
- accept操作之后,然后呢
接收客户端传过来的信息吧,
- 怎么解析这个信息呢,输出到什么流里呢
- 互联网这块网络编程用的也挺多的,比如rpc框架什么的
- Java里的IO这块你了解吗,区别
- BIO、NIO、AIO的对应类实现了解吗
- shell命令
- 进程通信方式
- Linux调度方式有什么
- Linux的缓存有几级
- jdbc连接mysql的几个步骤、为什么要加载驱动呢,原理是什么、PreparedStatement和Statement区别、返回结果如何查询 准备 private static final URL、、、 也可以用properties从文件中读取。load()、 1、首先注册驱动啊?怎么注册?反射啊,Class.forName("xx.xx.xx.Driver");底层怎么实现的?静态代码,DriverManager.registerDriver?启动的时候,会自动调用静态代码块的内容。 2、接下来就是获取连接啊,怎么连接?远程连接(三次握手操作),连接放哪里?作为资源必须放池子里。这样能提高性能。常见的连接池有DBCP,C3P0,传说中最安全,性能最好的Druid(国产),而且还能监控。 3、你总的有SQL语句吧,之后就是Statement编译那。这里会出现SQL注入的安全问题。在语句后面加"1=1"成立。所以我们采用预编译的方式,PreparedStatement。可以防止这种问题的出现。 4、查完之后获取结果集。rs.getString(). 5、头疼的来了,释放资源。各种 if(xx != nu) {try{ xx.close();}catch{}} 不用担心JDK8 出来一个新特性,可以放在try-withresource中。还有各种异常可以采用通道的形式 XxxException | XxxException 6、各种异常需要你放到一个try{}catch{}中,出问题你也不知道问题在哪里? 麻烦吗?不用担心,我们可以封装成一个工具类,需要的时候调用工具类.getConnection(); 还是麻烦啊,可以用Spring框架为我们集成提供了jdbcTemplate,HibernaterTemplate。用模板代码消除了大量的样板代码。
遍历结果集,叭叭
10.29三面:36分钟左右
- 说说ArrayList的源码各种方法吧,add,remove一系列方法
- MySQL的聚簇索引
- 知道SQL注入吗、Java里怎么防止的呢
- Redis和数据库的一致性
- 了解过什么开源的东西吗 Spring
- 那说说AOP吧
11.1 HR面
京东(10.10 offer)提前批:线上面
7.1投简历、无笔试
8.1 不知名部门一面(挂)
- 项目构成
- 作为项目组长怎么分工的
- 采用什么开发 敏捷式开发,一些点说一说
- 讲讲volatile,可见性举个例子
- 你说你了解juc,你说说juc,举个例子
- ArrayList和LinkedList 说了增删改查的时间复杂度 面试官说ArrayList增加时间复杂度真的是O(1),,有个值保存了下标,下次增加直接插入
- 设计模式,项目中运用了吗
- 说说你的优势吧 说了自己喜欢看基础,面试官说那是底层,是加分项, 应该重运用,不能纯理论
- 最后问了面试官建议,让我多运用运用,底层是加分项,首先得基础好
8.13 智能供应链部一面
- 自我介绍
- jvm内存模型,GC
- 类加载机制
- ClassLoader的分类
- JDK1.8新特性,主要问了流Stream 不会
- hashmap 1.8阈值为什么是8
- 聊聊框架,SpringBoot,spring,springmvc三者关系
- spring AOP
- 基于spring的应用,我想让这个程序启动之后,然后再打印一个log,或者一个定时任务,这个怎么实现
- AOP 两种代理的区别,什么时候用
- mybatis的一个接口,一个xml文件,执行SQL语句是怎么实现 回答错了
- synchronized和volatile
- maven的scope有几种 不会 https://blog.csdn.net/kimylrong/article/details/50353161
- MySQL优化 联合索引
- Redis的数据类型
- 项目经验,登录页面怎么做的,越细越好 后台怎么获取到登录人的 我说了requestparam,好像不是很好
- cookie和session
8.14 智能供应链部二面
- 项目
- 根据项目负责的一些点提新的需求让我设计
- MySQL索引B+树问题,为什么B+
主要就是项目问的多
8.29 HR面
10.10 offer
58同城(11.1 offer):线上面
一面10.18:20分钟
- 排好序的数组里找到比target小的下标,
- 中间件会什么 我不会
- 好像还有线程的并发包
- 剩下的忘记了....
二面10.18:20分钟
- 自我介绍
- 项目中你觉得自己做的比较好的地方在哪里 数据库
- 数据库索引
- 洗牌算法
- 本地文件abc.txt,里面存放了5000万个正整数,每一行一个正整数,正整数取值范围为1-5000万,现要求你找到第300个大的正整数?要求时间复杂度为O(1) O(1) 我很懵逼了
- 生产者消费者需要注意什么事项
HR面10.18:
贝壳找房(三轮面完之后挂):线下面
8.24 一面:
- 自我介绍
- 项目
- 手撕反转链表
- Java基础你还了解哪些 我说了多态的两种形式 看过ArrayList和LinkedList源码
- AOP
- tcp三次握手
- 索引你用过吗
- 高并发知识你了解什么 说了synchronized、ReentrantLock、volatile volatile的原理知道是什么吗? 我说了JMM,面试官说不是
- 线程池几种你了解过吗 说了几种线程池 继续问我线程池的区别,线程池参数的各自含义 什么时候才会达到最大线程数
- GC说一说吧
- 类加载机制
二面:感觉很重业务运用
- 自我介绍
- 抽象类和接口的区别 能不能用一个设计模式来说明 设计模式你都了解哪些
- int和Integer区别
- Session和cookies的区别
- HTTP在哪一层 我说了应用层
- HTTP的状态码说一说
- OOA,OOD,OOP是什么说一下
- 数据库的乐观锁和悲观锁了解吗 如果给数据库加行级锁,怎么操作
- 索引了解吗
- 高并发说一说吧 我说了synchronized、volatile、ReentrantLock
- 说说你的优点和缺点吧
- 你认为最开心和最难过的事是什么
- 你认为有什么书对你影响比较大,不限类型
- 有什么想问我的
HR面:
- 你感觉前两轮面试如何
- 你家里人对你工作的看法
- 想去什么公司
- 了解贝壳吗
- 优缺点
- 为什么不考研
- 能提前来实习是吧
- 有什么想问我的
阿里(二面挂)菜鸟网络内推:线上面
8.22:一面:
- 全程就撕项目,提新的需求给方案
- tcp udp区别
- session和cookie区别
8.26:二面:
- 还是项目,怼了一怼
- MySQL的联合索引
- 哈夫曼树原理
- 一致性哈希算法:https://zhuanlan.zhihu.com/p/34985026
- UDP不可靠会丢包,为什么还用它,怎么解决UDP不可靠
- 后面就是开始聊各种人生了
8.28拒信
字节跳动(一面挂):商业变现线上面
10.9一面:70分钟左右
- 简单介绍一下项目吧
- 前端框架用过什么 BootStrap
- Vue那些呢 没有用过
- 你觉得这个项目难点在哪里
- 图片上传,你这个是单机的,那如果是多台服务器呢,怎么处理
- 你设计的表符合什么范式
- 说一下第一二三范式的区别吧
- OSI模型 非常尴尬,记不住,没有说全!!!!!
- HTTPS建立的过程
- 说说Spring的IOC、AOP
- 那你说一说ASM吧
- Spring什么时候用到jdk动态代理,什么时候用到cglib代理
- 发现频繁Full GC怎么去排查和调整
- 还会什么其他的jvm命令
- HashMap1.7和1.8的区别,ConcurrentHashMap
- CAS比分段锁好在哪里,缺点又是什么
- 如何避免CAS一直自旋消耗资源
- 用过什么线程池,各自在什么场景下使用
- Redis数据类型
- Zset怎么实现的,底层是什么 跳表
- 跳表是一种什么样的结构、和查找树有什么区别 区别回答的优点尴尬
- Redis如何做持久化的
- SpringCloud学过吗 没有学过
- 分布式和集群了解过吗
- 乐观锁了解过吗,说一说
- InnoDB如何实现悲观锁的
- Synchronized怎么实现的 说到了monitorenter
- 那你知道jvm接收到monitorenter的时候,会执行什么操作 我说了给monitor变量+1,面试官说这个可能问的有点深了,下一个吧
- 手撕,暴力过了一半,最优时间不够了
网易互娱(一面挂):线上面
9.26 一面:27分钟
- 自我介绍
- 面向对象聊聊吧
- 构造函数能不能继承
- Java基本类型
- 那基本类型的比较用什么进行比较的啊,是否比较
- 对象比较呢 看这个对象有没有重新hashcode和equals方法吧
- 对象的比较是用的什么原理比较吗
- hashcode了解过吗
- 简单介绍一下list和set的区别吗 叭叭叭
- 查找大量数据里是否存在某一数据 用hashset 大数据面试题——如何在大量数据中判断一个数是否存在 - CircleYuan的博客 - CSDN博客
https://blog.csdn.net/kingyuan666/article/details/84583980 方法一:分治法 对于大数据相关的算法题,分治法是一个非常好的方法。针对这一题来说,主要思路为:可以根据实际可用内存的情况,确定一个Hash函数,比如:hash(value)00,通过这个Hash函数可以把这2.5亿个数字划分到1000个文件中去(a1,a2……,a1000),然后再对待查找的数字使用同样的Hash函数求出Hash值,假设计算出的Hash值为i,如果这个数存在,那么它一定在文件ai中。通过这种方法就可以把题目转化为文件ai中是否存在这个数。那么接下来的求解过程中可以选用的思路计较多,有: (1)由于划分后的文件比较小了,就可以直接装载到内存中去,可以把文件中所有的数字都保存到hash_set中,然后判断待查找的数字是否存在。 (2)如果这个文件中的数字占用的空间还是太大,那么可以用1相同的方法把这个文件继续划分为更小的文件,然后确定待查找的数字可能存在的文件,然后在相应的文件中继续查找。 - 优化高效的办法 提示我了list和set
- 项目
- MySQL语法,海量数据分页吧,用什么实现 limit x,x
- MySQL常见的引擎,两者区别
- 查询效率来说,哪个快一点 MyISAM吧 是的,MyISAM虽然是表级锁,但是表的简单,查询效率比InnoDB快
- MySQL用的什么版本,5.5和5.7版本的一个区别 5.7多了一个明显的数据类型json类型
- 平常用到json吗?
Bigo(二面挂):线上面
9.2一面:
- 自我介绍
- 分代收集算法 是套组合拳,新生代分为Eden区和Survivor From和To区,用复制算法,老年代用标记-整理、标记-清除, 复制算法:开辟两个空间,一块用,一块不用,清除的时候把一块用的,存活的放入另外一个空的里面 标记-清除:标记,然后清除,缺点:碎片化 标记-整理:解决碎片化问题,把内存整合连续
- 什么参数能够调整新生代的比例? 回答错误 -XX:SurvivorRatio:Eden和Survivor的比值,默认8:1 -XX:NewRatio:老年代和年轻代内存大小的比例
- 如何一个程序频繁的发生Full GC,有什么办法改善这个情况? 用一个指令去参考Full GC的次数,新生代老年代的比例,调整各比例 产生Full GC的原因可能是:新生代到老年代的对象,老年代的空间不足,才产生Full GC
- 标记-清除和标记整理区别? 见上
- 程序发生内存泄漏,你会怎么去查这个问题? 产生内存泄漏的原因,可能是哪个引用没有用了,但是没有被回收 那你如何查出这个代码 没有实战过,不好意思 换个思考吧,如果你的CPU突然变高,到100%,没有实战过,有什么思路吗? 100%,肯定是代码块死循环了,我会用最笨的办法去找循环的代码,然后判断
- 讲一下hashmap的数据结构吧 1.7和1.8的变化,
- ConcurrentHashMap 1.7和1.8变化,分段锁、CAS锁
- Java如何实现线程池 叭叭叭
- Java实现线程同步有哪些方式? synchronized lock 这两个有啥区别吗? 叭叭叭叭 还有其他方式吗? wait和notify 还有信号量,哈哈哈哈(邪恶的笑) !!!互斥量、读写锁、自旋锁、条件变量
- 原子类你用过吗? 用过,AtomicInteger,底层是用的CAS实现的 CAS怎么实现的 CAS是jdk8 unsafe类实现,jdk9 是VarHandle实现 CAS是在openjdk用unsafe.cpp实现的 CAS本质性实现原理是什么? 说了V- A-B 是这样吗? 是这样的,但是不是我想问的,哈哈哈(邪恶的笑)
- 进程和线程调度算法? 就说线程吧 先来先服务 短作业优先 时间片轮转 优先级调度 多级反馈
- 讲讲数据库吧,数据库引擎 MyISAM和InnoDB叭叭叭
- select count(*) form 表 用哪个引擎快一点 MyISAM快一点吧,
- 组合索引是a,b,select 语句 where b = 1 and c = 2 最左匹配原则,不走索引,但是如果索引是b,a,就走索引
- like 走索引吗 如果用%模糊查询不走
- 邪恶一笑,where a = 1 ,b = 2 OR b =3 走索引吧 我也笑,前几天好像看过,我记得不走索引
- 如何查看慢查询 用explain,打开慢查询日志,叭叭叭
- 如何查看SQL语句的每一个查询计划,就是每一步消化多少毫秒 emmmm,没有实操过,尴尬笑 explain分析出来表数据都有什么
- 你自己还可以讲一下其他SQL语句优化 设计表的时候,范式问题 表最好是一对一,一对多,最好不要用多对多,多对多,最好建立中间表 硬件优化了,成本高
- Redis基本数据类型 String Hash List Set Sorted Set 如何取List的一条命令 lpush,加入,lrange取, push不是应该对应的pop吗
- 发现服务器上TIMEWAIT(我听成摊位)状态的TCP过多是什么问题? 出现在三次握手上 说说三次握手的状态吧 叭叭叭,TCP过程, 然后呢? 然后开始传输数据,可能会出现SYN 洪水问题 !!!!!!复盘发现TIME WAIT是四次握手里的!!!!!!
- 说说项目吧,不用太详细,讲一个难点吧 讲了数据过滤
- 做这个项目有什么提高呢
- 你问我吧 面试环节,面试官觉得我有什么不足或者需要努力的地方吗 我觉得都还可以,就是经验不足,但是这不是你的问题 刚才那个CAS问题,好像没有get到您的点上 对,但是没关系 问了计算平台,两个岗位的区别 技术栈方向, 什么Hadoop,叭叭、部门也分不同的方向,有云平台的方向,东西也比较多
9.12二面:
- 根据前序中序生成树
- 还有一个算法题忘了
- 线程池参数,execute(),里面那个是实现了什么接口
- 单例模式
- 设计题:在控制层,记录访问次数,每次访问,count++,我说这个不安全,加锁可以保证安全,他说还有其他的吗
bigo 9.12 二面,手撕了2个算法,基本撕出来了,问了一个线程池的问题,没有回答出来,没有get到点上,问了我单例模式,我说单例模式就产生一个对象,安全,给了我一个情景题,在控制层,记录访问次数,每次访问,count++,我说这个不安全,加锁可以保证安全,他说还有其他的吗,我说不知道了,视频面了47分钟,直接说的,今天就到这吧,感谢你面试我公司,没有让我问问题
老虎证券(一面挂):线上面
10.16一面:
- 项目
- 讲讲代理,代理细分,Java里的代理 AOP的代理,ASM的实现没有说明白
- JDK的动态代理怎么实现 代理类handlr
- 动态代理底层怎么实现
- mybatis的缓存
- 什么时候才能命中二级缓存,什么时候才能存到二级缓存里
- mybatis的接口和xml交互,用到了代理了吗?
- Spring的事务传播机制
- JVM常用的垃圾回收器, CMS和G1叭叭叭
- CMS的优缺点
- CMS回收几个阶段是只有自己的线程吗?还是多个线程并行 正确应该是 初始标记 自己线程 并发标记:并发标记线程+用户线程 重新标记:重新标记线程 并发清理:并发清理线程+用户线程 并发重置:重置线程+用户线程 缺点:在并发清理过程中用户线程可能会产生大对象发生full gc,导致csm回收失败
- 频繁Full GC,如何排查,用到什么工具
- 类加载机制
- synchronized和lock区别
- synchronized、lock是公平锁还是非公平锁
- synchronized的锁升级过程
- MySQL常用的引擎区别
- MySQL的索引结构
- 哪些会索引失效
- B+树和B树的区别
- MySQL常用的事务隔离级别
- MySQL事务隔离级别都解决了什么问题
- 脏读幻读是什么。
- 不可重复读,MySQL是什么解决的 叭叭了读写锁、意向锁 正确是mvcc
- Redis的数据结构
- 讲跳表,如果插入这个怎么做的,比如插入第一个数据,存到第几层 如果没有数据,放到第一层,
- 手撕两数之和、判断括号是否合法
科大讯飞Sp(10.22oc 已拒):线下面
一面10.18:大概1个小时左右
- OSI七层模型
- http报文头,多少位
- tcp udp区别
- hashmap、concurrenthashmap
- 线程池
- 用hashmap去实现Redis,你会怎么实现
- 说说数据结构和算法吧,做后端的这块可能薄弱一点吧,就不问你了
- 未来职业规划吧 面试官给我聊了很多未来的各种方向,叭叭叭
- 期望薪资吧
- 给我聊各种很有用的人生
- 后面记不住了,因为是线下面得,忘记录音了
面试感受:这个面试官真的很nice,问的东西也是根据简历来问的,然后也非常和蔼,面完之后还给我教了很多经验,在纸上给我画了画,写了写,真的很不错!!!!
七牛云(一面完之后没信):线上面
10.15一面:40分钟左右
因为七牛云是Go,我是Java,所以问的Java很少
- 项目各种问,难点...
- Redis的持久化方式
- MySQL的索引类型,原理
- MySQL一个表不够存数据怎么处理
- 抽象类和接口区别
- 编译时多态和运行时多态
- Java是值传递还是引用传递
- 异常处理
- 深克隆和浅克隆
- 内部类实现单例,为什么用内部静态类
- 声明一个切面函数怎么声明
- 排序算法里哪些比较熟悉,说一下时间复杂度
- 归并和快排说一说吧,哪个比较好一点,稳定一点
- ACID什么意思
- 非关系型数据库了解过什么,跟MySQL有啥区别
- 一致性哈希原理,为什么被称为一致性,
陌陌(一面挂):线下面
9.20一面
- 说说项目吧
- 你这项目也不行啊,感觉没有什么聊得
- 那你说一下项目难点和亮点吧
- 这个也不算项目难点和亮点啊
- 怎么没有去实习呢
- 系统频繁卡顿,怎么排除呢 尝试一下JVM调优,Full GC问题
- 那你说说jvm调优吧
- 还有一些忘记了
面试感受:!!!!!真的没有体验感,一直被dis,就差面着面着起身就走
联行科技(offer 已拒):线下面
9.26一面:
- 项目,
- 图片那个问题有个热部署了解一下
- int和Integer的区别,为什么要有Integer,那为什么又要有int
- Integer a = 1000; a++;几次拆箱和装箱
- JVM内存划分
查出各科目成绩第一的学生,可能会并列
- JDBC
- MyBatis的接口和XML文件怎么对应上的
- 死锁讲讲,然后写一个
- 讲讲集合吧
- 阿里有个证书,可以了解一下
- 找到链表最后一个值,倒数第x个值, 快慢指针思路
- 快慢思路还可以解决什么问题 判断环,环入口,环长度,找中位数
- ipv4对应4个字节,int也对应4个字节,把192.168.1.100转换为int 每个转换为二进制,然后整个字符串就是一个二进制,符号位+31位,进行转换int
- 海量字符串数据查询次数出现次数最多的字符串,海量是指根本存不下去
一次处理根本不能处理,所以分机器处理。
假设有M太机器,求出每个字符串的字符串Hash值模M的值分配到对应的机器上,对每个机器上的字符串分别求出现次数最多的字符串(使用Map记录就可以),在取M台机器中出现次数最多的。这是我之前学习海量数据处理时经常看到的方法
9.27二面:
- 手撕最长回文子串 暴力写的
- 字符串数组是否可以成环{[ABC],[CDE],[EFG],[GHA]},成环的最大长度,首尾字符要一样 用的dfs,写的, 正确做法是个图论
- 逻辑题,3人3鬼过河问题
shein(让我CTO面,已拒):线上面
一面10.25:9分钟
- 自我介绍
- 项目做的哪一块
- 项目做了多久
- 你平常写博客吗,给我看一下
二面10.25:9分钟
- 索引锁机制 唯一索引行锁
- 查看一条数据,数据不存在,怎么加锁的 间隙锁
- Redis为什么那么快 在内存 数据结构简单 单线程的 多路复用I/O,非阻塞
三面:30分钟左右
- 分段锁你知道吗 ConcurrentHashMap用的分段锁
- ConcurrentHashMap的put源码
- 线程池怎么理解 聊线程池的池化思想
CTO面让我,被我拒了
用友(offer 已拒):线下面
9.18 一面:
- 讲讲什么是高并发
- jvm的划分
- 类的一个创建过程
- 如何优化SQL
- 项目
- 敏捷式开发
9.18 HR面:
9.23 offer
哈啰出行暑期实习(offer已拒):线上面
一面:
- object的方法有哪些,
- ArrayList,
- gc算法,
- cms垃圾回收器,
- 说说spring,aop,
- MySQL的索引、事务、
- Redis缓存了解过没,
- JUC包下有哪些常用的类,
- 说说synchronized
- 项目
- mysql的数据类型
多益网络提前批 (一面挂):线上面
7.17一面:
- 自我介绍
- 互联网加班怎么看? 接收加班,不接受无用加班
- 项目
- 给定一个正整数n, 输出1到n的所有排列
输入 3
输出
123, 132, 213, 231, 312, 321 - 用什么语言开发?
- 如果让你建议小白学习Java,你推荐看什么书? Java核心技术卷和视频相结合
- Java的缺点,跟c++和c比? Java比c++慢
- 排序算法,哪些是稳定的 回答错误
- 解决哈希冲突的方法? 只回答了链指法
- 有其他公司的offer吗? 没有,目前就投了多益
- 做了我们的IQ测试,感觉如何,感觉难不难,是不是提前时间完成的
平安壹钱包暑期实习(offer已拒):线上面
主要测试部门:
一面:
- 做过高并发的东西吗 没有
- 说说线程和进程
- 为什么用到锁---因为写这个操作用影响
- tcp三次挥手,四次握手
- Linux命令,查看tcp的链接 没有
- git命令,如果新进入一个项目团队,怎么用git
- jre,jdk,jvm
- 用过什么数据库,开发用过缓存没,我说了解Redis
- GC算法,一般用在哪里
第三方支付部门:
一面:
- 聊聊项目
- ArrayList,线程是否安全,是否有序?
- TreeSet和HashSet区别 回答不全
- final关键字
- 抽象类和接口
- jdk1.8新特性 只回答了Lambda
- IOC
- AOP,用在日志上,Linux上怎么看日志-------- Linux没有回答出来
-------------------------
牛客网是全国最大的IT题库,刷真题,练算法,看面经,得内推,全面提升你的技术水平、推荐最好的工作给你!牛客网官网链接:https://www.nowcoder.com/discuss?type=2&order=0?from=toutiao
*本文由原作者首发于牛客,非经原作者授权,不得转载。
*与面经原作者交流,请点击下方了解更多。