面试美团、头条、百度、京东,一名3年Java开发经验的面试总结

简介: 毕业转行做开发3年以来, 学到了很多, 加上自己的兴趣爱好, 个人认为已经成为了一个合格的程序员.与刚开始找工作面试相同的是都会问一些相同的问题, 不同的是现在面试官会更注重为什么, 也就是说注重深度而非广度. 3年, 5年, 10年分别是个人从事技术方面职业规划中的一个坎, 3年大部分时间应对了业务逻辑, 培养良好的规范和思想, 基础知识还是欠缺.

前言

毕业转行做开发3年以来, 学到了很多, 加上自己的兴趣爱好, 个人认为已经成为了一个合格的程序员.

与刚开始找工作面试相同的是都会问一些相同的问题, 不同的是现在面试官会更注重为什么, 也就是说注重深度而非广度. 3年, 5年, 10年分别是个人从事技术方面职业规划中的一个坎, 3年大部分时间应对了业务逻辑, 培养良好的规范和思想, 基础知识还是欠缺.

找工作时, 除了薪资符合个人职业规划也是相当重要的.废话少说, 以下是我前两天面试总结的面试题.

JavaSE

集合

hashmap结构及原理

扩容因子, 如何扩容, 数据结构图….

ArrayList, LinkedList 原理及区别(画出数据结构)

集合四要素: 是否可重复, 是否允许空值, 是否有序, 是否线程安全…

线程安全集合,map 为什么是线程安全的, 哪些操作关系到线程安全

算法

说几个常见的排序算法, 实现原理, 对应的时间空间复杂度, 稳定性

手撕一个算法(书写): 可以选择冒泡

递归算法

面向对象

多态的表现

面向对象特征

static的用法

String StringBuilder区别, 什么情况下用’+’. 最好答出javap编译后’+’实现原理

多线程

线程的实现方式

线程的状态

常见线程池及使用

一个线程结束开始另外一个线程的实现方式

线程原理(ThreadLocal)

start与run的区别

悲观锁乐观锁

IO流

写一个读写文件

事务相关

事务机制

AB分别是一个事务, C里面有A, B, 如果C里A或B失败回滚C是什么状态

什么是事务及使用场景

框架相关

Spring , MVC, MyBatis

介绍下Spring以及其常用的注解, Spring IOC实现原理, AOP实现原理及使用场景, 依赖注入原理

Spring事务传播与隔离级别

MyBatis映射原理

分布式相关架构

系统架构介绍, 架构设计图以及什么场景使用了什么架构

Dubbo机制, Zookeeper机制以及他们的关系

Redis数据类型以及使用场景, 刷新时间间隔

Kafka介绍及使用场景承担的角色

讲述一下Storm

数据库

MySQl

mysql数据库存储类型及其优缺点

分布式分片分库设计, 主从结构

其他

sql优化

索引创建原则(手写一个SQL)

SQL集中DDL, DMl==

建表的规则或者注意事项

数据库隔离级别及原因

设计模式

介绍下常见的设计模式以及使用场景

写一个单例模式实现

通讯

HTTP相关介绍, GET, POST的区别

JVM相关

Java垃圾回收机制

Java内存结构(与回收机制有关)

其他

RBAC权限模型, 分布式Session实现

常见linux命令(如何查看文件第200行, 如何查找文件)

写在最后, 两天面了四家有了3个offer, 其中京东的没过. 总结了一下, 京东这种互联网以技术驱动的公司会更注重个人的基础知识,自学能力以及动手能力, 他们会问的很细, 毫无准备的我, 应对起来相当吃力, 没过是正常.. 因为请假面试先探探行情, 所以并无准备, 很多东西答得不好, 但由于经验在这儿一般公司也就认同了, 不过这种情况下薪资会不是很理想, 建议还是多多准备

如何复习

资料获取:可以点击此处来获取就可以了!

面试宝典

  • 互联网115+120道面试题及答案
  • 蚂蚁金服面试宝典
  • Dubbo面试题及答案
  • Java后端面试题及答案
  • Java面经
  • JVM面试题及答案

(1)Java面试手册

  • 性能优化面试专栏
  • 微服务架构面试专栏
  • 并发编程高级面试专栏
  • 开源框架面试题专栏
  • 分布式面试专栏

(2)实战文档

  • Redis实战
  • MySQL实战
  • Spring Boot实战
  • Spring Cloud实战
  • 实战Java虚拟机

以实战Java虚拟机为例:

  1. 初探Java虚拟机
  2. 认识Java虚拟机的基本结构
  3. 常用Java 虚拟机参数
  4. 垃圾回收概念与算法
  5. 垃圾收集器和内存分配
  6. 性能监控工具
  7. 分析Java堆
  8. 锁与并发
  9. Class 文件结构
  10. Class 装载系统
  11. 字节码执行

(3)Java核心知识点整理文档

由于篇幅限制,很多内容都只展示了目录和截图,这些都整理在文档里,需要这些文档资料的,均可以免费分享给大家,希望所有的程序员都能够学习起来,努力实现我们的大厂梦!

资料获取:可以点击此处来获取就可以了!

目录
打赏
0
0
1
0
434
分享
相关文章
Java社招面试中的高频考点:Callable、Future与FutureTask详解
大家好,我是小米。本文主要讲解Java多线程编程中的三个重要概念:Callable、Future和FutureTask。它们在实际开发中帮助我们更灵活、高效地处理多线程任务,尤其适合社招面试场景。通过 Callable 可以定义有返回值且可能抛出异常的任务;Future 用于获取任务结果并提供取消和检查状态的功能;FutureTask 则结合了两者的优势,既可执行任务又可获取结果。掌握这些知识不仅能提升你的编程能力,还能让你在面试中脱颖而出。文中结合实例详细介绍了这三个概念的使用方法及其区别与联系。希望对大家有所帮助!
191 60
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
88 14
Java 面试必问!线程构造方法和静态块的执行线程到底是谁?
大家好,我是小米。今天聊聊Java多线程面试题:线程类的构造方法和静态块是由哪个线程调用的?构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节有助于掌握Java多线程机制。下期再见! 简介: 本文通过一个常见的Java多线程面试题,详细讲解了线程类的构造方法和静态块是由哪个线程调用的。构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节对掌握Java多线程编程至关重要。
54 13
Java线程调度揭秘:从算法到策略,让你面试稳赢!
在社招面试中,关于线程调度和同步的相关问题常常让人感到棘手。今天,我们将深入解析Java中的线程调度算法、调度策略,探讨线程调度器、时间分片的工作原理,并带你了解常见的线程同步方法。让我们一起破解这些面试难题,提升你的Java并发编程技能!
97 16
Java 高级面试技巧:yield() 与 sleep() 方法的使用场景和区别
本文详细解析了 Java 中 `Thread` 类的 `yield()` 和 `sleep()` 方法,解释了它们的作用、区别及为什么是静态方法。`yield()` 让当前线程释放 CPU 时间片,给其他同等优先级线程运行机会,但不保证暂停;`sleep()` 则让线程进入休眠状态,指定时间后继续执行。两者都是静态方法,因为它们影响线程调度机制而非单一线程行为。这些知识点在面试中常被提及,掌握它们有助于更好地应对多线程编程问题。
79 9
Java面试必问!run() 和 start() 方法到底有啥区别?
在多线程编程中,run和 start方法常常让开发者感到困惑。为什么调用 start 才能启动线程,而直接调用 run只是普通方法调用?这篇文章将通过一个简单的例子,详细解析这两者的区别,帮助你在面试中脱颖而出,理解多线程背后的机制和原理。
75 12
Java MyBatis 面试题
Java MyBatis相关基础面试题
|
10天前
|
【Java并发】【线程池】带你从0-1入门线程池
欢迎来到我的技术博客!我是一名热爱编程的开发者,梦想是编写高端CRUD应用。2025年我正在沉淀中,博客更新速度加快,期待与你一起成长。 线程池是一种复用线程资源的机制,通过预先创建一定数量的线程并管理其生命周期,避免频繁创建/销毁线程带来的性能开销。它解决了线程创建成本高、资源耗尽风险、响应速度慢和任务执行缺乏管理等问题。
124 60
【Java并发】【线程池】带你从0-1入门线程池
|
6天前
|
【源码】【Java并发】【线程池】邀请您从0-1阅读ThreadPoolExecutor源码
当我们创建一个`ThreadPoolExecutor`的时候,你是否会好奇🤔,它到底发生了什么?比如:我传的拒绝策略、线程工厂是啥时候被使用的? 核心线程数是个啥?最大线程数和它又有什么关系?线程池,它是怎么调度,我们传入的线程?...不要着急,小手手点上关注、点赞、收藏。主播马上从源码的角度带你们探索神秘线程池的世界...
52 0
【源码】【Java并发】【线程池】邀请您从0-1阅读ThreadPoolExecutor源码
【JAVA】封装多线程原理
Java 中的多线程封装旨在简化使用、提高安全性和增强可维护性。通过抽象和隐藏底层细节,提供简洁接口。常见封装方式包括基于 Runnable 和 Callable 接口的任务封装,以及线程池的封装。Runnable 适用于无返回值任务,Callable 支持有返回值任务。线程池(如 ExecutorService)则用于管理和复用线程,减少性能开销。示例代码展示了如何实现这些封装,使多线程编程更加高效和安全。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等