万字内容!内含自己总结的基础面试脑图,以下内容都是我在19年6月28日—10月29日,一路面试经验填坑过来的内容。
你将获得
- 和尚二本本科无实习、垃圾 crud 项目、只靠基础在 19 年秋招中拿到滴滴京东 58 科大讯飞sp的干货经验
- 秋招、春招、日常实习整体流程
- 和尚的基础复习范围(自己总结了面试脑图)
- 简历怎么写??
- 项目要做到什么程度、项目 low 怎么办、基础和项目怎么选择、烂大街的项目可以做吗、非相关技术栈的项目需要写吗?
- 面试套路、技巧、心态
- 面试的复习重点在哪?
- 面经和面试知识点的选择
- 面试知识点记不住怎么办?
- 面试官会从哪些点来考察面试人、压力面那点事
- 面试手写代码的那点事,手撕算法的形式
- 个人看法简历怎么写
- 找实习去哪里投?
- 学校 low 怎么办
- 坎坷的 offer 故事
- 滴滴、京东、58、贝壳、阿里、字节、Bigo等面经
和尚的自我介绍:
和尚:二本本科(四级都不过可以毕业的学校,我 5 次四级陪跑选手)、无实习经验、垃圾CRUD 项目、CS专业(但是个人觉得和非科班没啥区别,专业课也没有听...,而我还是渣学校)
岗位:Java开发 / 后端开发
秋招之路:6.28——10.29,战线很长、6.28的第一封简历投出、10.29的面完滴滴三面暨秋招结束
技术栈:Java方向、只会SSM,其他Redis、中间件都不会
海投简历:180+吧,在牛客网的求职校招日程里( www.nowcoder.com/school/sche… ) ,牛客打钱(手动狗头🐶),有合适岗位的公司都投,每天投几个,自然而然就到180+,但是投简历也是一个苦力活,可能会投的自闭,前期建议投一些小公司练练面试(找些套路),后期就是大公司干,千万不要认为自己没有准备好就不投,等你准备好,黄花菜都凉了
Offer:滴滴、京东、科大讯飞sp、58集团、用友、锐捷网络、联行科技(电网占股 49%、薪资+补助下来跟滴滴差不多了)、后面其他的约面就没有面了
我自己复习范围:(脑图看最下面)
首先说明我是Java开发,我的范围只适合Java开发的,其他方向我不太了解,并且很多公司侧重点也不一样,比如字节不侧重语言,侧重操作系统四大金刚那些,也看公司吧,就像考不同的学校,会有不同的大纲,因为我是本科生,都比较侧重基础
Java:Java基础杂七杂八的(经典必考集合各种死磕源码吧)、多线程并发包各种死磕(我是死磕到源码),JVM死磕到细节、GC死磕到细节、JVM调优自己练习练习
框架:spring看看IOC和AOP的源码,但是太难太难了,就光那个方法名就特别长,前期就只知道个IOC和AOP是啥,后期就去看源码记大概一个原理过程,SpringMvc的流程,一些注解吧,Mybatis也是那些常考的点吧,缓存可以了解一下
数据库:数据库死磕,越深越好
操作系统和网络:背常考的、但是太深了,还是菜
设计模式:太多了记不住,我就是简单了解一下,叭叭给他说有啥用,Java里哪里用了xx模式
算法和数据结构:是我秋招开始补的、做完类型题进行总结,刷的就是LeetCode吧,我是先LeetCode,然后剑指offer,但是我也是有很多笔试直接挂的,除了遇到一些简单的,或者原题或者类似的题能A,一定要总结套题,类型题,一定总结一定总结一定总结
Redis:没有用过,但是就是记吧,那些常考的东西
IO模型、网络编程:比较菜了,不咋会
Linux:我也比较菜了,就会简单的命令
微服务、分布式、集群、中间件:都不会
关于源码阅读:建立在自己会使用这个东西之后再去阅读源码,阅读常用的方法源码即可,第一次阅读源码建议看视频跟着阅读或者找博客,要不然比较生疏很难,,,,
坎坷的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,给自己的目标就是面完滴滴三面就不面了,结束秋招,因为太累太累了。。。
简历应该怎么写???
以下属于个人观点:
- 如果成绩好,写上你的 GPA 和排名
- 学校好肯定是个亮点
- 有博客(前提里面要有内容),有 GitHub 写上去
- 大厂实习是个亮点
- 项目负责模块最好用:用 xx 实现 xxx 解决了 xxx 问题达到了 xx 效果,网上都说最好用 STAR 法则写,
- 计算机类的比赛加分项吧、ACM.....
- 技能栈写你会的,精通、熟悉、了解 xxxx。
划重点:字不能错,大小写要写明白,Java 不是 java,我不知道这个单词到底是怎么拼,去官网瞧瞧他怎么写的。
如果以上你都没有???我好慌,我该怎么办???
把你复习的众多知识点堆在技能栈上,前提是你要会!会!会!不会就不要写(别给自己挖坑),比如:
看多线程知识点前:
- 了解多线程编程
看知识点后:
- 熟悉多线程编程及原理,内存屏障和 CPU 缓存、线程池应用及原理、synchronize 锁优化、JVM 内存模型、J.U.C并发编程包
再次重点提醒!!!一定要会才往上写!!!
实习、秋招、春招整体流程



项目 low 怎么办?
low 不是你的问题,但是项目也可以“包装“啊,此“包装”非彼包装,举个例子吧:
Q:原项目有一个等级权限管理,就 3 层等级,数据库里设计好了就分 3 级,面试官就问到你了,你这个怎么做的。
A:自己一顿叭叭叭,
Q:面试官给你提了一个新需求,如果 3 层等级变了,变成了不一定多少层,你又怎么设计?
面试官给你说出了问题,不管你有没有回答出来,但是希望你面完之后,你对这个需求去重新设计一下,下一次面试自我介绍的时候说:
对于 xx 项目,我自己私下也有复盘,比如当需求变为 xxx 的时候,我考虑到这样设计:叭叭叭.....。
这样你的 low 项目就变得不再 low 了,突出你的思考、你的想法
如果没有实习,项目需要做到什么程度呢?
- 尽自己的能力做到最好,但是也不要用太高大上的技术去做项目
- 用太高大上的技术去做项目,前提是你要做好准备这个技术你会被面试到,你要对这个技术要有一定的理解,问什么,你能大部分答出来
- 自己做的项目的负责点一定要熟悉,问啥能答出来
如果面试准备时间紧张,基础和学框架做项目怎么选择?
- 重基础
- 基础对于校招来说是一个垫脚石
- 大厂也比较看重基础,
- 时间成本上:基础比学框架做项目周期短,见效快,项目做太多了,需要填的坑就会很多
时间紧,数据结构、计算机网络、操作系统、多线程、JVM这四个的话怎么安排,重要点在哪里
明白以下几点:

网上烂大街的项目可以做吗?
- 可以做啊,比如秒杀、电商
- 但是做完之后一定要明白这些点为什么这么设计,为什么这么做,要明白的透彻,不要给自己挖坑
有其他语言的项目,比如 Python 的,但是和 Java 后端无关,建议写进去吗?
- 可以写,但是前提是你对这个项目有一定的了解,能跟面试官有得聊
- 如果不熟悉这个项目或者 Python,就不要写,避免给自己挖坑
- 主语言是 Java,二语言是 Python 会是一个加分项
关于套路和技巧
**关于面试:**面完问一下面试官对你的评价,找到自己的不足,另一方面也表现出自己强烈的学习欲望,反正我每次问面试评价都是:基础不错,就是动手实践不是很好,xxx,,,,如果感觉跟面试官聊得不错的,可以厚着脸皮要个微信加,反正我面滴滴三面要微信加,被面试官拒绝了,其他的也有成功的,哈哈哈哈哈,加微信目的:短时间没有更新面试结果,可以客气问问面试官结果,也可以请教一些面试不会的问题
**面试复盘:**我一般线上面试会录屏或者录音,面完之后复盘总结,不单单是总结,你还要找到自己的不足去弥补,防止下一次再被问,这就是为什么我面经这么全的原因,不是我记性好,,,,,哈哈哈哈哈
关于投简历:写一个 Excel 或者 Word 记录投的公司,时间,投递方式,方便后期去查询结果
面试的时候,知识点模糊怎么办?
- 想想思考一下,如果没有 get 到面试官的问题,就仔细问一问面试官指的是哪块
- 如果完全不了解,试着想想其他思路,看看面试官会不会给你引导一些
- 不知道说啥了,就说这个点可能是我的知识盲区,我复盘的时候会学习一下这个点
你的秋招时间这么长,你的心态如何呢?
秋招历时足足 4 个月,心态就像心电图一样,考研就像前期平稳,后期曲线上涨,因为自己也很乐观,在整个秋招之路里,也有人说话,自己也有几个网上的小伙伴群,每次就是说说话,互相激励对方,如果你是一个人的话,希望找几个小伙伴一起交流说说话,避免自闭低沉消极
关于众多知识点和面经你又是怎么选择去看的呢?
- 先看众多的知识点,广度先建立起来,遇到一个不会的知识点千万不要入坑掉进去,越陷越深
- 广度那么多,我看一遍记不住咋办,那就多看几遍,理解化记忆,找一些共同点进行记忆,手写记忆(秋招以来我大概写了 20+的单面 A4 纸吧),抱团组队,互相面试,互相讲解
- 广度拉起来之后,去看看深度,了解一下源码 xx 的,深度是你从众多面试者脱颖而出的法宝
- 面经看了一定的知识点之后再去看,作为查缺补漏之用,当你要准备面哪个公司之前,去看看这个公司的面经。
知识点记不住怎么办?
- 理解化记忆,由点成线,线成面,串起来
- 反复阅读,第一次读懂 30%,第二次读懂 60%,第三次 90%
- 还记不住怎么办,手写到白纸上,硬记
面试官会从哪些点来考察面试人?
最近有小伙伴问到这些问题,我就从自己的面试一些点来谈谈。以下内容针对校招
1. 肯定会考察算法和数据结构——代码能力
-
通过一个人算法题的能力,可以看出他的基本功水平、未来的学习能力(因为算法学习真的很费脑子),是否有认真的准备面试,因为常考的算法点大家都知道,下下功夫,能够准备好的
-
基础的几种排序,时间和空间复杂度,是否稳定,查找问题,如果难一点的算法,有时候面试官会让你说一下思路,不会全写,但是有些也会让你手写,
-
面试官还可能由数据结构引申出其他 Java 的一些东西,比如数组引申出 ArrayList,链表引申出 LinkedList,
-
还可能从 Java 的东西引申出数据结构,比如 MySQL B+树索引,为什么 B+ 而不是红黑树、Hash、二叉树,Redis 底层数据结构引申出跳表的原理。
2. 知识的广度和深度问题——基础知识
-
现在很多公司都需要T字形人才。一个方向深入挖掘。同一方向的知识广度要协同考察。
-
友好的面试官会从你的简历上的点一步一步深问你,比如,你的简历上写了集合,面试官就会这样问
- ArrayList 用过吗?
- 你知道 ArrayList 的设计吗?
- 看过 ArrayList 的源码吗?
- 从源码里你学到了什么东西吗?
-
开始横向扩展
- LinkedList 跟 ArrayList 有啥区别吗?
3. 软素质考察
- 学习能力:一般会考察一个新技术你是如何去学习,去应用,如何处理学习过程中面对的问题。
- 沟通能力:在面试整个环节里处处都体现着沟通能力
- 带队能力:如果你有项目,在学校里的项目,你又是头,就会问你怎么安排任务的,组内成员分布,如何管理
- 责任心和owner意识:一般会通过问如何看待加班来体现,反正我是被问过,哈哈哈
4. 压力面!!!
- 这个就是心态和态度问题了
- 比如面试官说你的回答不对,或者一直 diss 你之类的话,很有可能就是压力面了,这时候不要慌
- 如果你觉得你的回答是对的,但是面试官就说你回答的不对,此时不要跟面试官怼起来,给面试官仔细说一下你的理解,可能你们两个没有互相 get 到对方的点,再次询问面试官的问题,理解一下,如果最后还是不行,就认同面试官的。
- 尝试把自己的语速放慢一点,不要着急,减缓气氛,要自信
- **重点:**千万不要心态崩了,跟面试官怼起来
- 比如我自己也遇到这些问题:在线下面陌陌的时候的,面试官一直 diss 我你怎么没有实习呢?你这个项目也不行啊?你说说难点吧,你这个也不算难点啊?你这个学校是啥学校啊?回答问题的时候也在一直 diss 我,勇敢面对他,自信点。
5. 群面???
我面过的那些公司目前没有遇到过群面,最多遇到对面的面试官是 HR+N 个技术一起问问题的,小事,hold 住他,不要紧张,慢慢来,自信点。
关于手写代码的那点事
-
理解题目,在这个过程中要和面试官沟通,询问题目的要求和相关疑问,而不是一上来就开始写程序。
-
设计算法,在这个过程中和面试官不断互动,一步一步探寻最优解,而不是一声不吭,一个人”埋头苦干“。如果找不到最优解,先写一个最笨的办法吧。
-
写完代码,如果感觉自己代码不够优化,可以简单请教面试官更优的解法
面试的时候手撕算法都有哪些形式?

找实习去哪里投?
- 首先牛客网,路径 ===> 求职 ===> 实习广场 会有一些实习岗位,上面主要中大厂
- 拉勾网
- Boss
- 实习僧
- 找自己认识的师兄师姐,看看他们是否有招实习生的,以后我看见有实习生招聘需求,会发给大家
- 各大公司官网,比如搜,滴滴招聘官网,里面就会有实习岗位
学校 low 怎么办?
- 学校只是一个敲门砖,能力还是最重要的
- 学校 low,简历都过不了怎么办,找人看看能不能直达技术那边,跳过 HR
自己总结的基础面试脑图

以下内容为各大公司面经了!!
滴滴(11.5 offer):线上面
8.9投简历:
8.27笔试:
9.16一面:80分钟左右
-
Java集合说一说吧set ,list,map都问了一遍
-
TreeSet和HashSet区别
- 红黑树区别,有序无序
-
hashmap和concurrenthashmap
-
线程池用过没,线程池的参数什么意思,每个都问了一遍
-
拒绝策略说一说
-
synchroBlockQueue 到底可以存几个
-
锁用过没,l
- 叭叭各种锁,
-
锁的什么方法你用过
- tryLock
- getHoldCount
-
lock和tryLock区别
-
lock的公平锁和非公平锁的怎么实现的(源码级别),不限于概念
-
类加载机制,不是类加载几个过程
-
如果多个类加载器加载同一个类,会出现什么情况
-
tomcat的加载过程
-
spring的生命周期,不是bean
-
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博客 blog.csdn.net/wawa3338/ar…
c3p0,dbcp与druid 三大连接池的区别 - 泡面之家 - CSDN博客 blog.csdn.net/qq_34359363…
druid的功能强大、扩展好,
-
那你感觉连接池的功能都有什么
- 资源重用
- 更快的系统响应速度
- 新的资源分配手段
- 统一的连接管理,避免数据库连接泄漏
-
项目大概几个人,开发的人,源码包大小多少
-
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面
11.5 offer
京东(10.10 offer)提前批:线上面
7.1投简历、无笔试
8.1 不知名部门一面(挂)
- 项目构成
- 作为项目组长怎么分工的
- 采用什么开发
- 敏捷式开发,一些点说一说
- 讲讲volatile,可见性举个例子
- 你说你了解juc,你说说juc,举个例子
- ArrayList和LinkedList
- 设计模式,项目中运用了吗
- 说说你的优势吧
- 最后问了面试官建议,
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有几种
- MySQL优化
- 联合索引
- Redis的数据类型
- 项目经验,登录页面怎么做的,越细越好
- 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的原理知道是什么吗?
- 说了synchronized、ReentrantLock、volatile
- 线程池几种你了解过吗
- 说了几种线程池
- 继续问我线程池的区别,线程池参数的各自含义
- 什么时候才会达到最大线程数
- 说了几种线程池
- GC说一说吧
- 类加载机制
二面:感觉很重业务运用
- 自我介绍
- 抽象类和接口的区别
- 能不能用一个设计模式来说明
- 设计模式你都了解哪些
- int和Integer区别
- Session和cookies的区别
- HTTP在哪一层
- 我说了应用层
- HTTP的状态码说一说
- OOA,OOD,OOP是什么说一下
- 数据库的乐观锁和悲观锁了解吗
- 如果给数据库加行级锁,怎么操作
- 索引了解吗
- 高并发说一说吧
- 我说了synchronized、volatile、ReentrantLock
- 说说你的优点和缺点吧
- 你认为最开心和最难过的事是什么
- 你认为有什么书对你影响比较大,不限类型
- 有什么想问我的
HR面:
- 你感觉前两轮面试如何
- 你家里人对你工作的看法
- 想去什么公司
- 了解贝壳吗
- 优缺点
- 为什么不考研
- 能提前来实习是吧
- 有什么想问我的
阿里(二面挂)菜鸟网络内推:线上面
8.22:一面:
- 全程就撕项目,提新的需求给方案
- tcp udp区别
- session和cookie区别
8.26:二面:
- 还是项目,怼了一怼
- MySQL的联合索引
- 哈夫曼树原理
- 一致性哈希算法: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,面试官说这个可能问的有点深了,下一个吧
-
手撕,暴力过了一半,最优时间不够了
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分钟,直接说的,今天就到这吧,感谢你面试我公司,没有让我问问题
回复 加群 简历 面试资料 面试脑图 有惊喜哦
