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

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

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


原文传送门


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


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


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


一、准备工作:

作为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我话说完

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
存储 算法 Java
惊!Java程序员必看:JVM调优揭秘,堆溢出、栈溢出如何巧妙化解?
【8月更文挑战第29天】在Java领域,JVM是代码运行的基础,但需适当调优以发挥最佳性能。本文探讨了JVM中常见的堆溢出和栈溢出问题及其解决方法。堆溢出发生在堆空间不足时,可通过增加堆空间、优化代码及释放对象解决;栈溢出则因递归调用过深或线程过多引起,调整栈大小、优化算法和使用线程池可有效应对。通过合理配置和调优JVM,可确保Java应用稳定高效运行。
129 4
|
2月前
|
算法 Java 程序员
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
61 9
|
2月前
|
Java 程序员
Java数据类型:为什么程序员都爱它?
Java数据类型:为什么程序员都爱它?
44 1
|
11天前
|
Java 大数据 程序员
我的程序员之路:自学Java篇
我的程序员之路:自学Java篇
|
3月前
|
Java 程序员 C++
大牛程序员用Java手写JVM:刚好够运行 HelloWorld
大牛程序员用Java手写JVM:刚好够运行 HelloWorld
|
2月前
|
安全 Java 程序员
阿里开发手册 嵩山版-编程规约 (四)OOP规约-Java程序员必看知识点!!!
《阿里开发手册 嵩山版》的OOP规约部分强调了面向对象编程的最佳实践,包括正确使用静态方法、覆写方法的注解、可变参数的使用、接口的稳定性、equals和compareTo方法的使用、BigDecimal的正确比较、包装类与基本数据类型选择、POJO类的属性和方法设计等,以提升代码的质量和维护性。
|
2月前
|
设计模式 前端开发 Java
Spring,作为Java程序员的你能想到什么呢?
该文章主要介绍了Spring框架对于Java程序员的意义,包括Spring框架的一些核心能力和为什么它是如此重要。
|
4月前
|
IDE Java 程序员
JAVA注解大揭秘:为何程序员都爱它如命?
【6月更文挑战第29天】Java注解是元数据机制,用于在代码中嵌入信息供编译器、IDE和工具使用。它们以`@`标识,可用于类、方法等,用于编译时检查、代码生成(如Lombok的`@Getter`、`@Setter`)、框架集成(如Spring的`@Autowired`)。程序员喜欢注解因其简洁性、可读性和可扩展性,能减少冗余代码并增强代码的可理解性。
58 15
|
4月前
|
JSON Java fastjson
老程序员分享:java对象转json
老程序员分享:java对象转json
162 3
|
4月前
|
机器学习/深度学习 Java 关系型数据库
程序员必知:关于高淇JAVA中SORM总结学习笔记详细个人解释
程序员必知:关于高淇JAVA中SORM总结学习笔记详细个人解释
37 2