作为Java程序员,你应该知道的事

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 面试是一门艺术,技术重要,但重要的不止技术,这一路走来的心得体会都在下面了,纯手敲,希望能帮各位少走弯路~

【无内鬼,无广告,无推销,纯干货,放心入】


原文传送门


从毕业到现在,我面试过很多家公司,也面试过别人,面试者和面试官的心态我都经历过;


从最初啥都不懂,到现在能在大厂帮公司面试别人,多多少少还是有些经验和收获的,我是一个乐于分享的人,这一路走来的心得体会都在下面了,纯手敲,希望能帮各位少走弯路~


面试是一门艺术,技术重要,但重要的不止技术


一、准备工作:

作为Java程序员,你必须要掌握的技术栈:java基础+spring生态+数据库+项目+中间件+日常运维+前端基础

后两个只作为加分项,毕竟稍大点的厂都有独立的运维、前端,但不排除有些大厂喜欢一条龙开发,这时候你要是会前端、再会点基础运维,这offer不就来了


Java基础:没啥好说的,基础不好啥都白搭

我相信这篇 Java核心知识点整理 但凡理解80%,都没人说你基础不好,当然你得真正理解,不要硬背,很多朋友给我反馈过,通过看我的博客跳进了京东阿里等大厂,别人可以你也可以; 其中数据集合很重要,hashMap、arrayList等的底层实现你要了解,和他们对应的线程安全类你要知道,hashmap的扰动算法是很值得学习的(就算不是为了面试也有必要学习),传送门; 除此之外,需要了解二叉树、栈和队列各自的特点,家里有条件的最好自己实现一下; 稍微进阶一点,自定义线程池的那几个参数一定要搞清楚,线程池初始化后,从第一个任务进来,到后面触发拒绝策略整个过程都要搞清楚,关于线程池可以看看这个 一个demo让你彻底理解线程池工作流程; 然后并发编程也要懂点吧,至少要知道为什么会产生线程安全问题,一般怎么避免; 说到并发编程,多个线程间如何调度要知道吧,关于这点,这篇博客请你花时间好好看看 多线程进阶


spring:熟悉一些常用注解,都起什么作用?怎么使用?

spring两大门神ioc和aop是必须理解的,这是spring容器实现对象管理的基础; 大概率会问自动装配原理,这个问题很能看出你对springboot的理解程度,建议在启动类打个断点,跟踪一下springboot的启动流程; 另外,家里有条件的话可以自己写个starter,然后在另一个项目中引用,这个过程中你会学到很多东西,相信我; 之前写过一篇讲aop的,可以看看,基于springboot实现一个简单的aop


数据库:熟悉一些市面上常见的数据库

大表优化,事务特性,事务失效场景,索引失效场景,最左匹配原则,慢查询优化,怎么看sql执行计划,索引相关(索引结构、几大索引的区别,什么是回表查询,如何避免); 数据库中mysql必须要熟悉,毕竟普及度最广,从一个sql提交到返回结果,它的执行流程要了解,其中sql优化器是重点 关于性能优化,之前写过一篇,虽然场景单一,也可以看看

mysql执行计划explain属性解析

mysql性能优化:单表1400w查询最后十条数据

疯狂试探mysql单表insert极限:已实现每秒插入8.5w条数据


项目:一定要熟悉自己的项目,项目背景、功能模块、涉及技术栈,以及搞清楚自己负责了哪些模块

准备1到2个项目亮点(所谓亮点,并不一定是高并发、多线程、分布式相关这种,只要不是简单的crud,都可以是亮点,千万别说没有,如果实在太简单你就夸大点,你记住,项目是你的,面试官不可能比你更懂你的项目,一顿忽悠就完事儿,其实面试就是你和面试官互相吹牛逼的过程); 你做了什么?解决了什么问题?过程中遇到什么困难?怎么解决的?最终达到了什么效果?面试要是问到项目你就一口气给他说完,学会抢答,别等面试官问一个你答一个;


中间件:主要是缓存和消息队列,缓存代表redis,消息队列代表rabbitMQ、kafka

其中redis的五大数据结构你要搞清楚,每种结构一般用于什么场景,有条件的可以在本地测试下每种结构的set/get,看下你存的数据在redis中长什么样,如果你懒,我已经帮你们测试过了,传送门,但最好还是自己操作下; 然后就是缓存数据库的一致性问题,还有缓存雪崩、穿透如何避免,建议了解下布隆过滤器,一般提到redis都会扯扯它; 消息队列方面你要搞清楚为什么使用消息队列,它解决了什么问题,什么场景下会使用到消息队列,进阶点的会问你如何保证消息的可靠性,也就是如何保证消息不丢失,不重复消费;


日常运维:不需要多深入,但要保证够用

别的不多,怎么查看日志你要会吧,怎么在日志中过滤想看的信息要会吧; 服务器安全知识要稍微懂点吧,比如防火墙、用户权限啥的; 然后稍微进阶一点,cpu拉满了要知道怎么排查吧,oom了要知道从哪儿找原因吧; 再进阶一点,老大突然让你搭个kafka集群,你不可能回一句我不会吧,多学点总没坏处,技多不压身 推荐几篇运维相关的,简单看看,里面很多命令都是常用的

linux搭建kafka集群,详细到复制命令就能成功

linux cpu飙高原因排查


前端能力:这点见仁见智,看你面的部门有没有前端业务需求

说是加分项吧,有时候又能成为公司决定要不要你的关键点,说是必须掌握的吧,你又是个臭搞Java的; 现在很多部门都不喜欢招前端,因为前端很难招,如果你自己能独立完成前端开发工作,那真是极好的,目前两大框架vue和react,至少要知道其中一个怎么用吧; 我知道css调试样式会要了老命,但主流的ui框架要会用吧;


【简历】:不要小看简历,简历和技术一样重要

不要只整个一页,即使你是应届生也要凑个两页,但也不要太多,正常控制在3-4页的样子差不多; 内容:你的个人信息,你会什么,你做过什么项目,项目有什么亮点,你的优势在哪里; 一定简明扼要,精简干练,第一时间让hr和面试官看到你的优势;


最后


程序员的简历不需要花里胡哨

不需要花里胡哨

花里胡哨


但是、内容写好后一定要排版,该对齐的对齐,该加粗的加粗


二、简历投递


推荐某某直聘,把自己的在线简历好好整理下,和自己的简历保持同步,hr看简历会先看在线简历 boss直聘有个打招呼语,建议自己编辑一段话,系统默认的人家hr早看腻了,只有你的消息和别人不一样,hr小姐姐才会认为你是认真看过他们的岗位描述 有件事你需要知道,一些企业不会在boss直聘这种招聘平台发布招聘,需要去他们官网自己找,比如很多银行、某些国企


三、约面试


建议一开始不要投自己心仪的公司,约个备胎公司找找感觉,总结下面试情况,一定要总结; 如果你能碾压这些小白鼠公司的面试官了,就试着投想去的公司,但要注意,越想进去的公司,面试越紧张,亲身体会,面试之前注意调整心态,最好是有了其他offer再投喜欢的公司,这样你更有底气


四、面试ing


  • 首先你要搞清楚,面试本来就不是公平的,你在明,面试官在暗,面试官自己也知道这点,所以问题答不上来是很正常很正常的,不要觉得一个问题没答上你就凉了,面试官肯定是看你的整体水平;
  • java基础一定要过硬,一定要跟面试官展示你的学习能力,菜没事,但我肯学;
  • 面试过程中语速要慢,把自己想说的表达清楚,紧张是肯定的,所以让先约备胎练练手,其实就是练心态,找到适合自己调整心态的方法,我就喜欢在面试之前可以找个没人的地方自言自语瞎逼逼几句,给自己打打气壮壮胆;
  • 自我介绍要说重点,你是哪儿人、多大了、毕业多久了(如果是科班,一定要大声说出来!!!)、做过哪些项目;


另外,不要抖脚、不要迟到


重点补充:

  1. 如果遇到不会的,不要瞎编,不会就说不会,就算你糊弄过去了,进公司要是真让你做你咋整,坑了公司也坑了自己;
  2. 面试官是想通过面试了解你,所以不要问什么答什么,要学会展现自己,有些没问到的你也可以主动说,比如你搞过线上jvm调优、设计过数据库表、排查过线上问题等等等等,这些亮点你得展示出来,不然面试官怎么知道。



祝各位offer拿到手抽筋


ok我话说完

相关文章
|
7月前
|
人工智能 Kubernetes Java
回归开源,两位 Java 和 Go 程序员分享的开源贡献指引
Higress是一个基于Istio和Envoy的云原生API网关,支持AI功能扩展。它通过Go/Rust/JS编写的Wasm插件提供可扩展架构,并包含Node和Java的console模块。Higress起源于阿里巴巴,解决了Tengine配置重载及gRPC/Dubbo负载均衡问题,现已成为阿里云API网关的基础。本文介绍Higress的基本架构、功能(如AI网关、API管理、Ingress流量网关等)、部署方式以及如何参与开源贡献。此外,还提供了有效的开源贡献指南和社区交流信息。
652 33
|
7月前
|
Java 程序员 应用服务中间件
【高薪程序员必看】万字长文拆解Java并发编程!(2 2-2)
📌 核心痛点暴击:1️⃣ 面了8家都被问synchronized锁升级?一张图看懂偏向锁→重量级锁全过程!2️⃣ 线程池参数不会配?高并发场景下这些参数调优救了项目组命!3️⃣ volatile双重检测单例模式到底安不安全?99%人踩过的内存可见性大坑!💡 独家亮点抢先看:✅ 图解JVM内存模型(JMM)三大特性,看完再也不怕指令重排序✅ 手撕ReentrantLock源码,AQS队列同步器实现原理大揭秘✅ 全网最细线程状态转换图(附6种状态转换触发条件表)
125 0
|
7月前
|
存储 缓存 Java
【高薪程序员必看】万字长文拆解Java并发编程!(5):深入理解JMM:Java内存模型的三大特性与volatile底层原理
JMM,Java Memory Model,Java内存模型,定义了主内存,工作内存,确保Java在不同平台上的正确运行主内存Main Memory:所有线程共享的内存区域,所有的变量都存储在主存中工作内存Working Memory:每个线程拥有自己的工作内存,用于保存变量的副本.线程执行过程中先将主内存中的变量读到工作内存中,对变量进行操作之后再将变量写入主内存,jvm概念说明主内存所有线程共享的内存区域,存储原始变量(堆内存中的对象实例和静态变量)工作内存。
236 0
|
7月前
|
设计模式 缓存 安全
【高薪程序员必看】万字长文拆解Java并发编程!(8):设计模式-享元模式设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的经典对象复用设计模式-享元模式,废话不多说让我们直接开始。
166 0
|
7月前
|
存储 安全 Java
【高薪程序员必看】万字长文拆解Java并发编程!(7):不可变类设计指南
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中Java不可变类设计指南,废话不多说让我们直接开始。
123 0
|
7月前
|
机器学习/深度学习 消息中间件 存储
【高薪程序员必看】万字长文拆解Java并发编程!(9-2):并发工具-线程池
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的强力并发工具-线程池,废话不多说让我们直接开始。
254 0
|
7月前
|
存储 监控 算法
Java程序员必学:JVM架构完全解读
Java 虚拟机(JVM)是 Java 编程的核心,深入理解其架构对开发者意义重大。本文详细解读 JVM 架构,涵盖类加载器子系统、运行时数据区等核心组件,剖析类加载机制,包括加载阶段、双亲委派模型等内容。阐述内存管理原理,介绍垃圾回收算法与常见回收器,并结合案例讲解调优策略。还分享 JVM 性能瓶颈识别与调优方法,分析 Java 语言特性对性能的影响,给出数据结构选择、I/O 操作及并发同步处理的优化技巧,同时探讨 JVM 安全模型与错误处理机制,助力开发者提升编程能力与程序性能。
Java程序员必学:JVM架构完全解读
|
8月前
|
人工智能 Java 程序员
Java程序员在AI时代必会的技术:Spring AI
在AI时代,Java程序员需掌握Spring AI技术以提升竞争力。Spring AI是Spring框架在AI领域的延伸,支持自然语言处理、机器学习集成与自动化决策等场景。它简化开发流程,无缝集成Spring生态,并提供对多种AI服务(如OpenAI、阿里云通义千问)的支持。本文介绍Spring AI核心概念、应用场景及开发步骤,含代码示例,助你快速入门并构建智能化应用,把握AI时代的机遇。
1649 61
|
Java 程序员
JAVA程序员的进阶之路:掌握URL与URLConnection,轻松玩转网络资源!
在Java编程中,网络资源的获取与处理至关重要。本文介绍了如何使用URL与URLConnection高效、准确地获取网络资源。首先,通过`java.net.URL`类定位网络资源;其次,利用`URLConnection`类实现资源的读取与写入。文章还提供了最佳实践,包括异常处理、连接池、超时设置和请求头与响应头的合理配置,帮助Java程序员提升技能,应对复杂网络编程场景。
254 9
|
7月前
|
网络协议 Java 大数据
【高薪程序员必看】万字长文拆解Java并发编程!(1)
📌 核心痛点暴击:1️⃣ 面了8家都被问synchronized锁升级?一张图看懂偏向锁→重量级锁全过程!2️⃣ 线程池参数不会配?高并发场景下这些参数调优救了项目组命!3️⃣ volatile双重检测单例模式到底安不安全?99%人踩过的内存可见性大坑!💡 独家亮点抢先看:✅ 图解JVM内存模型(JMM)三大特性,看完再也不怕指令重排序✅ 手撕ReentrantLock源码,AQS队列同步器实现原理大揭秘✅ 全网最细线程状态转换图(附6种状态转换触发条件表)
123 0