关于Java岗校招的笔试和面试

如果你正在开始准备校招,希望可以帮到你。

笔试

笔试准备

算法题是笔试中最重要的部分:

  • 剑指offer,建议必刷。
  • LeetCode 算法题200道,基本可以从容面对各种笔试面试的算法题。
  • LeetCode 上同样提供了SQL语句的练习

除此之外一些银行、手机厂商会考选择题和代码填空题:

  • 选择题一般可分为:
    • 语言:前期开始准备的时候可以到牛客上刷对应的选择题,中后期不建议刷。
    • 计算机网络:TCP/IP协议栈、端口计算。
    • 找规律、计算题等。
  • 代码填空(以Java为例):
    • 常见的排序
    • 一些常见的API:反射、线程、文件读取

笔试前需要

  • 阅读笔试的规则,需要注意是否可以使用本地IDE进行编码。
  • 进入笔试测试链接,提前熟悉OJ平台的输入输出规则,特别是输入。
  • 笔试开始前10-15分钟进入考试界面,准备好纸和笔。
  • 注意不要电脑分屏,会被判作弊。

面试

面试前一定要对自己的简历非常熟悉,包括:项目的背景、需求、业务逻辑、部署环境、并发量、使用的线程池等,这是体现这个项目是真的自己做的,另一方面是项目用到的技术栈,常规的用法以及背后涉及的设计原理,这是自身知识深度的体现。

写简历的时候需要换位思考,多想一下如果你是面试官看到这个项目会问什么问题。通过思维导图抽象出简历上所涉及到的知识点。

推荐书籍

  • [1] 基础:《Java核心技术卷一》(入门)、《Think in Java》(建议有一定开发经验后阅读,扎实基础)
  • [2] JVM:《Java虚拟机-JVM高级特性与最佳实践》
  • [3] 并发: 《Java并发编程艺术》
  • [4] 数据库:《MySQL技术内幕》
  • [5] 网络:《TCP/IP详解-卷一》、《图解HTTP》
  • [6] 分布式:《分布式服务架构:原理、设计与实践》(此书不面向面试)
  • [7] zookeeper:《zookeeper分布式过程协同技术详解》、《从paxos到Zookeeper》
  • [8] Netty:《Nettty权威指南》
  • [9] Redis:《Redis深度历险:核心原理和应用实践》(写得非常好懂)

以上是我秋招准备的时候看过的一些书,内容很多需要抓住重点。[7-8]根据自己的项目确定技术栈,选择对应的书籍,不限于这些。

面试内容

面试可分为大致几个部分:

  • 自我介绍:需要提前准备,一般3-5分钟,要有条理性。针对不同的公司或者岗位准备不同的自我介绍。体现自己的闪光点:论文、开源项目、竞赛、成绩年级第一等。技术面不需要介绍社团活动之类的。HR就面可以增加一人文类内容:才艺、社团活动、主持、演讲之类的啊。

  • 面试官提问类型(Java研发为例,以下顺序不定,每个面试官的习惯不一样):

    • 语言基础知识,关键词【这些知识点有的是并列有的是包含关系】:并发、JVM、常见集合类、Currency包、类的加载和双亲委派、CAS、Synchronized、各种线程池、volatile、各种锁、GC算法、JVM内存模型等。
    • 计算机网络,关键词:TCP/IP协议栈,【HTTP,HTTP1.1,HTTP2】的区别、HTTPS协议栈的流程、【TCP的三次握手四次挥手,为啥】、UDP、DNS等。
    • 数据库【MySQL为例】:索引类型、【索引的数据结构,为啥用这个】、数据库的隔离级别,【MySQL的默认隔离级别,如何实现安全的读(MVCC)和写(几种锁)】、联结方式等、数据库引擎的类型和特点等。
    • 有的面试官在问项目之前为让你介绍你觉得对自己提升最大的项目,哪里提升最大。
    • 项目:项目的场景、某些业务的逻辑、并发量和某些实现细节。所采用的技术框架的原理和某些应用。如:【spring的bean加载流程,如何解决循环引用】、【zookeeper的观察者模式怎么实现的、如何实现一个分布式锁、读写锁、独占锁?Paxos算法来一下】。根据自己的项目来准备。
    • 场景题:TopK问题、海量数据排序等。
    • 手撕代码:大部分出自《剑指offer》,也有LeetCode上的。难度低于笔试。当然也会有非常简单的排序题,请注意这类题请快速!正确!地写出来,注意代码规范,我的美团三面挂在了冒泡写了10分钟,说来惭愧,为秋招留下了一大遗憾。
    • 其他:论文、读书、成绩等。如实回答即可。
  • 反问阶段:一般都有反问阶段,除非面试官太忙。推荐问:部门的情况、业务、产品、技术栈,如果能够进去可以从事哪方面的开发任务。一定要疯狂暗示对贵公司感兴趣,就是你了。尽量不要问一些很难的技术问题【您会手写红黑树吗?】,面试中有价值的问题可以反问,其实下来之后在网上也是可以找到的。

这是一个StringBuilder和StringBuffer引发的面试血案-国内Java面试总是问StringBuffer,StringBuilder区别是啥?档次为什么这么低? - Hollis的回答 - 知乎
上面的回答是一个变态的面试过程,所谓的深挖知识点。虽然夸张,但是基本是涵盖了所有方面。

面试前需要

  • 一定要找一个安静没有噪音的地方。
  • 确定面试形式,视频面注意有个干净整洁的个人形象;电话面试建议戴上耳机,不要把手机放在耳朵旁。
  • 旁边准备好纸和笔,有些东西一边阐述一边在纸上画出来会更有调理。

面试中

  • 紧张!我身边的人大多数人第一次面试都会紧张的,所以不要第一就去面试心怡的公司,先找几个备胎公司面试一下【备胎做错了啥】,或者找人模拟几次面试。基本三次之后就不会紧张了,五面之后摸清面试套路内心有点小激动,十面之后面试就是这么的朴实无华且枯燥,十五面之后自我介绍已经说吐了给我offer八。
  • 遇到不会的问题有三种思路:1. 当然是不会就是不会,不要瞎扯,特别是一些死概念或者完全不懂的领域。2. 对于原理或者底层实现不知道的可以这样说:我下来没有看过具体怎么实现的,但是我觉得或者我来会怎么实现。3. 反问面试官,有的时候是没有听清楚或者没有理解到一些技术名词,其实是有准备到的知识点,这时候需要反问面试官确定一下或者让他稍微解释一下这个名词。
  • 真男人从不回头,回答完一个问题不要再去想,迅速进入面试官问的下一个问题。

最近在帮团队收简历,上面很多是投递同学经常问的问题,但是暂时先想到这么多,后面再补。

你可能感兴趣的:(关于Java岗校招的笔试和面试)