秋招二本本科、无实习靠基础如何拿到滴滴京东58科大讯飞sp的offer| 掘金技术征文

4,135 阅读33分钟

万字内容!内含自己总结的基础面试脑图,以下内容都是我在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,给自己的目标就是面完滴滴三面就不面了,结束秋招,因为太累太累了。。。

简历应该怎么写???

以下属于个人观点:

  1. 如果成绩好,写上你的 GPA 和排名
  2. 学校好肯定是个亮点
  3. 有博客(前提里面要有内容),有 GitHub 写上去
  4. 大厂实习是个亮点
  5. 项目负责模块最好用:用 xx 实现 xxx 解决了 xxx 问题达到了 xx 效果,网上都说最好用 STAR 法则写,
  6. 计算机类的比赛加分项吧、ACM.....
  7. 技能栈写你会的,精通、熟悉、了解 xxxx。

划重点:字不能错,大小写要写明白,Java 不是 java,我不知道这个单词到底是怎么拼,去官网瞧瞧他怎么写的。

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

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

看多线程知识点前:

  1. 了解多线程编程

看知识点后:

  1. 熟悉多线程编程及原理,内存屏障和 CPU 缓存、线程池应用及原理、synchronize 锁优化、JVM 内存模型、J.U.C并发编程包

再次重点提醒!!!一定要会才往上写!!!

实习、秋招、春招整体流程

整体流程

流程

区别

项目 low 怎么办?

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

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

A:自己一顿叭叭叭,

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

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

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

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

如果没有实习,项目需要做到什么程度呢?

  1. 尽自己的能力做到最好,但是也不要用太高大上的技术去做项目
  2. 用太高大上的技术去做项目,前提是你要做好准备这个技术你会被面试到,你要对这个技术要有一定的理解,问什么,你能大部分答出来
  3. 自己做的项目的负责点一定要熟悉,问啥能答出来

如果面试准备时间紧张,基础和学框架做项目怎么选择?

  1. 重基础
  2. 基础对于校招来说是一个垫脚石
  3. 大厂也比较看重基础,
  4. 时间成本上:基础比学框架做项目周期短,见效快,项目做太多了,需要填的坑就会很多

时间紧,数据结构、计算机网络、操作系统、多线程、JVM这四个的话怎么安排,重要点在哪里

明白以下几点:

image-20200327235845152

网上烂大街的项目可以做吗?

  1. 可以做啊,比如秒杀、电商
  2. 但是做完之后一定要明白这些点为什么这么设计,为什么这么做,要明白的透彻,不要给自己挖坑

有其他语言的项目,比如 Python 的,但是和 Java 后端无关,建议写进去吗?

  1. 可以写,但是前提是你对这个项目有一定的了解,能跟面试官有得聊
  2. 如果不熟悉这个项目或者 Python,就不要写,避免给自己挖坑
  3. 主语言是 Java,二语言是 Python 会是一个加分项

关于套路和技巧

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

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

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

面试的时候,知识点模糊怎么办?

  • 想想思考一下,如果没有 get 到面试官的问题,就仔细问一问面试官指的是哪块
  • 如果完全不了解,试着想想其他思路,看看面试官会不会给你引导一些
  • 不知道说啥了,就说这个点可能是我的知识盲区,我复盘的时候会学习一下这个点

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

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

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

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

知识点记不住怎么办?

  • 理解化记忆,由点成线,线成面,串起来
  • 反复阅读,第一次读懂 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 住他,不要紧张,慢慢来,自信点。

关于手写代码的那点事

  1. 理解题目,在这个过程中要和面试官沟通,询问题目的要求和相关疑问,而不是一上来就开始写程序。

  2. 设计算法,在这个过程中和面试官不断互动,一步一步探寻最优解,而不是一声不吭,一个人”埋头苦干“。如果找不到最优解,先写一个最笨的办法吧。

  3. 写完代码,如果感觉自己代码不够优化,可以简单请教面试官更优的解法

面试的时候手撕算法都有哪些形式?

image-20200327235440399

找实习去哪里投?

  1. 首先牛客网,路径 ===> 求职 ===> 实习广场 会有一些实习岗位,上面主要中大厂
  2. 拉勾网
  3. Boss
  4. 实习僧
  5. 找自己认识的师兄师姐,看看他们是否有招实习生的,以后我看见有实习生招聘需求,会发给大家
  6. 各大公司官网,比如搜,滴滴招聘官网,里面就会有实习岗位

学校 low 怎么办?

  1. 学校只是一个敲门砖,能力还是最重要的
  2. 学校 low,简历都过不了怎么办,找人看看能不能直达技术那边,跳过 HR

自己总结的基础面试脑图

以下内容为各大公司面经了!!


滴滴(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. 锁用过没,l

    • 叭叭各种锁,
  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. 加锁为消化资源,你考虑一下在数据库进行操作吧

      叭叭了隔离级别,说了mysql默认隔离级别(可重复读)

      此时感觉不对了,没有get到点上了

    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博客 blog.csdn.net/wawa3338/ar…

    c3p0,dbcp与druid 三大连接池的区别 - 泡面之家 - CSDN博客 blog.csdn.net/qq_34359363…

    druid的功能强大、扩展好,

  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. 如何实现一个动态加载、实现哪些方法

    实现ClassLoader这个类

    首先加载这个字节码的字符流,然后有个loader方法吧,记不太清楚了

  32. 如何获取当前的ClassLoader

    getClassLoader方法

  33. 那可以保持建立多个ClassLoader吗?

    给他扯到了不同ClassLoader加载一个clas出来的类不一样

  34. 为什么加载器加载出来的类不一样

    不同加载器加载出来的类不一样,因为加载器不同啊

    面试官补充:因为每个加载器都有自己的隔离机制

  35. jvm内存模型

  36. 多线程如何实现主存同步的

    缓存一致性扯一扯,Java内存模型

  37. 那通过什么指令去实现其他工作内存无效的

    save,xx,忘记了

  38. Java里怎么实现缓存一致性的

    volatile、synchronized、lock、信号量、wait/notify

    面试官补充:信号量也是加锁实现的

  39. jvm的锁优化有什么

    说了synchronized,

  40. 那还有其他编译器的锁优化吗,比如锁粗化

    锁消除、、、、、

  41. 网络编程知道吗

  42. 创建socket的过程

  43. 从server端开始说吧,几个步骤

  44. accept操作之后,然后呢

接收客户端传过来的信息吧,

  1. 怎么解析这个信息呢,输出到什么流里呢

  2. 互联网这块网络编程用的也挺多的,比如rpc框架什么的

  3. Java里的IO这块你了解吗,区别

  4. BIO、NIO、AIO的对应类实现了解吗

  5. shell命令

  6. 进程通信方式

  7. Linux调度方式有什么

  8. Linux的缓存有几级

  9. 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

京东(10.10 offer)提前批:线上面

7.1投简历、无笔试

8.1 不知名部门一面(挂)

  1. 项目构成
  2. 作为项目组长怎么分工的
  3. 采用什么开发
    1. 敏捷式开发,一些点说一说
  4. 讲讲volatile,可见性举个例子
  5. 你说你了解juc,你说说juc,举个例子
  6. ArrayList和LinkedList
  7. 设计模式,项目中运用了吗
  8. 说说你的优势吧
  9. 最后问了面试官建议,

8.13 智能供应链部一面

  1. 自我介绍
  2. jvm内存模型,GC
  3. 类加载机制
  4. ClassLoader的分类
  5. JDK1.8新特性,主要问了流Stream
  6. hashmap
    1. 1.8阈值为什么是8
  7. 聊聊框架,SpringBoot,spring,springmvc三者关系
  8. spring AOP
  9. 基于spring的应用,我想让这个程序启动之后,然后再打印一个log,或者一个定时任务,这个怎么实现
  10. AOP 两种代理的区别,什么时候用
  11. mybatis的一个接口,一个xml文件,执行SQL语句是怎么实现
  12. synchronized和volatile
  13. maven的scope有几种
  14. MySQL优化
    1. 联合索引
  15. Redis的数据类型
  16. 项目经验,登录页面怎么做的,越细越好
  17. cookie和session

8.14 智能供应链部二面

  1. 项目
  2. 根据项目负责的一些点提新的需求让我设计
  3. MySQL索引B+树问题,为什么B+

主要就是项目问的多

8.29 HR面

10.10 offer

58同城(11.1 offer):线上面

一面10.18:20分钟

  1. 排好序的数组里找到比target小的下标,

  2. 中间件会什么

    我不会

  3. 好像还有线程的并发包

  4. 剩下的忘记了....

二面10.18:20分钟

  1. 自我介绍

  2. 项目中你觉得自己做的比较好的地方在哪里

    数据库

  3. 数据库索引

  4. 洗牌算法

  5. 本地文件abc.txt,里面存放了5000万个正整数,每一行一个正整数,正整数取值范围为1-5000万,现要求你找到第300个大的正整数?要求时间复杂度为O(1)

    O(1) 我很懵逼了

  6. 生产者消费者需要注意什么事项

HR面10.18:

贝壳找房(三轮面完之后挂):线下面

8.24 一面:

  1. 自我介绍
  2. 项目
  3. 手撕反转链表
  4. Java基础你还了解哪些
    1. 我说了多态的两种形式
    2. 看过ArrayList和LinkedList源码
  5. AOP
  6. tcp三次握手
  7. 索引你用过吗
  8. 高并发知识你了解什么
    1. 说了synchronized、ReentrantLock、volatile
      • volatile的原理知道是什么吗?
  9. 线程池几种你了解过吗
    1. 说了几种线程池
      • 继续问我线程池的区别,线程池参数的各自含义
      • 什么时候才会达到最大线程数
  10. GC说一说吧
  11. 类加载机制

二面:感觉很重业务运用

  1. 自我介绍
  2. 抽象类和接口的区别
    1. 能不能用一个设计模式来说明
    2. 设计模式你都了解哪些
  3. int和Integer区别
  4. Session和cookies的区别
  5. HTTP在哪一层
    1. 我说了应用层
  6. HTTP的状态码说一说
  7. OOA,OOD,OOP是什么说一下
  8. 数据库的乐观锁和悲观锁了解吗
    1. 如果给数据库加行级锁,怎么操作
  9. 索引了解吗
  10. 高并发说一说吧
    1. 我说了synchronized、volatile、ReentrantLock
  11. 说说你的优点和缺点吧
  12. 你认为最开心和最难过的事是什么
  13. 你认为有什么书对你影响比较大,不限类型
  14. 有什么想问我的

HR面:

  1. 你感觉前两轮面试如何
  2. 你家里人对你工作的看法
  3. 想去什么公司
  4. 了解贝壳吗
  5. 优缺点
  6. 为什么不考研
  7. 能提前来实习是吧
  8. 有什么想问我的

阿里(二面挂)菜鸟网络内推:线上面

8.22:一面:

  1. 全程就撕项目,提新的需求给方案
  2. tcp udp区别
  3. session和cookie区别

8.26:二面:

  1. 还是项目,怼了一怼
  2. MySQL的联合索引
  3. 哈夫曼树原理
  4. 一致性哈希算法:zhuanlan.zhihu.com/p/34985026
  5. UDP不可靠会丢包,为什么还用它,怎么解决UDP不可靠
  6. 后面就是开始聊各种人生了

8.28拒信

字节跳动(一面挂):商业变现线上面

10.9一面:70分钟左右

  1. 简单介绍一下项目吧

  2. 前端框架用过什么

    Bootstrap

  3. Vue那些呢

    没有用过

  4. 你觉得这个项目难点在哪里

  5. 图片上传,你这个是单机的,那如果是多台服务器呢,怎么处理

  6. 你设计的表符合什么范式

  7. 说一下第一二三范式的区别吧

  8. OSI模型

  9. HTTPS建立的过程

  10. 说说Spring的IOC、AOP

  11. 那你说一说ASM吧

  12. Spring什么时候用到jdk动态代理,什么时候用到cglib代理

  13. 发现频繁Full GC怎么去排查和调整

  14. 还会什么其他的jvm命令

  15. HashMap1.7和1.8的区别,ConcurrentHashMap

  16. CAS比分段锁好在哪里,缺点又是什么

  17. 如何避免CAS一直自旋消耗资源

  18. 用过什么线程池,各自在什么场景下使用

  19. Redis数据类型

  20. Zset怎么实现的,底层是什么

    跳表

  21. 跳表是一种什么样的结构、和查找树有什么区别

  22. Redis如何做持久化的

  23. SpringCloud学过吗

    没有学过

  24. 分布式和集群了解过吗

  25. 乐观锁了解过吗,说一说

  26. InnoDB如何实现悲观锁的

  27. Synchronized怎么实现的

    说到了monitorenter

  28. 那你知道jvm接收到monitorenter的时候,会执行什么操作

    我说了给monitor变量+1,面试官说这个可能问的有点深了,下一个吧

  29. 手撕,暴力过了一半,最优时间不够了

Bigo(二面挂):线上面

9.2一面:

  1. 自我介绍

  2. 分代收集算法

    • 是套组合拳,新生代分为Eden区和Survivor From和To区,用复制算法,老年代用标记-整理、标记-清除,
    • 复制算法:开辟两个空间,一块用,一块不用,清除的时候把一块用的,存活的放入另外一个空的里面
    • 标记-清除:标记,然后清除,缺点:碎片化
    • 标记-整理:解决碎片化问题,把内存整合连续
  3. 什么参数能够调整新生代的比例?

    • 回答错误
      • -XX:SurvivorRatio:Eden和Survivor的比值,默认8:1
      • -XX:NewRatio:老年代和年轻代内存大小的比例
  4. 如何一个程序频繁的发生Full GC,有什么办法改善这个情况?

    • 用一个指令去参考Full GC的次数,新生代老年代的比例,调整各比例
    • 产生Full GC的原因可能是:新生代到老年代的对象,老年代的空间不足,才产生Full GC
  5. 标记-清除和标记整理区别?

    • 见上
  6. 程序发生内存泄漏,你会怎么去查这个问题?

    • 产生内存泄漏的原因,可能是哪个引用没有用了,但是没有被回收
    1. 那你如何查出这个代码
      • 没有实战过,不好意思
    2. 换个思考吧,如果你的CPU突然变高,到100%,没有实战过,有什么思路吗?
      • 100%,肯定是代码块死循环了,我会用最笨的办法去找循环的代码,然后判断
  7. 讲一下hashmap的数据结构吧

    • 1.7和1.8的变化,
  8. ConcurrentHashMap

    • 1.7和1.8变化,分段锁、CAS锁
  9. Java如何实现线程池

    • 叭叭叭
  10. Java实现线程同步有哪些方式?

    • synchronized
    • lock
    1. 这两个有啥区别吗?
      • 叭叭叭叭
    2. 还有其他方式吗?
      • wait和notify
    3. 还有信号量,哈哈哈哈(邪恶的笑)

    !!!互斥量、读写锁、自旋锁、条件变量

  11. 原子类你用过吗?

    • 用过,AtomicInteger,底层是用的CAS实现的
    1. CAS怎么实现的
      • CAS是jdk8 unsafe类实现,jdk9 是VarHandle实现
      • CAS是在openjdk用unsafe.cpp实现的
    2. CAS本质性实现原理是什么?
      • 说了V- A-B
      • 是这样吗?
    3. 是这样的,但是不是我想问的,哈哈哈(邪恶的笑)
  12. 进程和线程调度算法?

    1. 就说线程吧
      • 先来先服务
      • 短作业优先
      • 时间片轮转
      • 优先级调度
      • 多级反馈
  13. 讲讲数据库吧,数据库引擎

    • MyISAM和InnoDB叭叭叭
  14. select count(*) form 表 用哪个引擎快一点

    • MyISAM快一点吧,
  15. 组合索引是a,b,select 语句 where b = 1 and c = 2

    • 最左匹配原则,不走索引,但是如果索引是b,a,就走索引
  16. like 走索引吗

    • 如果用%模糊查询不走
  17. 邪恶一笑,where a = 1 ,b = 2 OR b =3 走索引吧

    • 我也笑,前几天好像看过,我记得不走索引
  18. 如何查看慢查询

    • 用explain,打开慢查询日志,叭叭叭
  19. 如何查看SQL语句的每一个查询计划,就是每一步消化多少毫秒

    • emmmm,没有实操过,尴尬笑
    1. explain分析出来表数据都有什么
  20. 你自己还可以讲一下其他SQL语句优化

    • 设计表的时候,范式问题
    • 表最好是一对一,一对多,最好不要用多对多,多对多,最好建立中间表
    • 硬件优化了,成本高
  21. Redis基本数据类型

    • String
    • Hash
    • List
    • Set
    • Sorted Set
    1. 如何取List的一条命令
      • lpush,加入,lrange取,
    2. push不是应该对应的pop吗
  22. 发现服务器上TIMEWAIT(我听成摊位)状态的TCP过多是什么问题?

    • 出现在三次握手上
    1. 说说三次握手的状态吧

      • 叭叭叭,TCP过程,
    2. 然后呢?

      • 然后开始传输数据,可能会出现SYN 洪水问题

      !!!!!!复盘发现TIME WAIT是四次握手里的!!!!!!

  23. 说说项目吧,不用太详细,讲一个难点吧

    • 讲了数据过滤
  24. 做这个项目有什么提高呢

  25. 你问我吧

    • 面试环节,面试官觉得我有什么不足或者需要努力的地方吗
    1. 我觉得都还可以,就是经验不足,但是这不是你的问题
    2. 刚才那个CAS问题,好像没有get到您的点上
      • 对,但是没关系
    3. 问了计算平台,两个岗位的区别
    4. 技术栈方向,
      • 什么Hadoop,叭叭、部门也分不同的方向,有云平台的方向,东西也比较多

9.12二面:

  1. 根据前序中序生成树
  2. 还有一个算法题忘了
  3. 线程池参数,execute(),里面那个是实现了什么接口
  4. 单例模式
  5. 设计题:在控制层,记录访问次数,每次访问,count++,我说这个不安全,加锁可以保证安全,他说还有其他的吗

bigo 9.12 二面,手撕了2个算法,基本撕出来了,问了一个线程池的问题,没有回答出来,没有get到点上,问了我单例模式,我说单例模式就产生一个对象,安全,给了我一个情景题,在控制层,记录访问次数,每次访问,count++,我说这个不安全,加锁可以保证安全,他说还有其他的吗,我说不知道了,视频面了47分钟,直接说的,今天就到这吧,感谢你面试我公司,没有让我问问题

回复 加群 简历 面试资料 面试脑图 有惊喜哦