Java笔试题考点梳理

简介: 目前互联网企业在招人过程中,一般都要求进行笔试题考察。可能不同的面试官,出的题不一样,考察的侧重点也不大一样。做为面试官,我时常提醒自己:要结构化评估、客观量化面试者答题成绩。结合我自己的面试候选人的经历,我分享下我是怎么评估候选人Java笔试的内容。

1. 笔试题目选择

关于笔试题的选择,有很多种方式。无论怎么选择,一定要问自己:这个题是否可以把候选人的动手能力体现一二?是否和本岗位的实际研发技能需求贴近?


我了解到,有的面试官经常从公共题库选题,有的面试官从个人题库选题,有的面试官从网上选题,有的面试官长你只用同一道题。无论哪里的题,其实核心是:具体延伸、深挖的考察点,这样可以通过互动提问过程,或者说代码review 交互过程,评估出候选人的动手、思考、交流等软硬件能力


2. 笔试题考察点

1. 需求理解

有的笔试题,非常抽象,然后给一个简单例子。有的笔试题,非常具体,考察的点非常明确。例如案例1: 有N个队列,每个队列有M个数字,求所有队列都出现的数字。例如案例2,求A 和B 字符串的共同出现的最长子串。


一些候选人,上来就开始写代码。这不是最佳的“姿势“。应该先进行需求对齐,需要主动向面试官提问。例如案例1,队列的数字是否有序,队列的数字是否重复,队列的数字类型是否统一等。例如案例2,是直接使用lib,还是自己实现,对时间复杂度有什么要求。


加分点:主动需求沟通、需求对其。这个反应的是工作中,是否“习惯性“对需求发起对齐、确认的”意识“


2. 最佳和最快

有的候选人敲代码前很纠结,这个题是最快、最笨的方法实现,还是弄一个最佳的、需要仔细设计的实现?例如案例1,直接暴力的 for、hash等实现,还是排序队列求交实现?


推荐:先已自己最擅长的方式,或者说最笨的方式,快速实现一个版本。然后在与面试官,讲解代码过程中,提出其他的实现方案,需要“讲“清楚关键数据结构、关机处理逻辑。


3. Code Review

这部分最为关键,尽是细节点。也正是这些“细节”点,反应候选人在写代码过程中的点滴思考和过往经验的“折射”。

一般的考察点如下

1. 可读性、可运维性

体现的点:(1)函数、方法、参数的命名(2)主线逻辑、局部实现逻辑的 “组合“编排 (3)For 循环的深度、If else的 简化、Case switch的简化 (4)基本的注释说明 (5)程序异常了,如何排查定位问题


提问:

  1. 命名有什么好的经验和选择
  2. 函数的行数一般多长比较合适,为什么
  3. 添加新的逻辑,在这段代码哪里改,成本最小
  4. If else 是否可以精简
  5. for 循环是否可以 提前退出
  6. for、do while、while 有什么区别,使用的注意事项是什么
  7. 注释怎么写比较好?为什么。例如中文注释有什么不足点?
  8. 有没有GVM 调参的经验
  9. 程序异常崩溃了,如何排查,一般使用哪些工具排查
  10. 平时代码部署的服务器有多少台,有没有遇到部署过程中的异常问题,如何排查和解决
  11. 业务是否出问题怎么识别、怎么定位、怎么解决

。。。


2. 健壮性、基本质量

体现的点:(1)入参数的校验(2)边界条件的处理(3)循环的退出条件 (4)IO资源的关闭(5)日志的输出 (6)单侧的用例覆盖

提问:

  1. 当前的实现,支持哪些场景、不支持哪些场景的输入
  2. 边界条件是什么,为什么这么处理
  3. 循环是否有提前退出的可能,是什么时候
  4. IO资源关闭,是否存在极端情况的泄漏
  5. Sytem.out 和 log 输出的差别是什么?什么时候使用system、log
  6. 代码质量的保障措施有哪些?
  7. 常见的测试方法有哪些,你平时使用那种方法,有什么优点、不足
  8. 如果运行过程中,突然断电了会有什么问题发生
  9. 如何改造,可以在服务器异常下,业务不受影响
  10. 大型项目,很多同学同时研发,如何保障整体的质量
  11. Map、HashMap、List、ArrayList、Filter等基础数据结构原理和实现

。。。


3. 复用性、移植性

体现的点:(1)逻辑处理的场景鉴容性 (2)方法抽象定义的内聚、功能单一性 (3)无状态化,减少全局变量的依赖 (4)简单数据结构


提问:

  1. 具体代码考虑的场景是否充分,例如还其他的输入的影响?
  2. 结合这个笔试题,用面向对象的概念分析、介绍下?
  3. 服务器异常,快速从另外一个服务器拉起应用,当前实现是否可行,有什么需要改造的
  4. 复杂均衡怎么实现
  5. 限流降级怎么实现
  6. 切面是否有帮助
  7. 配置中心是否有帮助,为什么
  8. 是否可以跑在云端,如何改造
  9. 做为公共Tool 类,还需要做哪些改造
  10. 你觉得企业内部代码是否应该全员开放,为什么
  11. Java、GO、C++、Python等语言的差异是什么,你喜欢哪种语言,为什么

。。。


3. 复杂度优化

体现的点:(1)算法本身的复杂度 (2)分布式实现方案 (3)其他的组合算法实现

提问:

  1. for循环可否去掉,为什么
  2. 是否有分布式的实现方案
  3. 是否可以多算法组合进行优化,怎么做
  4. 如何控制软件的复杂度?
  5. 重构是怎么理解的,什么时候需要重构?重构需要避免哪些坑
  6. 架构设计有什么作用,架构设计和复杂度优化是否有关系,如何通过架构设计降低复杂度
  7. 复用第三方jar 和自己实现,有什么异同,需要注意什么

。。。


4. 性能优化

体现的点:(1)内存优化 (2)IO优化 (3)网络优化 (4)多线程优化(5)分布式版本实现 (6)GC友好优化 (7)Cache 优化 (8)任务拆分


提问:

  1. 输入参数非常大,内存装不下,怎么优化
  2. 频繁的内存、磁盘交换,有什么问题,如何优化
  3. 多线程原理,本题多线程是否可以实现,如何实现
  4. 单机并行、分布式并行实现的方案是什么
  5. 当前算法实现,是否可以直接分布式部署使用,需要怎么改造,可以实现分布式版本
  6. 当前代码实现,哪些地方可以优化,可以对GC回收友好
  7. Java GC的原理、常用回收算法
  8. 其他性能优化,例如cache引入
  9. 平时了解和使用的cache 算法有哪些,优缺点是什么
  10. 大型项目,研发如何分工合作
  11. 当前的实现方法是否可以进一拆解?
  12. 大任务和小任务,例如大sql 和多个小sql 并行执行,那个更好,为什么?
  13. 同步和异步的区别是什么
  14. 消息引入进来,是否有帮助,为什么
  15. 使用mysql 为何不使用nosql
  16. 使用其他存储是否有帮助,例如es 为什么有帮助?


。。。





目录
相关文章
|
存储 算法 安全
JAVA 八股文全网最详尽整理包含各类核心考点助你高效学习 jAVA 八股文赶紧收藏
本文整理了Java核心技术内容,涵盖Java基础、多线程、JVM、集合框架等八股文知识点,包含面向对象特性、线程创建与通信、运行时数据区、垃圾回收算法及常用集合类对比,附有代码示例与学习资料下载链接,适合Java开发者系统学习与面试准备。
1924 0
|
SQL Java 数据库连接
Java 期末考试救急必备涵盖绝大多数核心考点及五大类经典代码助你过关
本文为Java期末考试复习指南,涵盖基础语法、面向对象编程、异常处理、文件操作、数据库连接五大核心考点,提供详细解析与实用代码示例,助力快速掌握重点,高效备考,轻松应对考试。
763 0
|
搜索推荐 算法 Java
2025 年互联网大厂校园招聘 JAVA 工程师笔试题及备考要点解析
本文针对互联网大厂校招Java工程师笔试题进行解析,涵盖基础知识、面向对象编程、数据结构与算法、异常处理及集合框架等核心内容。从数据类型、运算符到流程控制语句,从类与对象、继承多态到数组链表、排序算法,再到异常捕获与集合框架应用,结合实际案例深入剖析,助你系统掌握考点,提升应试能力。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
497 9
|
Java 数据库连接 API
互联网大厂校招 JAVA 工程师笔试题解析及常见考点分析
本文深入解析互联网大厂校招Java工程师笔试题,涵盖基础知识(数据类型、流程控制)、面向对象编程(类与对象、继承与多态)、数据结构与算法(数组、链表、排序算法)、异常处理、集合框架、Java 8+新特性(Lambda表达式、Stream API)、多线程与并发、IO与NIO、数据库操作(JDBC、ORM框架MyBatis)及Spring框架基础(IoC、DI、AOP)。通过技术方案讲解与实例演示,助你掌握核心考点,提升解题能力。
591 2
|
设计模式 算法 Java
2025 春季校招 Java 研发笔试题详细解析及高效学习指南
本指南专为2025春季校招Java研发岗位笔试设计,涵盖Java 17+新特性(如模式匹配、文本块、记录类和密封类)、现代技术栈(Spring Boot 3、响应式编程、Stream API增强)以及算法与数据结构实战。同时深入解析Spring Data JPA、事务管理、性能优化等内容,并结合实际案例讲解常见算法题解与设计模式应用。资源包含核心知识点、面试题及笔试技巧,助力高效备考。下载地址:[链接](https://pan.quark.cn/s/14fcf913bae6)。
377 1
|
存储 算法 NoSQL
2025 春季校招 java 研发岗位笔试题及相关内容
这份指南针对2025春季校招Java研发岗位,系统梳理了笔试核心知识点。内容涵盖Java基础(关键字、数据类型、循环与条件判断)、集合框架(List、Set、Map)、多线程(创建、同步、休眠与等待)以及异常处理(类型与机制)。通过典型例题解析与实践指导,帮助求职者掌握解题思路,提升编程能力,为成功通过校招笔试奠定基础。资源链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)
417 0
|
存储 安全 算法
Java 集合面试题 PDF 下载及高频考点解析
本文围绕Java集合面试题展开,详细解析了集合框架的基本概念、常见集合类的特点与应用场景。内容涵盖`ArrayList`与`LinkedList`的区别、`HashSet`与`TreeSet`的对比、`HashMap`与`ConcurrentHashMap`的线程安全性分析等。通过技术方案与应用实例,帮助读者深入理解集合类的特性和使用场景,提升解决实际开发问题的能力。文末附带资源链接,供进一步学习参考。
382 4
|
存储 安全 Java
Java 集合面试题从数据结构到 HashMap 源码剖析详解及长尾考点梳理
本文深入解析Java集合框架,涵盖基础概念、常见集合类型及HashMap的底层数据结构与源码实现。从Collection、Map到Iterator接口,逐一剖析其特性与应用场景。重点解读HashMap在JDK1.7与1.8中的数据结构演变,包括数组+链表+红黑树优化,以及put方法和扩容机制的实现细节。结合订单管理与用户权限管理等实际案例,展示集合框架的应用价值,助你全面掌握相关知识,轻松应对面试与开发需求。
685 3
|
Java 程序员
Java社招面试中的高频考点:Callable、Future与FutureTask详解
大家好,我是小米。本文主要讲解Java多线程编程中的三个重要概念:Callable、Future和FutureTask。它们在实际开发中帮助我们更灵活、高效地处理多线程任务,尤其适合社招面试场景。通过 Callable 可以定义有返回值且可能抛出异常的任务;Future 用于获取任务结果并提供取消和检查状态的功能;FutureTask 则结合了两者的优势,既可执行任务又可获取结果。掌握这些知识不仅能提升你的编程能力,还能让你在面试中脱颖而出。文中结合实例详细介绍了这三个概念的使用方法及其区别与联系。希望对大家有所帮助!
898 60
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
484 3