面试-1


首先说明我是 Java 开发,我的范围只适合 Java 开发的,其他方向我不太了解,并且很多公司侧重点也不一样,比如字节不侧重语言,侧重操作系统四大金刚那些,也看公司吧,就像考不同的学校,会有不同的大纲,因为我是本科生,都比较侧重基础

Java:Java 基础杂七杂八的(经典必考集合各种死磕源码吧)、多线程并发包各种死磕(我是死磕到源码),JVM 死磕到细节、GC 死磕到细节、JVM 调优自己练习练习

框架:spring 看看 IOC 和 AOP 的源码,但是太难太难了,就光那个方法名就特别长,前期就只知道个 IOC 和 AOP 是啥,后期就去看源码记大概一个原理过程,SpringMvc 的流程,一些注解吧,Mybatis 也是那些常考的点吧,缓存可以了解一下

数据库:数据库死磕,越深越好

操作系统和网络:背常考的、但是太深了,还是菜

设计模式:太多了记不住,我就是简单了解一下,叭叭给他说有啥用,Java 里哪里用了 xx 模式

算法和数据结构:是我秋招开始补的、做完类型题进行总结,刷的就是 LeetCode 吧,我是先 LeetCode,然后剑指 offer,但是我也是有很多笔试直接挂的,除了遇到一些简单的,或者原题或者类似的题能 A,一定要总结套题,类型题,一定总结一定总结一定总结

Redis:没有用过,但是就是记吧,那些常考的东西

IO 模型、网络编程:比较菜了,不咋会

Linux:我也比较菜了,就会简单的命令

微服务、分布式、集群、中间件:我不了解,只知道有这个玩意

关于源码阅读:建立在自己会使用这个东西之后再去阅读源码,阅读常用的方法源码即可,第一次阅读源码建议看视频跟着阅读或者找博客,要不然比较生疏很难,,,,

我的项目很 low 怎么办??

low 不是你的问题,但是项目也可以“包装“啊,此“包装”非彼包装,举个例子吧:

Q:原项目有一个等级权限管理,就 3 层等级,数据库里设计好了就分 3 级,面试官就问到你了,你这个怎么做的。

A:自己一顿叭叭叭,

Q:面试官给你提了一个新需求,如果 3 层等级变了,变成了不一定多少层,你又怎么设计?

面试官给你说出了问题,不管你有没有回答出来,但是希望你面完之后,你对这个需求去重新设计一下,下一次面试自我介绍的时候说:

对于 xx 项目,我自己私下也有复盘,比如当需求变为 xxx 的时候,我考虑到这样设计:叭叭叭…..。

这样你的 low 项目就变得不再 low 了,突出你的思考、你的想法

项目 low,无实习经验,还是个渣本,怎么拿到 offer 的

死磕基础,把很多源码看了,集合、JUC 下的,面试就磕源码,操作系统和计算机网络背不住,就是手写吧。我拿的 offer 里,基本都是 Java 问的很多

关于套路和技巧

关于面试:面完问一下面试官对你的评价,找到自己的不足,另一方面也表现出自己强烈的学习欲望,反正我每次问面试评价都是:基础不错,就是动手实践不是很好,xxx,,,,如果感觉跟面试官聊得不错的,可以厚着脸皮要个微信加,反正我面滴滴三面要微信加,被面试官拒绝了,其他的也有成功的,哈哈哈哈哈

面试复盘:我一般线上面试会录屏或者录音,面完之后复盘总结,不单单是总结,你还要找到自己的不足去弥补,防止下一次再被问,这就是为什么我面经这么全的原因,不是我记性好,,,,,哈哈哈哈哈

关于投简历:写一个 Excel 或者 Word 记录投的公司,时间,投递方式,方便后期去查询结果

你的秋招时间这么长,你的心态如何呢?

秋招历时足足 4 个月,心态就像心电图一样,考研就像前期平稳,后期曲线上涨,因为自己也很乐观,在整个秋招之路里,也有人说话,自己也有几个网上的小伙伴群,每次就是说说话,互相激励对方,如果你是一个人的话,希望找几个小伙伴一起交流说说话,避免自闭低沉消极

关于众多知识点和面经你又是怎么选择去看的呢?

1.先看众多的知识点,广度先建立起来,遇到一个不会的知识点千万不要入坑掉进去,越陷越深 2.广度那么多,我看一遍记不住咋办,那就多看几遍,理解化记忆,找一些共同点进行记忆,手写记忆(秋招以来我大概写了 20+的单面 A4 纸吧),抱团组队,互相面试,互相讲解 3.广度拉起来之后,去看看深度,了解一下源码 xx 的,深度是你从众多面试者脱颖而出的法宝 4.面经看了一定的知识点之后再去看,作为查缺补漏之用,当你要准备面哪个公司之前,去看看这个公司的面经。

简历应该怎么写???

以下属于个人观点:

1.如果成绩好,写上你的 GPA 和排名 2.学校好肯定是个亮点 3.有博客(前提里面要有内容),有 GitHub 写上去 4.大厂实习是个亮点 5.项目负责模块最好用:用 xx 实现 xxx 解决了 xxx 问题,网上都说最好用 STAR 法则写, 6.计算机类的比赛加分项吧、ACM….. 7.技能栈写你会的,精通、熟悉、了解 xxxx。
划重点:字不能错,大小写要写明白,Java 不是 java,我不知道这个单词到底是怎么拼,去官网瞧瞧他怎么写的。

如果以上你都没有???我好慌,我该怎么办???

把你复习的众多知识点堆在技能栈上,前提是你要会!会!会!不会就不要写(别给自己挖坑),比如:

看多线程知识点前:

1.了解多线程编程
看知识点后:

1.熟悉多线程编程及原理,内存屏障和 CPU 缓存、线程池应用及原理、synchronize 锁优化、JVM 内存模型、J.U.C 并发编程包
再次重点提醒!!!一定要会才往上写!!!

实习、秋招、春招那点事

坎坷的 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,给自己的目标就是面完滴滴三面就不面了,结束秋招,因为太累太累了。。。
总结:

面试就是把自己变成商品,不遗余力地推销给面试官,从而打动他的过程。

面试就像一场考试,给定了要考的范围,就是你能不能去坚持死磕他了,坚持死磕对了,加上一点运气+临场发挥就是胜利,祝各位加油!!!冲冲冲!!!就是干!!!

以下面经顺序为难易度排序及 offer 排序

滴滴(11.5 offer):线上面

8.9 投简历:

8.27 笔试:

  9.16 一面:80 分钟左右

1.Java 集合说一说吧 set ,list,map 都问了一遍
2.TreeSet 和 HashSet 区别
•红黑树区别,有序无序
3.hashmap 和 concurrenthashmap 4.线程池用过没,线程池的参数什么意思,每个都问了一遍 5.拒绝策略说一说
6.synchroBlockQueue 到底可以存几个 7.锁用过没,
•叭叭各种锁, 8.锁的什么方法你用过
•tryLock
•getHoldCount
9.lock 和 tryLock 区别
10.lock 的公平锁和非公平锁的怎么实现的(源码级别),不限于概念 11.类加载机制,不是类加载几个过程 12.如果多个类加载器加载同一个类,会出现什么情况
13.tomcat 的加载过程
14.spring 的生命周期,不是 bean
15.AOP
16.ASM 怎么实现 cglib
17.mybatis 的插件用过没, 18.项目, 背景:暂存数据,每一次把用户填写的数据暂存到数据库,暂存字段,0 暂存,1 正式存 1.如果实现 a 用户暂存数据 1,b 用户暂存数据 2,实现 a 下次只能看见数据 1,
给 car 表加一个操作人字段,每次判断 2. car 表怎么设计的,
id,车牌号,xxx,xx,暂存标记 3. car 表主键是什么
主键 id 4.主键 id 有什么规则吗?
自增长 5.如果一个车牌号重复了,添加的时候怎么处理的
每次填入的时候,都会在数据库里查询一下,判断是否有 6.如果 4 个人同时填入车牌号为 888 的车,怎么处理这个问题 7.加锁为消化资源,你考虑一下在数据库进行操作吧 8.隔离级别是解决什么问题的啊
并发的时候问题,叭叭脏读等问题, 9.隔离级别什么时候才出来啊? 19.数据库索引,索引类别
唯一索引,聚簇索引,非聚簇索引 20.聚簇索引和非聚簇索引区别 21.二叉树和 B+树的区别
叭叭半天,没有 get 到点上
1.B+树所有数据都在叶子节点,每次查找时间稳定 2.叶子节点都有指向下一个叶子节点的指针,范围查找比较方便 22.那如果把二叉树弄成,所有数据都存在叶子节点呢
二叉树,如果删除的话,可能会变成线性树,时间复杂度变高 23.那如果平衡二叉树呢
叭叭了,记得好像磁盘存储是用的 b+树结构,索引是存在磁盘上的,用 B+树会减少 IO 操作 24.怎么减少 IO 操作的 25.磁盘上所有文件都是 B+树存储吗?
文件夹的文件吧 26.磁盘上怎么存储这些数据的 27.你了解什么文件格式
elf,a.out
28.Linux 操作系统了解过吗
Linux 不太了解过,用过 Linux 命令,进程同步
29.Linux 命令用过哪些
cd,grep,pwd,mv,管道符,ps
30.Linux 根目录下有哪些文件夹
etc,bin,我好像记得是,可能记不太清楚了 31.手撕翻转树,递归+递推

32.手撕最小路径和

10.17 二面:50 分钟左右

1.开源项目了解什么
2.SpringBoot 如何加载,源码 3.学习源码如何深入学习的
叭叭叭 ArrayList 和 LinkedList 4.如果去了解 spring 的启动过程,你怎么去了解
5.tomcat 启动的流程,要加载什么资源 6.项目中有哪些收获 7.项目中负责哪些点,技术方向吧 8.为什么用 mvc 架构
面试官:其实这个 mvc 架构知识点还是很深的,要做好还是很难的 9.项目里 Spring 的事务是怎么管理的
在方法上加注解 10.那为什么加注解可以实现,这个加载机制是怎么实现的,源码级别 11.为什么这个注解可以实现事务 12.那这个事务和数据库的事务有什么关联
acid,事务隔离级别 13.那你们当时项目选技术是怎么思考,比如 mybatis 用的什么连接池
用的 c3p0 14.那你知道有其他的连接池,各自有什么区别
c3p0、dbcp、druid 三大连接池对比 - wawa3338 的博客 - CSDN 博客 https://blog.csdn.net/wawa3338/article/details/81380662c3p0,dbcp与druid 三大连接池的区别 - 泡面之家 - CSDN 博客 https://blog.csdn.net/qq_34359363/article/details/72763491druid的功能强大、扩展好, 15.那你感觉连接池的功能都有什么 1.资源重用 2.更快的系统响应速度 3.新的资源分配手段 4.统一的连接管理,避免数据库连接泄漏 16.项目大概几个人,开发的人,源码包大小多少
17.juc 看过哪些,说 AQS 的机制
18.Lock 如果给线程分配锁的
叭叭 ReentrantLock 19.公平锁和非公平锁的区别,源码级别
面试官补充:非公平锁就是抢占式的嘛 20.队列呢,了解什么
ArrayBlockQueue,LinkedBlockQueue 21.各个队列使用场景
22.queue 里面都有什么方法
offer,add,put 23.各个方法仔细讲讲,都会出现什么情况,添加的方法有什么,都有什么不同出队列呢,都有什么,跟 offer 对应的
24.jvm 看过什么、jvm 常用命令
25.jstat 的参数,比如看一个线程的回收情况,怎么看、其他的命令呢 26.动手去编译 JDK 源码
27.JVM 的类加载流程,到解析到字节码 28.如何去验证版本的冲突的,比如 jdk1.6 到 jdk1.7 29.初始化去怎么做的 30.实际运用中,ClassLoader 都有了解什么 31.如何实现一个动态加载、实现哪些方法 32.如何获取当前的 ClassLoader 33.那可以保持建立多个 ClassLoader 吗? 34.为什么加载器加载出来的类不一样
35.jvm 内存模型 36.多线程如何实现主存同步的
缓存一致性扯一扯,Java 内存模型 37.那通过什么指令去实现其他工作内存无效的
38.Java 里怎么实现缓存一致性的
volatile、synchronized、lock、信号量、wait/notify
面试官补充:信号量也是加锁实现的
39.jvm 的锁优化有什么
说了 synchronized, 40.那还有其他编译器的锁优化吗,比如锁粗化
锁消除、、、、、 41.网络编程知道吗 42.创建 socket 的过程 43.从 server 端开始说吧,几个步骤 44.   accept 操作之后,然后呢 45.   怎么解析这个信息呢,输出到什么流里呢 46.互联网这块网络编程用的也挺多的,比如 rpc 框架什么的 47.    Java 里的 IO 这块你了解吗,区别
48.BIO、NIO、AIO 的对应类实现了解吗
49.shell 命令 50.进程通信方式
51.Linux 调度方式有什么
52.Linux 的缓存有几级
53.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 分钟左右

1.说说 ArrayList 的源码各种方法吧,add,remove 一系列方法
2.MySQL 的聚簇索引 3.知道 SQL 注入吗、Java 里怎么防止的呢
4.Redis 和数据库的一致性 5.了解过什么开源的东西吗
Spring 6.那说说 AOP 吧
11.1 HR 面
11.5 offer

面试资料

https://www.yuque.com/51cto/training/irbzty
https://www.yuque.com/51cto/training/hqrxuk

[公众号]

image.png image.png

[免费领书]

phone.JPGoffer.JPG


文章作者:   future
版权声明:   本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 future !
 上一篇
服务器搭建 服务器搭建
华为云+宝塔面板 服务器小白保姆级配置 78.88 一年服务器【2 核 4G 云服务器低至 331 元/年,限时抢购】华为云开年回馈用户,产品低至 1 折,您的专属链接:https://activity.huaweicloud.com/20
2020-03-22 future
下一篇 
面试经验 面试经验
2020-03-22 future
  目录