2019秋招经验谈


以下乃一家之言,有用,则吾心甚慰,无用,君权当一笑。
一家之言,常有多家之辩,望诸君善待吾之善心,莫急言于在下。
吾求无错,奈何水平所限,失误再所难免,请各位提之,吾当改之。
吾所求岗位均为研发岗位,故技术人才更适用之。


目录

0. 个人情况

1. 准备工作

  • 1.0 概述
  • 1.1 我的练级之路
  • 1.2 认知思维篇
  • 1.3 专业技术篇
  • 1.4 面试技巧篇
  • 1.5 学习资料篇

2. 面经

  • 2.0 概述
  • 2.1 中国银联
  • 2.2 顺丰科技
  • 2.3 VIVO
  • 2.4 海康威视
  • 2.5 招商银行信用卡中心
  • 2.6 华为
  • 2.7 携程
  • 2.8 虎牙
  • 2.9 平安科技
  • 2.10 其他公司

零.个人情况

  • 学校:211
  • 专业:非计算机专业,但是是电子类专业
  • 应聘岗位:Java后端开发(或者相关开发岗位)
  • offer:中国银联 顺丰科技 vivo 海康威视 招商银行信用卡中心
  • Java相关知识学习时间:2017.11 ~ 2018.9 (以前是做雷达相关的研究)
  • 秋招正式准备时间:2018.5.15 ~ 2018.8 (前面还有零散的准备)
  • 面试城市:西安
  • no offer: bat(二面挂) 网易(一面挂)虎牙(一面挂)平安科技(一面挂) 华为(还在池子里泡着呢)携程(还在池子里泡着呢)

一. 准备工作

1.0 概述

  • 首先要明确,offer与认知思维、专业技术、面试技巧以及运气都分不开,即
    offer = 认知思维 + 专业技术 + 面试技巧 + 运气
    (1)认知思维是指求职者的心理准备,思维准备,决定了准备的质量以及offer的质量;
    (2)专业技术是指求职者的专业实力,是校招的基础,敲门砖,决定了offer的下限;
    (3)面试技巧是指求职者的语言表达,归纳整理,能力包装等能力,为专业能力锦上添花(而非雪中送炭),决定了求职者是能够发挥出应有的专业水准。
  • 接下来我将围绕认知思维、专业技术以及面试技巧展开介绍。

1.1 我的练级之路

1.1.1 选择与方向

关于我的练级之路,我想从一个面试经常问到的问题谈起:你为什么要从搞雷达转到搞Java开发呢?为什么从一个非常高端的领域转到一个简单的应用领域呢?你不觉得浪费你的才能吗?是的,我的研究方向是雷达相关,与Java开发完全不搭边,为什么要转呢?主要原因有以下几点(注意,面试的时候可不能这么回答呀,童鞋们,我这里只是说了个大实话而已,面试的时候得包装啊,童鞋们):

  1. 我发现我不适合做雷达方向的研究,整个雷达领域其实涉及的知识点是非常多的,需要掌握雷达相关理论和雷达设备本身以及战场环境3个纵深领域的知识,而雷达理论、雷达设备与战场表现三个领域的表现其实并不完全一致,想要做出成绩,其实需要经历大量年限的积累,对整个雷达领域有了一个整体的积累之后,你才能做出有效的成绩(注意这里的有效是指不是骗国家钱的那种研究,而是实实在在的能用在实战中的研究,不细说了),因此整个领域的发展不是循序渐进的发展,而是断崖式厚积薄发的发展,因此其实挺难的。
  2. 雷达方向的就业面很窄,基本上主要去研究所工作,而研究所的工作氛围并不适合我(说的直接点,事实上是工资更加不适合我)当然了,现在其实随着自动驾驶的兴起,雷达算法工程师也逐渐可以去民用公司赚钱,这点其实非常好

因此想要换一个方向去做,或者说换一个技术路径去发展,但是毕竟是换一个方向去发展,时间和精力有限,需要选一个难度较低的切入点,因此选择了 Java后端开发工程师

既然谈到了选择,这里需要提醒一下大家,在找工作之前,一定要想想自己适合做什么样的工作,自己感兴趣的是什么工作,这点非常重要。

1.1.2 制定计划

谈完选择,定下方向,接下来就是制定计划了。整个准备过程其实一直都是制定计划、执行计划、打破计划、重新制定计划、重新执行计划的循环。因此我下面就直接介绍我都做了哪些事情。直接上图吧。

图片说明

在这个过程里你会发现,生活从来没有准备到完美的时候,计划永远都赶不上变化,那么校招也是一样,你永远不会有准备好的那一天,那就在准备了多少就直接上战场吧。

1.1.3 执行计划

既然知道了该做什么事情,那么你就应该像一只野兽一样,开始捕猎,不见血不停止,你需要拼命地野蛮生长。

  • 2018.10.1 - 2018.10.15
    我其实是2018.10就有意识的开始准备找工作了,但是那个时候需要干实验室老板的任务,因此都是每天项目任务完成之后,开始零散的学习Java基础知识,当时每天项目任务完成,开始复习的时候,基本都是晚上11点左右了,每天基本上学习到凌晨0:40左右,回宿舍休息,第二天接着来。就这样,学习了差不多有半个月,后面项目越来越紧,需要投入的时间越来越多,然后就开始中断了。对Java有了一个整体的认识。

  • 2019.2
    直到寒假放假,大概2019.2 才有了2周完整的学习时间,这2周,深化了一下Java基础知识,Java基础基本上已经有一个全面的了解了。3月返校,老板的任务更重了,基本上挤不出什么时间复习,因此我加班到5月中旬,把我所有的相关的任务全部做完之后,跟老板商量,能不能开始找工作,不再做实验室项目了,老板曰,可以。尽管后面老板还找我,但是其实已经没有那么频繁了,因此我开始有了一定的时间复习,但事实上,其实并不够,其实还是有很多实验室项目的事情需要做,但是好歹可以有自己的时间复习了。

    在这里我要给大家一个建议:当你实验室活很多的时候,你需要给你的老板去说你即将要找工作的事情,去和他商量,为啥这么做呢?首先,老板对你毕业有身杀大权,你需要征求他们的同意,才能有一定的时间去找工作,不至于发生因为找工作而没有完成实验室任务,导致和老师发生冲突,那就不好了;其次,你提出找工作的事情,其实是给老师释放一个信号:你要找工作了,希望老师能少安排活,即使他最后没有少安排活,也会降低对你完成任务的期许,这样不容易造成冲突。

  • 2019.5.15 - 2019.6.15
    正式复习开始了,在这段时间里,开始大量复习计算机网络、Linux、数据库(MySQL, Redis)的知识,大量总结归纳。同时呢,也开始准备一个Java后端的项目:这个项目其实就是叶神的高级项目课https://www.nowcoder.com/courses/semester/senior, 然后边做边学习Spring Boot,Spring,MyBatis这些框架,同时也加深对数据库的理解,并且有意识地开始学习如何优化代码,如何引入设计模式。

    在整个项目的学习和准备过程中,我要给大家一个建议:那就是准备校招的时候,其实应该以结果为导向以实战为线索,在实战中,在项目中去应用自己学习过的知识,同时学习新的知识,通过迭代来将知识、能力以及思维逐渐形成一个体系:知识-思维-能力-案例 四位一体的体系。

  • 2019.6.16 - 2019.7.15
    这段时间里,最重要的事情莫过于算法了,在这段时间里,主要的工作就是看算法相关的书籍,了解算法基础知识,然后开始刷题,加深理解。

    在学习算法的过程中,其实,也一直接着做Java后端的项目;同时呢,还在深入的学习JVM, 学习设计模式。

  • 2019.7.16 - 2019.8.8
    这段时间呢,主要完成Java后端的项目,同时,伴随着Java多线程、设计模式的学习,然后开始复习计算机网络、Linux、数据库等。

  • 2019.8.9 - 至今
    这段时间呢,就开始了大量的笔试,面试。

1.1.4 总结

其实整个校招准备的过程中,就是一个制定计划、执行计划、打破计划、重新制定计划、重新执行计划的循环。在这个过程里,你会被很多乱七八糟的事情打断,你需要不断平衡实验室工作和校招复习之间的准备工作。这里你就需要采取很多策略,去保证你的复习时间和复习质量,同时你也需要采取有效的心态和认知去对待整个过程。

整个校招过程中,你会发现,你的认知和思维会影响你的技术准备、面试发挥,你的技术准备的程度、面试发挥的好坏又会反哺你的认知和思维,整个过程是一个稳定自我,提升自我,然后挑战外在的一个过程。

下面就详细地介绍一下,该如何准备。

1.2 认知思维篇

1.2.1 战略悲观与战术乐观

我在学习过程中,一直有个态度,就是战略悲观与战术乐观。什么意思呢?解释一下:

  1. 所谓的战略悲观是指,在整个准备的过程中,心态上,要认识到自己永远都不可能准备完美,永远会有缺失和漏洞,这是很正常的,甚至单纯的一个知识点,以现在的能力,每个人都不可能准备到面面俱到,因此不要苛求自己,不要追求完美***,抓大放小,抓住主要矛盾,解决核心问题,这是很重要的。
  2. 所谓的战术乐观是指,一旦要参与战斗,一旦去笔试,去面试,那么你就认为你是准备好的,在这样的情况下,你要明白,你需要做的是发挥出你现有的水平,发挥出你当下的水平就够了,而不是去瞻前顾后,认为自己这也不会,那也没看,不要管那些,你要做的就是自信地去应对每一场笔试,每一场面试,把你会的发挥出来,而且每次战斗都要比上次要进步,那么你的目标就达到了。

因此,在整个校招的准备过程中,你需要做到:

  • 对于整个校招而言,你要保持战略悲观的态度,充分利用每一分每一秒去准备,不要苛求完美,抓住核心知识和技能去准备;
  • 对于每一场笔试或者面试而言,你要保持战术乐观,你要每一场都保持自信,认为你已经准备好了,然后尽情地去发挥,以战养战,不断精进。

整个校招由大大小小多场战斗组成,你要赢的是最后的胜利,而不是某一场的胜利,因此自信地去应对每一场。所谓胜败乃兵家常事,单场的失败只能证明你当下没有准备好,你要做的是查漏补缺,不断精进,迎接下一场战斗。其实,当你参加一定场次之后就会发现,哎呀,原来套路是一样的,那个时候你就可以开始收割了。

记住:战略悲观与战术乐观做一个长远有野心,当下有信心,事后有决心,正确认识成败,立足长远的求职者

1.2.2 自由与平等

我在面试的过程中,保持的态度是自由与平等,什么意思呢?解释一下:

所谓的自由与平等,指的是面试者和面试官之间是平等的,面试者与面试的公司之间是平等的,没有任何的等级之分,这里的自由与平等,既指个人尊严与人格的平等,也指面试者和公司之间的选择平等,双方没有任何的权力和资格去藐视和歧视对方。这个非常重要。

面试者在参加面试的时候,需要保有自由与平等的态度,要做事先做人,要认识到你与面试官之间是平等的,首先保持你自己的人格尊严,然后再考虑面试,因此你没有必要对面试官卑躬屈膝,低声下气,没有必要惧怕对方,没有必要去紧张,见面了,一声干净利落地“老师好”或者“面试官好”,然后一字一句的清晰地去与面试官交流你的观点和主张,这个非常的重要。不要因为一个面试而丢掉了自己的骨气,这远比你面试本身更重要。

既然是自由平等的,那么面试者与公司之间的选择也自然是自由平等的,有时候,你可能会发现自己明明准备的很好,面试交流的也很好,但是就是被挂了,为啥?只能说明你的面试不符合这个公司的招聘标准,只能说明公司认为你不合适,不能说明你不行,或者你的方向选择是错的,尤其不能说明你的智商有问题,你要做的是,心里淘汰掉这家公司,然后接着下一家。

记住:自由与平等做一个自信,大方,自尊,平等的求职者

1.2.4 胜而后战

是故胜兵先胜而后求战,败兵先战而后求胜。 - 《孙子兵法·形篇》

这句话是说,两军交战,胜利的队伍在战斗之前就已经做了充分的准备,胜利是准备好的结果。

这句话其实很好地说明了,整个校招,若想取得好的结果,其实得早点开始准备,尽全力地早点开始准备,要明白,开始准备的早,不一定结果就好,但是准备的晚,大概率是很难取得自己满意的结果的。

孙子有云,“凡战者,以正为合,以奇为胜”。这句话是说,作战,先要把正面的兵排好,要排的不偏斜,合乎法则,这叫正;如果此时你还有多余的兵力,你就赢了,这叫以奇(ji)为胜。

这句话其实很好地说明了,整个校招其实不止你自己要复习地好,你要复习地好到干掉和你竞争同一个岗位的人,那么你就应该比你的同行多做准备,不仅要充分的准备,而且要额外的准备。

曾国藩,一代文人,但是在打仗上确实甚为了得,为啥呢?因为老爷子喜欢“结硬寨,打呆仗”。老爷子打仗的时候,大部分时间,都在挖沟,基本上他参加的战场,都是沟壑纵横。他先用结硬寨的方式把敌人围起来,限制敌人的行动能力,使自己利于不败之地,然后再徐徐图之,以求胜利。

曾老爷子这个方式,其实也正是我们校招的方式,应对每一场面试,我们要做的就是掌握核心知识点,尽最大努力,做尽可能充分地准备,使自己在专业能力上立于不必之地,然后徐徐图谋更好的待遇。

记住:凡战者,以正为合,以奇为胜。以结硬寨,打呆仗的方式去尽可能充分地准备校招(其实有时候也意味着尽可能早的去准备),确保自己在能力上能立于不败之地,那么剩下的就是尽情发挥,然后收割校招的胜利果实了。因此,做一个用笨办法踏实复习的求职者

1.2.5 军团作战

校招,其实不是一个人的战斗

整个校招过程中,信息海量,一个人很难兼顾到所有的情形,例如你无法关注到所有公司的求职信息,你无法了解到所有公司的情况,因此你需要找一群小伙伴,一起去奋斗。

所谓军团作战,就是指,找一群志同道合的小伙伴,组成学习同盟,互相交流学习,互相沟通经验,互相共享求职信息,攻守相伴。这样的团结互助其实不止体现在信息上、能力上,更体现在学习过程中,相互之间的心理的支持和关心上,这些都很重要,大大提高了校招的效率和成功率。

记住:军团作战。提高准备效率,做一个团结合作的求职者

1.2.6 提前准备

所谓的提前准备,是指:

  • 提前进行技术准备
  • 提前进行秋招(一定不要错过提前批,2019最早的提前批6月底就开始了)

一定要注意,提前批的难度和正式秋招的难度是有区别的

  • 很多公司提前批都免笔试,这会省去不少时间
  • 很多公司的提前批,面试难度并不高,并没有正式秋招高
  • 提前批hc充足,有大量试错机会或者说练习面试的机会,这个非常值钱
  • 提前批相当于给秋招了2次机会,这样话,即使提前批过不了,秋招也可以再试一次(看再多面经也不如自己亲身体验一次要感受的深嘛)
  • 很多公司,提前批可能意味着sp,ssp(华为除外)

说明:

  • 这里需要区别一些名词:提前批 vs 内推 vs 校招

    • 校招:校招就是每个公司都有的完整的招聘流程,简历筛选、笔试、面试一个不少
    • 提前批:很多公司的提前批是独立的,是当年第一批次的招聘,可能免去简历筛选,笔试
    • 内推:很多公司的内推是独立的,可能免去简历筛选,笔试;但是有些公司内推和提前批是重叠的,也有些公司的内推和校招是重叠的,一定要注意。
    • 注:一定要看内推和提前批对校招是否有影响,例如:
      • 是否参加内推或者提前批,就不能参加校招,例如唯品会
      • 是否参加内推或者提前批,校招就需要换岗位甚至换部门,例如网易
  • 简历筛选 vs 免笔试

    • 简历筛选:很多好学校的同学觉得简历筛选只是对学校不太好的同学有用,对自己没有,但是其实不是,例如银行(国有和商业银行)就会筛选,有些好学校的同学有时候会发现连笔试的机会都没有,而一些相对不太好的学校的同学拿到了笔试机会,其实是因为有些同学是内推的,免掉了简历筛选。现在简历筛选越来越玄学了,所以免掉简历筛选其实很重要
    • 免笔试:相对而言免笔试对大家影响并没有那么大,但是免笔试有个很大的好处,就是加快面试流程。

1.3 专业技术篇

1.3.0 概述

  • 目标:介绍Java后端开发相关的知识点
  • 认知准备:胜而后战 (见1.2.4节)
  • 说明:这部分内容是必须掌握的内容,鉴于水平所限,可能不是很全面,仅做参考。
  • 建议:
    (1)复习的过程中,做复习笔记,最好是记录在云端,这样的话,可以随时复习,例如面试等待中复习;
    (2)当知识复习完一遍之后,就可以对照着面经去复习准备了,记住先搞熟核心知识,再去搞其他边缘的知识;
    (3)复习过程中,一定要注意不仅要了解知识,还要主动思考,去思考知识背后的逻辑以及设计的意图
  • 注: vs 表示比较的意思

关于专业技术呢,是指你的硬实力,硬实力的考查呢,主要从2个角度进行:

  • 宽度:掌握的知识是否全面
  • 深度:掌握的能力是否深入

宽度在一定程度上决定了你是否能够进入一家公司,深度则决定了你offer的等级。对于bat,甚至更好的公司来说,有时候深度甚至可能决定你是否能够进入这家公司。

1.3.1 专业技术

  • 一门语言(以Java为例)
    • Java核心知识
      • Java基础
        • 新版本特性
        • 跨平台特性
        • Java四个基本特性
        • Object类及其方法实现(尤其是equals() and hashCode())
        • 基本数据类型与引用数据类型
        • Exception vs Error
        • finally vs final vs finalize
        • final vs final
        • 四种引用:强引用、软引用、若引用、幻象引用的比较
        • 重载 vs 重写
        • 接口 vs 抽象类
        • 深克隆 vs 浅克隆
        • String vs StringBuffer vs StringBuilder (底层实现)
        • IO vs NIO vs AIO
        • 反射与动态***
        • 序列化与反序列化(底层实现)
      • 集合框架 (应用及源码分析)
        • 集合框架的设计与所有的继承关系
        • Vector vs ArrayList vs LinkedList
        • HashTable vs HashMap vs TreeMap
        • HashTable vs HashMap vs ConcurrentHashMap
        • HashSet vs TreeSet
      • 并发与多线程(应用及底层实现)
        • 线程的创建方式
        • 多线程应用场景
        • 线程状态与转换
        • 线程安全与同步机制:volatile vs synchronized vs Lock(ReentrantLock)
        • volatile底层原理
        • synchronized底层原理及其锁的升级与降级
        • Lock(ReentrantLock)底层原理
        • ThreadLocal
        • 线程通信
        • 线程池(底层实现)
        • 死锁的出现场景、定位以及修复
        • CAS 与 Atomic*类型实现原理
        • AQS:并发包基础技术
        • Java并发包(java.util.concurrent及其子包)提供的并发工具类
          • 比synchronized更加高级的各种同步结构,如:Semaphore,CyclicBarrier, CountDownLatch
          • 各种线程安全的容器(主要有四类:Queue,List,Set,Map),如:ConcurrentHashMap,ConcurrentSkipListMap,CopyOnWriteArrayList
          • 各种并发队列的实现,如各种BlockingQueue的实现(ArrayBlockingQueue, LinkedBlockingQueue, SynchorousQueue, PriorityBlockingQueue,DelayQueue,LinkedTranferQueue)等。
          • Executor框架与线程池
    • JVM
      • JVM运行时数据区域 vs Java内存模型 (这2不一样!!!
      • Java内存模型与happen-before原则
      • 内存泄露、内存溢出以及栈溢出
      • JVM类加载机制及其作用与对象的初始化
      • JVM垃圾回收
        • 如何判断对象已经死亡?引用计数法 vs 可达性分析
        • 如何回收对象?垃圾收集算法
        • Minor GC vs Full GC
        • 常用的垃圾收集器及其特点
        • 内存分配与回收策略
      • GC调优
        • GC调优的思路
        • JVM常用参数
        • 基于JDK命令行工具监控Java进程, 如 jps,jinfo,jstat,jmap,jstack
        • 基于图形化工具监控Java进程,如MAT(Memory Analyzer),VisualVM,Btrace
  • 面向对象与设计模式(了解常用设计模式及其应用场景、示例)
    • 面向对象的六个基本原则
    • 单例模式(手撕各种单例模式)
    • 工厂模式(Spring的BeanFactory,ApplicationContext)vs.抽象工厂模式
    • 构造器模式(应用场景:解决构造复杂对象的麻烦。复杂:需要输入的参数的组合较多)
    • ***模式(Spring AOP(动态***模式:2种实现方式,即jdk & 字节码方式))
    • 装饰器模式(应用场景:若想对一个类从不同角度进行功能扩展,例如java.io中,InputStream是一个抽象类,标准类库中提供了FileInputStream\ByteArrayInputStream等各种不同的子类,分别从不同角度对InputStream进行了功能扩展。这些不同的实现类其构造函数的输入均为InputStream(的实现类),然后对InputStream添加不同层次的逻辑,从而实现不同的功能,这就是装饰。)
    • 观察者模式(各种事件***)
    • 策略模式(比较器Comparator)
    • 迭代器模式(ArrayList等集合框架中的迭代器)
    • 生产者消费者模式(消息队列)要能手撕
    • ...还有很多,但是掌握这些基本上够了
  • 数据结构与算法
    • 时间复杂度和空间复杂度分析
    • 常用的数据结构及其特点
      • 数组 vs 链表
      • 队列 vs 栈
      • 跳表(Redis利用跳表实现有序集合Sorted Set)
      • 散列表
      • 堆与优先级队列
      • 二叉树:普通二叉树 vs 二叉查找树 vs 平衡二叉树(AVL)vs 红黑树 (vs 哈夫曼树)
      • 多叉树:B-Tree vs B+Tree vs B*Tree / Trie Tree
        • B+Tree: MySQL索引数据结构
        • Trie Tree: 实现敏感词过滤算法; 实现搜索引擎的关键词提示功能
      • 图:考数据结构不多,主要考2个最短路径优先算法
    • 常用算法
      • 各种排序算法:内部排序+外部排序(https://blog.csdn.net/hguisu/article/details/7776068/)
        • 需要手撕:冒泡、插入、堆排、归并、快排(2路快排+3路快排+随机枢值)
        • 大数据排序:外部排序
      • 各种查找算法:
        • 二分查找算法及其变种
        • 二叉查找树的查找
        • 利用快排查找
        • ...
      • 常用的遍历算法
        • BFS vs DFS
        • Morris遍历
      • 常用的Hash算法
        • 一致性哈希
        • 布隆过滤器
      • 贪心算法
      • 分治算法
      • 回溯算法
      • 动态规划
      • 海量数据处理算法
      • 其他算法:
        • LRU算法
        • KMP算法
        • Manacher算法(面试问过1次)
        • BFPRT算法
    • 常见的手撕代码问题
      • 《剑指offer》的问题
      • 后续搜集补充。。。
  • 计算机网络
    • OSI七层模型 vs. TCP/IP 五层模型(有时候也说四层)及及各层协议
    • 给定一个网址,访问这个网址经过了那些过程?涉及哪些协议?
    • HTTP and HTTPS
      • HTTP报文格式
      • HTTP方法及相互区别
      • HTTP的无状态
      • HTTP状态码
      • HTTP 1.0 vs 1.1 vs 2.0
      • HTTP vs HTTPS
      • HTTP安全性
      • HTTP底层协作协议(如传输层为TCP协议)
    • TCP and UDP
    • RPC协议(经常和Dubbo一起问)
    • Socket编程
    • 异步IO多路复用:select poll epoll
  • OS
    • 内核态 vs 用户态
    • 进程 vs 线程
    • 进程调度算法
    • 进程间通信的几种方式
    • OS死锁相关的问题
      • 什么是死锁?哲学家就餐问题
      • 死锁的必要条件
      • 死锁的应对方法
        • 死锁的检测与恢复
        • 死锁的动态避免:银行家算法
        • 死锁的静态防止:破坏死锁的必要条件之一
    • 段页式内存管理
    • 页面置换算法
    • 磁盘调度算法
    • Linux系统常用的命令有哪些?是否会Shell,Python?
  • 数据库MySQL
    • 数据库范式
    • 数据库事务
      • 什么是事务?
      • 事务特性:ACID
      • 事务隔离级别以及脏读、不可重复读、幻读
      • 分布式事务
    • 数据库索引
      • 索引的应用场景
      • 索引特点
      • 索引的优点和缺点
      • 索引的分类
      • 索引选择原则
      • 索引的优化
      • 索引失效
      • 索引的底层实现(B-Tree vs B+Tree)
      • 对于建立索引的列,数据均匀分布好还是不均匀好?
    • 数据库的锁
      • 行锁 vs 表锁
      • 读锁 vs 写锁
      • 乐观锁 vs 悲观锁以及如何实现?(MVCC)
      • 加锁的方式
      • 分布式锁
    • 数据库存储引擎比较
      • InnoDB
      • MyISAM
      • Memory
    • MySQL连接池对比
    • MySQL命令
    • JOIN的执行计划?
    • 数据库分库分表
    • 主从复制
  • 数据库Redis
    • 为什么使用Redis?
    • Redis的优点与缺点
    • Redis的数据类型、底层实现以及各种数据类型的使用场景
    • Redis是单线程吗?单线程的Redis为啥这么快?
    • Redis持久化的方式
    • 谈谈Redis的过期策略以及内存淘汰机制
    • 如何解决Redis和和数据库双写一致性的问题?
    • 如何应对缓存穿透与缓存雪崩的问题?
    • 如何解决Redis的并发竞争Key问题
  • Web与常见框架
    • Servlet的生命周期(问的很少)
    • Cookie vs Session
    • 分布式Session
    • Spring相关(应用与源码分析)
      • 看过Spring的源码吗?
      • IOC应用及原理
      • AOP应用及原理
      • 事务
      • Spring涉及的设计模式
      • 谈谈Spring Bean的生命周期和作用域
      • Spring MVC的工作原理
      • Spring vs Spring MVC
      • Spring vs Spring Boot
      • 了解微服务,Spring Cloud
    • Netty (网络框架)
    • Dubbo
  • 分布式架构

    • 服务调度,涉及服务发现、配置管理、弹性伸缩、故障恢复等
    • 资源调度,涉及对底层资源的调度使用,如计算资源、网络资源和存储资源等。
    • 流量调度,涉及路由、负载均衡、流控、熔断等。
    • 数据调度,涉及数据复本、数据一致性、分布式事务、分库、分表等
    • 容错处理,涉及隔离、幂等、重试、业务补偿、异步、降级等。
    • 自动化运维,涉及持续集成、持续部署、全栈监控、调用链跟踪等。
  • 项目

    • 准备项目对于秋招而言是非常重要的,为啥呢?

      1. 加深对所学知识的理解,将知识转换为能力
      2. 证明你的学习能力和实践能力
      3. 项目可以在一定程度上,将面试官的问题引导到一定范围内,例如在面试的时候,一般情况下,项目会最开始介绍,在介绍项目的时候,你就可以以你熟悉的内容,不断引申,就像是多米诺骨牌一样,一直延续下去。这样就有可能避免面试官深挖基础,问到你没有准备过的东西。
    • 如何准备项目呢?我以我准备的Java后端项目为例说明,即叶神的高级项目课:https://www.nowcoder.com/courses/semester/senior

      1. 明确这个项目的需求与解决的问题
      2. 明确这个项目的结构与组成
      3. 明确这个项目涉及的技术栈
      4. 完成这个项目的基本功能
      5. 在完成的过程中,总结归纳
        • 总结归纳业务知识,例如如何实现系统的登陆和注册功能,如何实现点赞功能
        • 总结技术栈的相关知识与应用场景,例如Spring, Spring Boot, MyBatis, MySQL, Redis
        • 总结几个你认为做的非常好的点,例如利用Redis实现一个异步处理框架
        • 总结项目中出现的问题以及解决方式,例如响应时间过长,你是如何解决的?
        • 总结如何扩展系统,例如如何扩展系统的业务功能(添加后台管理模块等)
        • 总结如何提升系统性能,例如如何处理缓存,如何提高系统响应
        • 总结如何设计一个系统,例如根据经验如何设计和实现一个秒杀系统?
        • 总结如何进行系统的测试,例如你甚至可以测试驱动开发(TDD)
        • 还有很多总结...这里只是提供一些思路
      6. 扩展项目
        • 添加业务模块,例如添加后台管理模块
        • 添加推荐算法,例如给timeline增加推荐能力
        • 公共模块服务化
      7. 如果可以的话,将系统上线(非常加分的),这里涉及另外的一些知识点:
        • 项目的版本管理:Git & Github
        • 项目的部署:涉及Linux、服务器
        • 项目的扩展:涉及Nginx与负载均衡
        • 项目的调试与优化:涉及如何在服务器端远程进行调试和优化,例如jmeter进行远程调试系统
        • 项目的服务化与分布式架构:微服务,例如如何将项目从单体应用扩展为分布式应用,如何将常用模块或者固定模块变成一个个服务
        • 还有很多知识点...这里知识提供一些丝
  • 实习
    关于实习,我没有去实习过,因为实验室老板不让去,我会结合去实习的同学谈谈实习的建议(大佬绕行):

    • 一切为秋招服务,无论前面准备项目还是去实习,一定要明确实习的目的是为了更好的服务于秋招,当然了提高技术是必然的。
    • 选择大厂去实习,小厂的实习含金量不高。(对于秋招而言)
    • 实习时间不要与秋招冲突。尽量选择春招的时候去实习,或者越早越好,因为一旦实习时间和秋招冲突,那么可能会错过很多秋招机会。
    • 若实习时发现学不到什么技术,并且影响到了秋招,立马离职,准备秋招。
    • 若实习与秋招时间重叠,实习过程中,做好两手准备:(1)实习转正;(2)准备秋招。因为转正的周期一般都比较长,一旦转正失败,那么也会错过很多秋招的机会。

1.4 面试技巧篇

1.4.1 形象和谈吐篇

面试过程很短,对于一个人的认识和了解也很有限。那么如果你的技能一般的话,就需要加强形象和谈吐了。所谓实力不够,形象来凑。

形象方面,最好穿工作便装,休闲的也可以,但是要干净、整洁,不要有异味、不要邋遢(刮胡子,梳头发,熨衣服,这些都很重要)。尤其是HR面,基本上都是小姐姐,不要吓到她们。

另外,保持微笑,表现得热情、开朗和幽默非常重要。每个人都喜欢积极乐观向上的人。交谈的时候,不要挤牙膏,别人问一句你答一句,要直接把前因后果都讲清楚。最好能够以讲故事的心态分享你的故事,尤其是hr面,最好能够把hr妹子逗笑,但是切记不要撩。

说话的时候,要看着对方,一方面,这是对对方的尊重和礼貌,另一方面,这也是一种自信。就算没有回答好,也不要低着头,不要像做错事情一样。万一碰到有说不清楚的内容,不要犹豫,直接上图。对于比较复杂的或者面试官听不懂的问题,一定要换个思路表达。

1.4.2 心态篇

面试的时候,你要保持一个自信的心态,无论你准备的到位与不到位

面试的时候,紧张是正常的,但是你要通过前面的自我介绍(如果没有自我介绍的话,前几个问题回答慢一点)的时间来调整自己的紧张

注:详细的心态管理见1.2 认知思维篇

1.4.3 面试技术篇

Checklist(简称cl)

在整个秋招面试过程中,最好能够准备一个checklist, 这个cl是用来在你面试前进行模拟面试的,那么cl包含哪些内容:

  • 自我介绍
  • 项目介绍
  • 技术知识点
  • 非技术知识点

以下详细介绍这几个方面:

  1. 自我介绍
    在自我介绍的时候,除了介绍你自己的基本情况外,直接明了的提出你擅长的技术栈是一个很好的技巧,为什么这么做呢?因为这会给面试官一个先入为主的印象,会给面试官心里种下一个种子,潜意识认为你对这一块知识比较了解,那么后面问到这一块知识的概率就会变大;同时呢,后面万一他问到那些不会的内容,你也可以拉面试官到你擅长的技术栈,由于前面已经埋下了伏笔,因此后面面试官大概率上是容易接受你的转换的。
    注:有时候hr面的自我介绍和技术面的自我介绍不同,会产生不一样的效果
  2. 项目介绍
    项目介绍除了介绍项目的目的,解决的问题,设计的思想以及整体结构,更重要的是提出你在项目中的亮点以及项目中你擅长的技术栈,这会在一定程度上引导面试官去对你这些内容发问
  3. 技术知识点
    每次面试前,都应该有针对性地深化一部分知识点,这部分知识点要么来自于你要面试的这家公司的面经,要么来自于你计划中要解决的知识点,力求做到每次面试都拿下一部分知识点,将比较复杂的问题化整为零,然后再总结归纳,这会有效的降低你记忆的难度
  4. 非技术知识点
    非技术知识点主要是针对hr面试中可能出现的问题的,一般hr面就那些问题,因此这个准备非常好准备

模拟面试

面试和你的笔试一样,笔试需要做大量的题目去模拟,那么面试也必然是的。那么如何进行面试的模拟呢?

  1. 准备CheckList
  2. 根据CheckList, 进行自我介绍,然后将你自我介绍的过程用视频录下来或者语音录下来,然后去分析你哪些地方有问题,作为面试完之后的分析依据,根据面试情况,去修正你的自我介绍
  3. 根据CheckList, 进行项目介绍以及项目分析,然后将你自我介绍的过程用视频录下来或者语音录下来,然后去分析你哪些地方有问题,作为面试完之后的分析依据,根据面试情况,去修正你的项目介绍,尤其是项目中涉及的知识点以及技术栈,你是否理解到位了,你会做,那么你是否能够讲清楚,如果讲不清楚问题在哪里?
  4. 你也可以请你的同学或者朋友充当面试官的角色,让他按照你的CheckList去对你进行提问,看你是否能够给一个没有做过这个项目的人将项目讲清楚,如果可以说明你真正理解了,这样就可以给你面试有一个参考。

注意:

  • 面试开始前,给面试官一个微笑,简单大方地问好:“面试官好”或者“老师好”,然后双手将简历(或者所需材料)递给面试官
  • 面试结束后,给面试官一个微笑,简单大方地对面试官表达感谢:“谢谢您,再见”,然后带着自己的东西离场。
  • 面试过程中,
    • 当面试官提出问题时,一定不要着急回答,而是思考清楚面试官的问题之后,再回答问题;如果不确定面试官的问题,那么你需要不断询问面试官,确定题目的具体意思,当你确定意思之后,再认真回答问题。回答问题的时候,你要一步到位,直接给出充足的细节,将问题的前因后果全部描述清楚,不要等着面试官追问,那样的话,你会变得非常的被动。讲的时候,要条理清楚,问题的来源、解决方案、演进过程,都要利索地讲清楚。
    • 当面试官问到的问题,你是不懂的,那么你应该向面试官提出你不是很懂这个问题:“不好意思,这个问题我不是记的很清楚了(或者不好意思,这个问题我没有接触过,我不是很懂)”,问他是否可以给出提示,如果可以在给出提示的情况下答出问题,体现的则是你的思考和逻辑能力;若面试官无法给出提示,那么你直接告诉面试官你不懂这个问题,但是你懂另外一个相关的知识点,是否可以给他介绍?如果可以,你接着介绍这个相关知识点;如果不可以,那就请求面试官是否可以进入下一个话题。在这里再强调一下,有时候,面试官并不期待你能在很短的时间内解决这个难题,他只是想看你遇到难题的时候的态度和思维方式以及应变能力。如果你能证明给面试官看,你解决问题的方向和方法是正确的,即使不是正确答案,也很不错。如果最后没有答上来,最后可以和面试官要个联系方式(邮箱或者微信),回去后努力搞懂,然后举一反三,写篇文章发给面试官,有时候会让你起死回生的。
    • 当面试官对你提示的时候,请记住,当你回答问题结束之后,你需要对面试官表达感谢,感谢他的提示。
  • 面试过程中,如果是hr面,那么你需要表达出你的忠诚、坚持、责任、荣誉、毅力、稳定、对自己正确的认识等,至于具体的套路,我这里就暂时不说了,如果后期需要了解的同学比较多的话,我可再补充。

1.5 学习资料篇

注:暂时列出这么多,有空了补充吧。


二. 面经

2.0 概述

  • 此部分面经均为现在回忆所写,可能略有缺失,仅供参考
  • 鉴于bat、网易面经太多就不写了,但是所涉及面试内容将会在本文后面章节以知识点形式给出。

2.1 中国银联

中国银联我必须从笔试开始说起,为什么要从笔试开始说起呢?
答曰:重要,非常重要。有些同学会发现面试都很好为啥最后挂了呢,有部分原因就是因为笔试成绩不如别人
中国银联的录取,不仅要看你的学校,更要看你的能力,它录取的时候呢,就会将你的笔试成绩群面成绩以及技术面的成绩全部计算在内,最后加权得分,然后择优录取。因此笔试很重要。确切讲,每一个考试都很重要,笔试、群面、还有后面的技术面都很重要。挂掉一场意味着都挂了,或者说只要有一场分数很低,也可能被淘汰。

2.1.1 笔试

【题目】中国银联的笔试非常类似于公***,主要包含以下内容:

  1. 行测:数学计算 逻辑判断 言语理解 图形推理
  2. 专业知识: 金融 经济 财会 管理 法律 银联常识
  3. 英语:阅读理解
  4. 专业知识:Java相关基础知识

【解决方案】准备银联的笔试,确实非一人之力,所以大家懂得...,分数越高越好。

2.1.2 群面(30min)

【题目】
主题:疫苗问题
流程:

  1. 5分钟阅读材料,总结归纳观点
  2. 1分钟个人陈述观点+自我介绍
  3. 15分钟组内讨论
  4. 3分钟最终发言

【解决方案】
解决这样的群面问题呢,不能蛮干,应该有套路。

  1. 1分钟回答:
    阅读问题,带着后面的问题阅读材料,然后迅速整理出材料结构,总结1分钟陈述的回答。要注意这个1分钟回答,只需要回答主干就行了,不需要细节,因为根本说不完;
  2. 15分钟讨论过程:
    15分钟讨论过程中,一定不要起内讧(一旦内讧,基本上你的群面分数不会很高,而我说了),而是在一个人的带领下,将问题主题确定,然后围绕问题主题快速提出一组主要答案,然后围绕这个主要答案进行总结调整,15分钟看着很长其实很短,所以一定要注意时间。
    在15分钟讨论过程中,不要为了回答问题而回答问题,一定要抓住重点,确保自己有1~2次的有效回答,要么是总结性回答,要么是补充性回答,这个很重要,切记不要胡说八道。
    在15分钟讨论过程中,发言的时候,如果没有思路,可以考虑一下:要么从整体入手去回答整个问题,要么从细节入手去深化问题,这是2个不错的策略,要么体现你的总结能力,要么体现你的思考能力。
  3. 最后的总结陈述:
    整个是由组内选出1人进行总结陈述,整个总结陈述其实是高风险高收益的,要么总结的非常好,高分,要么总结的非常差,出局,所以慎重对待。

2.1.3 技术面(20min)

【题目】

  1. 项目,你觉得你的项目的亮点是什么?为啥采用这样的加密方式?有没有框架实现这样的加密?
  2. 谈谈反射?反射能干嘛?反射安全吗?反射的坏处是什么?知道反射是怎么实现的嘛?
  3. 线程池了解吗?线程池的好处是什么?
  4. 数据库知道哪些?详细谈谈?现场给题目,直接手撕sql,3道题。
  5. Linux系统知道哪些?详细谈谈?用过Linux命令吗?知道哪些?详细说说?
  6. Spring知道哪些?详细谈谈?动态***模式是怎么玩儿的?给我们详细讲讲
  7. Spring Boot和Spring有啥区别?
  8. 你平时都怎么学习的?
  9. 你有没有自己的博客?
  10. 你的期望薪资是什么?
  11. 你有什么想问的吗?
  12. 其他问题。这里问了很多问题,当时第一次参加技术面试,很多都不会,大概70%都不会,当然也可能是压力面,总之最后过了。

(1)关于银联录取的分数计算:

goal = a * 笔试分数 + b * 群面分数 + c * 技术面分数,其中,a, b, c为系数

因此,每一场都很重要。
注:此计算方式来源于面试官

(2)关于录用流程:
中国银联的录用流程确实挺慢,从8月9号面试完,到今天(9月30日)正式收到录用offer,其实确实挺漫长的,虽然漫长,但是整个过程中,银联的hr部门还是一直在推进,可能整个过程中,由于他的hr人太少,通知的确实是太慢,不可否认,但是整个流程还可以。比较规范。

(3)关于体检:
中国银联的体检相对而言比较严格,但是主要还是看你是否生有大病,这是银行主要检查的内容,即使收到复检通知,只要不是大病,可以和医生沟通一下,写成合格,也可以拿到offer。

2.2 顺丰科技

2.2.1 技术面

  1. 手撕代码:计算n + (n-1) + ... + 2 + 1
    要求:递归计算
    问题1:你的递归有没有问题? 要求考虑返回值为long型的情况
    问题2:你觉得这样的递归可能产生什么样的问题?
    问题3:你觉得如何处理上述的问题?
    问题4:若存在这样的一种情况:递归调用这个计算的时候,计算n的时候,不会出现栈溢出,但是计算n+1的时候出现栈溢出,那么若有2个线程一起调用这个递归,会出现什么状况呢?

  2. 代码题
    关于sychonronized、 notify()、 notifyAll()、wait()的问题,涉及线程同步,线程通信相关的代码执行顺序以及多线程执行情况。(具体题目我忘了)
    (1)若多个线程以字符串“a”作为锁,即synchronized("a"),请问这个锁是一个锁吗?为什么?
    (2)调用wait()的时候,调用线程是否还持有这个锁?为什么?
    (3)调用notify()的时候,调用线程发生了什么?为什么?调用wait()的线程发生了什么?为什么?
    (4)调用notifyAll()的时候,调用线程发生了什么?为什么?调用wait()的线程发生了什么?为什么?

  3. 智力题
    甲地有小球A,乙地有小球B,现在A向乙地以2m/s的速度前进,B向甲地以1m/s的速度前进,在2者前进的过程中,A每次碰到B都要返回甲地,然后向着乙地前进,接着碰到之后再返回,循环往复,而B球则一直向着甲地前进,直到B球到达甲地。
    (1)A最终走了多少路程?
    (2)A最终碰到B球时单程总共走了多少路程?
    (3)A最终碰了多少次B球?请求出其公式。

  4. 项目

  5. 谈谈反射?知道反射是怎么实现的嘛?反射能获得方法的注解吗?为啥?能不能举个例子?

  6. Spring知道什么?源码看过没?谈谈。

  7. 谈谈你知道的设计模式

  8. Spring Boot的源码看过没?谈谈。知道微服务吗?谈谈你对微服务的认识?

  9. 数据库了解什么?谈谈数据库索引?

  10. 知道Cookie和Session的区别吗?你项目有用到Session吗?怎么用的?

  11. 你觉得Redis在项目中使用的时候有没有什么风险?

  12. list 和 set的差别

  13. hashmap了解不?谈谈。
    put怎么做的?
    为啥要设计成数组+链表?
    是否直接用hashCode确定桶的位置?如果不是是用的啥?请写出公式。
    equals()和hashCode()有啥区别?二者重写有啥规则?为啥要约定这样的规则?
    get怎么做的?
    rehash是为了什么?
    树化是为了什么?

  14. 你的思维能力非常强,但是你的知识深度不够,给你四分钟,讲一个能够你的牛逼之处,如果能征服我,我就让你过。

  15. 其他问题忘了。。。。

2.2.2 hr面

  1. 自我介绍
  2. 项目介绍
  3. 实验室导师的项目
  4. 你实验室的项目及研究方向和工作方向不一样?为啥?为啥要换成Java开发?
  5. 你觉得你和计算机科班出身,有何优势?(这是个很好的加分问题,有机会分析如何答这个问题)
  6. 你为啥想去深圳工作?
  7. 你有女朋友吗?(这是个很好的加分问题,有机会分析一下如何回答整个问题)
  8. 你自学Java是如何学习的?为啥你用Java找工作?而不是用你熟悉的C++?
  9. 谈一个你最大的优点和你最大的缺点?(这是个很好的加分问题,有机会分析一下如何回答整个问题)
  10. 你觉得为啥我们要你?

2.3 VIVO

2.3.1 技术面

注:C++工程师面试的

  1. 懂C++吗?答不懂。你觉得C++和Java有啥差别?
  2. C++的对象回收和Java的对象回收有何差别?说一下二者的机制。
  3. C++的编译过程和Java的类加载过程有何联系?详细谈谈。
  4. 你知道为啥一个应用有4G,但是机器内存只有2G,为啥这个应用可以跑起来?原理是啥?详细谈谈其机制。
  5. 进程和线程了解吗?详细谈谈。
  6. TCP UDP协议了解吗? 二者有何区别?应用场景是啥?为啥TCP是可靠地?
  7. TCP三次握手四次挥手,画出整个过程并解释,为啥不是2次或者4次握手?为啥要4次挥手?
  8. 谈谈TCP的流量控制
  9. 谈谈TCP的拥塞控制
  10. 谈谈项目
  11. 手撕代码,题目忘了(leetcode上的)
  12. 有啥想问的?

2.3.2 hr面

  1. 自我介绍
  2. 项目介绍
  3. 为啥想到杭州
  4. 谈谈你最大的缺点和最大的优点。请举例说明
  5. 你想去的目标城市是哪里?为啥想去?为啥不想去其他地方?如果换的话想去哪里?(我说我就想去杭州,结果给我整南京去了,我说能否用sp换一个深圳,答曰不能。。。)
  6. 你有女朋友吗?你去外地工作了?她怎么办?
  7. 介绍一下你的家庭情况
  8. 你有啥想问的?

2.4 海康威视

2.4.1 技术面

  1. 项目
  2. 手撕sql:
    (1) 给了一个数据库的题目,然后让写出查询语句(涉及 select from where group by having like order by)
    (2) 进一步多表联查
    (3) MySQL索引,包括但不限于分类,区别,数据结构(B B+的比较和插入删除的*作演示)
    (4) MySQL失效的情况,并举例说明(例如like "%x"这样的会索引失效)
  3. 给你一个视频监控系统,你如何考虑这个系统设计?
    (1)请画出你的设计图,然后解释说明
    (2)提出其中用到的技术手段以及可能存在的问题
    (3)如何提高这个系统的性能
    (4)如何判定这个系统是一个稳健的系统,或者说如何保证这个系统的稳定性?
  4. 详细谈谈TCP/IP协议族,包括但不限于以下内容:
    TCP UDP协议了解吗? 二者有何区别?应用场景是啥?为啥TCP是可靠地?
    TCP三次握手四次挥手,画出整个过程并解释,为啥不是2次或者4次握手?为啥要4次挥手?
    谈谈TCP的流量控制
    谈谈TCP的拥塞控制
  5. 知道jsonp吗?
  6. 会前端吗?
  7. 你平时怎么学习?
  8. 了解blockingqueue吗?详细说说。
  9. 了解线程池吗?详细说说。
  10. 了解GC吗?
  11. 手撕代码(题目忘了)

2.4.2 hr面

  1. 自我介绍
  2. 介绍一下你实验室做的东西?
  3. 你为啥做Java开发?
  4. 请说出你的三个缺点和三个优点?(我竟然有3个缺点,我怎么不知道呢?最讨厌这个问题啦)
  5. 你们实验室项目中,你的角色是什么?
  6. 你们团队合作的时候,你一般如何看待合作?如何行事的?你们的分工一般是什么?
  7. 既然你是你们团队的leader,那么你是怎么带领一个团队攻克难关的?
  8. 有女朋友吗?
  9. 你有哪些offer?我有。。。
    那你为啥来海康呢?为啥不去其他公司呢?(你说呢?)
  10. 你有什么想问我的呢?

ps: 小姐姐太漂亮了。。。无比享受的hr面。

2.5 招商银行信用卡中心(信息技术部)

2.5.1 初面(1个多小时)

  1. 介绍一下你zhiji
  2. 全程怼Java项目
    -介绍一下这个项目?
    -为啥做这个项目?
    -用了哪些技术?
    -你自学的技术是哪些?
    -详细谈谈你对Spring的理解,和Spring Boot有啥区别?
    -既然谈到了AOP,你在项目中如何使用AOP的,AOP还能有哪些应用?
    -AOP的原理是什么?有哪些实现的方式?
    -既然谈到了动态***模式,请谈谈动态***有哪些实现方式?(jdk & 字节码方式)
    -这2种不同的实现方式中,目标类和***类的关系是?
    -接着深入的谈谈你了解的其他设计模式?(单例模式 工厂模式 抽象工厂模式 建造者模式 策略模式 装饰器模式 迭代器模式 生产者消费者模式 责任链模式 一口气连原理带例子说完)
    -既然谈到了生产者消费者模式,请问你项目中是否使用这个模式?
    -责任链模式如果让你写你会怎么写?(双端链表)
    -策略模式在Java集合框架中是否有用到?装饰器模式呢?
    -Redis在项目中怎么用的?为啥这么用?一般Redis的应用场景是什么?
    -谈谈Redis的数据类型以及应用场景?是否看过其源码?
    -Redis是单线程的还是多线程的?为啥是单线程的还这么快?
    -谈谈Redis的过期策略以及内存淘汰机制
    -如何解决Redis和和数据库双写一致性的问题?
    -用户的注册和登陆你是如何解决的?
    -拦截器是如何使用的?
    -拦截器和过滤器以及责任链模式有何关系?
    -谈谈敏感词过滤算法都有哪些?你是如何实现的?优势是什么?为啥这么设计?时间复杂度如何?
    -你做的站内信是否是实时的?如何做成实时的?有没有思路?或者现在想想?
    -谈谈你对cookie和session的理解
    -谈谈你对token的理解
    -谈谈你对分布式session的理解
    -谈谈你对微服务框架的理解
    -谈谈你对分布式的理解
  3. 全程怼实验室项目
    -介绍一下这个项目
    -解决的场景是什么
    -你这个相控阵雷达牛逼呀,给我介绍一下
    -你们团队是怎么分工的?
    -你有什么牛逼的成果?
    -如果你和你的合作的同学意见出现分歧了如何解决?
  4. 你有啥想问的呢?
  5. 你平时都怎么学习的呢?有没有写博客?有没有GitHub?经常更新不?
  6. 谈谈你了解的数据结构与算法?
  7. 面试结束了,你过了,来接着给我介绍一下相控阵雷达

2.5.2 终面

  1. 自我介绍一下
  2. 介绍一下你的项目
  3. 为啥转Java开发呢?你做的是***项目,转到民用,是不是有点大材小用呢?
  4. 你如何挑选公司的?
  5. 你怎么看待互联网公司与非互联网公司呢?
  6. 你是怎么看待自己的?
  7. 你最大的优点和最大的缺点是什么?
  8. 你最铁的哥们儿是谁?
  9. 你有从你的朋友们身上学到了什么?
  10. 你交朋友的标准是什么?
  11. 你喜欢哪类人?不喜欢哪类人?为什么?
  12. 如果你的合作对象或者你的同事是你讨厌的人,你会如何对待他?
  13. 你和合作对象或者同事意见发生分歧了,你如何处理?
  14. 为什么要来信用卡中心?
  15. 你有面过那些公司?有没有对这些公司做过总结和分类呢?
  16. 谈3个对你影响最大的人,为什么?
  17. 你平时都怎么学习?
  18. 你有女朋友吗?你们未来是怎么安排的?你为什么喜欢她?她对你有何影响?(她是另外一个本我,常有相濡以沫之默契,时有不如相忘于江湖之洒脱)
  19. 你是如何规划你的未来的?
  20. 你觉得你厉害吗?谈谈你认为你最自豪的事情

ps: 很佩服信用卡中心这种说话算话的公司,说7天出结果,绝对不8天出结果,在这里bishi一下某为的sb尿性。。。

2.6 华为

这是一家随机且佛性的公司:
1.面试过不过佛性;
2.发不发offer佛性;
3.什么时候发offer佛性;
4.发不发签约佛性;
5.什么时候发签约佛性;
6.工作岗位佛性;
7.工作地点佛性;
8.工作薪资佛性;
9.你来不来佛性;
10.你去不去佛性;
11.你性格对不对佛性;
12.你是谁佛性;
13.怎么对你佛性。

那么如何应对这家公司呢?
也请你佛系对待这个公司,因为这是一家喜欢唱 无所谓 的公司
得不到,请冷静的对待;得到了,请更加冷静的对待
漫长的等待,等来的可能是希望,更有可能是希望后面伴随的毁灭的绝望。

好,做好这个思想准备之后,开始华为的笔试面试之旅。

首先为啥要介绍华为的笔试呢?因为它不重要。
为啥要介绍华为的面试呢?因为它不重要。
那为啥不重要还要介绍呢?
其实主要是为了介绍上面的佛性***。其次是为了对仗,哈哈哈

好,做好这个思想准备之后,就可以跳过华为的笔试面试经验啦。哈哈哈哈,因为真的不重要。

2.6.1 笔试

【题目】笔试题目=编程1(100分) + 编程2(200分)+编程3(300分)
注:100分就够了,多了浪费(2018年)

2.6.2 业务面

  1. 平时都做啥项目了
  2. 详细介绍一下你最自豪的项目(Java)
  3. 你这个项目是自己做的,导师让你做的项目是啥?你干嘛了?(C++)
  4. 接下来咱聊聊基础吧
  5. 接下来就是C++和Java的比较,垃圾回收有啥差别,类加载有啥差别
  6. TCP和UDP区别
  7. DHCP底层原理
  8. 有没有做过socket编程
  9. 你还有啥想问的?

2.6.3 综合面

  1. 自我介绍
  2. 你做啥项目了?详细讲讲
  3. 你为啥会想到做这个项目?目的是啥?用途是啥?
  4. 华为有没有其他的亲属或者师兄师姐?有没有问过他们眼中的华为?
  5. 数据库用的啥?
  6. 你眼中的华为是啥样子的?
  7. 你有啥想问的?
  8. 回去等通知,2-3天出结果
  9. 你还面试哪里了?

好,终于跳过了。。。

2.7 携程

2.7.1 技术1面

  1. 详细谈谈Java基类Object类以及其方法
  2. 详细谈谈equals()和hashCode()
  3. 详细谈谈wait() notify() notifyAll()
  4. 详细谈谈final finally finalize的区别
  5. 写出单例模式的双检锁形式,序列化以及反序列化以后是否仍然是单例?
  6. 手撕代码:
    -链表中间值
    -一个数字中1的个数
  7. ArrayList vs Vector Vs. Linkedlist
  8. hashMap vs hashTable vs. concurrentHashMap
  9. 线程同步机制:synchoronized vs. ReentrantLock 、volatile
    -synchoronized底层原理以及锁的升级和降级
    -ReentrantLock的底层原理
    -synchoronized vs. ReentrantLock
    -synchoronized vs. volatile
    -volatile的作用是什么?如何实现的?了解happen-before吗?
  10. 线程池原理、参数以及给定实际的场景,然后设计线程池
  11. 知道JVM的内存模型和运行时区域吗?分别说一说(注意这里很容易错,二者是不同概念)
  12. 平时学校开设哪些课程?
  13. 有什么想问的?

2.7.2 技术2面待安排

2.8 虎牙

2.8.1 技术面

  1. new一个对象的过程
  2. cap定理
  3. hashset
  4. list vs set
  5. lock的底层
  6. http的方法有哪些
  7. 线程池底层怎么实现的
  8. threadlocal
  9. mysql引擎有哪些
  10. jdk 8的lambda表达式

ps:都答上来了,莫名其妙一面挂了。可能长得丑。哈哈哈哈

2.9 平安科技

2.9.1 技术1面

  1. 自我介绍
  2. 介绍一下项目
  3. 你觉得你的项目会出现什么问题,如果让你现在想,你觉得可能出现什么问题?

第3个问题之后就挂了。

2.10 其他公司

其他公司的面试经验以知识点的形式给出,见1.3.1。


  • 更新时间
    • 2018.9.30 更新面经篇
    • 2018.10.2 我的练级之路篇
    • 2018.10.3 专业技术篇
    • 2018.10.4 暂时写完,以后有空补充
#秋招##Java工程师##招商银行信用卡中心##海康威视##顺丰科技##vivo##银联#
全部评论
太棒了!!! 感谢分享这么大的一个总结帖
3 回复
分享
发布于 2018-10-04 18:03
不好意思,各位,帖子中的时间写错了。应该是2017-2018年,各位见谅~感谢提出的小伙伴~😂
点赞 回复
分享
发布于 2018-10-07 15:30
乐元素
校招火热招聘中
官网直投
祝楼主前程似锦
点赞 回复
分享
发布于 2018-10-01 00:24
楼主写完请私信下我来加精
2 回复
分享
发布于 2018-10-02 01:12
厉害厉害,第一次见这么有条理的面经总结,怒赞
点赞 回复
分享
发布于 2018-10-19 14:12
看了好多面经,楼主真的写的好用心,排版看着也好舒服,很想认识楼主~
2 回复
分享
发布于 2018-10-23 14:42
来,大佬说一下这个相控阵雷达😏😏
1 回复
分享
发布于 2018-10-01 09:52
啊超棒呀!但是看这个时间我差点以为我穿越了,现在难道不是2018年吗ʕ ᓀ ᴥ ᓂ ʔ
点赞 回复
分享
发布于 2018-10-07 14:45
总结的真好,期待楼主继续更新,太棒了
1 回复
分享
发布于 2018-10-20 18:33
满满的干货呢,对于一个研一迷途小菜鸟来说,非常受益,感谢感谢感谢。字里行间中,能够看出楼主的用心之切,优秀优秀优秀!!!
点赞 回复
分享
发布于 2018-10-22 21:18
感觉楼主真的很用心在写,而且准备也是很充足啊,问一下楼主,他问的这些大多在学知识的时候不太会关注,比如比较Java和C++,比如介绍Spring,对比Spring boot,这些楼主都是怎么学的
点赞 回复
分享
发布于 2018-10-24 09:28
你这个记忆力太惊人了。。。
1 回复
分享
发布于 2019-07-26 16:55
平安科技:内推码:Q5AXCV(有兴趣可以试试哈)招聘官网:http://wetalent.pingan.com/29a5ed35e1da38f88c24ea09b4f1ea2a/campus/home
1 回复
分享
发布于 2019-08-20 22:23
银联笔试完全瞎做的😭
点赞 回复
分享
发布于 2018-09-30 22:56
想知道你4分钟说出自己的牛逼出,你说了啥
点赞 回复
分享
发布于 2018-09-30 23:11
老哥最后去哪了?银联和招行你觉得哪个好点?
点赞 回复
分享
发布于 2018-10-01 07:33
synchronized("a")是一个锁吗?为什么?请问楼主怎么答的
点赞 回复
分享
发布于 2018-10-01 10:05
点赞点赞
点赞 回复
分享
发布于 2018-10-07 15:58
大赞,感谢lz分享
点赞 回复
分享
发布于 2018-10-07 17:46
好赞,感谢分享
点赞 回复
分享
发布于 2018-10-07 18:35

相关推荐

294 2235 评论
分享
牛客网
牛客企业服务