年底了,如何准备 Java 初级和高级的技术面试?

Java程序员面试实战方案 通过以上方案的实施,你可以全面提升自己的面试能力和竞争力,为获得心仪的Java程序员职位做好充分准备。 阅读详情

朋友最近几年一直在做java后端方面的技术面试官,而在最近两周,又密集了面试了一些java初级和高级开发的候选人,在面试过程中,我自认为比较慎重,遇到问题回答不好的候选人,我总会再三从不同方面提问,只有当反复确认能力不行才会下结论。

相反,如果候选人给我的印象不错,我也会从多个角度来衡量,以免招进会说但不会干活的“大忽悠”。

其实倒也不是我故意要为难候选人,毕竟入职后就是同事,但面试官的职责使然,而且,如果资深的面试官一般也这样。

写到这里,恐怕会吓到一些想要面试的朋友,能力强和能力弱都会被多问,那怎么办?

这就是本文将要讲到的主题:如何准备Java初级和高级的技术面试。

一. 换位思考下,如果你是面试官,你会怎么做

  1. 只能通过简历和面试来衡量,别无他法。如果某位大牛确认能力很行,但面试时无法充分地自证能力,那对不起了,过不了,现实就这样。

  2. 如果面试官由于能力不行,招进来一个大忽悠,那估计会被领导骂。而且再也不会被让面试了,给领导的印象就不好了。所以不能评主观印象,而是会有些客观标准,具体而言,就是从多个方面问些题目,答好答坏就看候选人的。

在这里插入图片描述

其实一些题目都差不多,但不同能力的面试官问问题的切入点和渐进程度会不同,而且有经验的面试官会挖掘候选人的优势,并能从候选人的说辞中判断候选人是真懂还是忽悠。

二. 总体上说下准备面试的几个方面点

记得之前考政治,某个大题10分,分5个点,每个点的标准答案不多,也就一两句话。比较取巧的做法是,涵盖点要全,每个点无需多说,但要说到点子上。相反,如果在某个点做得再多,其它点没覆盖到,只能拿这个点的分。

同理,在面试时,应当综合准备 java Core,数据库,框架,分布式等方面的题目。根据我面试的结果,我发现不少候选人走了弯路,他们或者干脆不准备,准备时可能方法不到位,单准备一个方面。比如只准备了算法题,在这方面回答很好,但其它方面就一无所知了。

所以说,没有所谓的一定能成功的面试秘籍,但有可以帮助提升成功率的准备方法。

切记,面试前一定得准备,否则成功的可能性很低,准备时,得综合看各方面的点。至于每个点要到什么程度,后文会讲到。

三. 架构方面需要准备的点

初级开发而言,需要让面试官感觉出如下的要点。

  1. 熟悉SSM架构,至少在项目里做过。

这个的说法是,介绍项目时,用一个业务流程来说spring mvc如何做的。

  1. 知道Spring MVC中的细节,比如@Autowired的用法,如何把url映射到Controller上,ModelAndView对象返回的方式等。

  2. 最好结合项目的用法,说下你是怎么用AOP,拦截器的,比如说可以通过拦截器拦截非法请求,怎么用 AOP输出日志等。

  3. 关于ORM方面,不限用过哪种,但得知道一对一,一多多,多对多等的用法,以及cascade和inverse的用法。

  4. 最好知道声明式事务的做法。

如果你要应聘高级开发,那在上述基础上,最好了解如下的知识点:

Spring Bean的周期

最好能通过阅读源代码,说下IOC,AOP以及Spring MVC的工作流程

最好能结合反射,说下IOC等的实现原理

Spring Boot和Spring Cloud的一些知识点

四. 数据库方面需要准备的点

不少候选人会看很多SQL的技巧,比如select该怎么写,insert又该怎么写,但仅限于此,不会再准备其它的。

这样就很吃亏,因为面试官会认为,哪怕是初级开发,SQL语句也该会写,所以这块不会多问,而会问如下方面的问题。

  1. 索引怎么建的,怎么用的?比如我建好了一个索引,在where 语句里写 name like '123%'会不会走索引,怎么情况下不该建索引,哪些语句不会走索引。

  2. 除了索引之外,你有过哪些SQL优化方面的经验,比如分库分表,或通过执行计划查看SQL的优化点。这最好是能结合你做的项目实际来讲。

这里,我面试下来,大概有70%的候选人只知道基本SQL的写法,所以哪怕你是只有理论经验,会说一些优化点,也是非常有利的。

这块对于高级开发而言,更得了解优化方面的技能。

五. Java Core方面需要准备的点

这块是基础,其实很多问的问题,候选人一定会在项目里用到,但很少能说好说全。

这块主要会从集合,多线程,异常处理流程以及JVM虚拟机这些方面来问。

集合方面:

  1. hashcode有没有重写过?在什么场景下需要重写。如果可以,结合hash表的算法,说下hashmap的实现原理。

对于高级开发而言,最好通过ConcurrentHashMap来说明下并发方面的底层实现代码。

  1. ArrayList,LinkedList的差别,比如一个基于数组,一个基于链表,它们均是线程不安全的,ArrayList的扩容做法等。

对于高级而言,最好看下底层的代码。

  1. Set如何实现防重的,比如TreeSet和HashSet等。

  2. Collection的一些方法,比如比较方法,包装成线程安全的方法等。

  3. 可能有些面试官会问,如何通过ArrayList实现队列或堆栈,这个可以准备下。

多线程方面,其实在项目里不怎么会用到,但会问如下的问题:

  1. synchronized和可重入锁的差别,然后可能会顺便问下信号量等防并发的机制。

  2. 在线程里该如何返回值,其实就是callable runnable 区别。

  3. 一定得通过ThreadLocal或volatile关键字,来说明线程的内存模型。

  4. 线程池方面,会用,了解些常用参数

线程方面,可能问得比较多的就是并发机制,如果是高级开发,可能会问得深些。

虚拟机方面

  1. 结构图和流程可以大致说下。

  2. 一定得了解针对堆的垃圾回收机制,具体而言,可以画个图,说下年轻代年老代等。

  3. 说下垃圾回收的流程,然后针对性地说下如何在代码中优化内存性能。

  4. 最好说下如果出现了OOM异常,该怎么排查?如何看Dump文件。

  5. GC的一些概念,比如强弱软引用,finalize方法等,这些可以准备下。 在Java技术栈微信公众号后台回复:Java,可以阅读Java核心技术知识点。

六. 算法,设计模式等,其实是虚的

这块好准备,不过话说哪怕这些没回答好,但能证明有相关技能的项目经验,一般也会让过。

不过在这块,不少候选人就本末倒置了,比如就准备算法,设计模式,刚才提到的框架,数据库和Java Core方面就不准备了。这样很吃亏,就好比考政治只复习了一个点,其它一点也不准备。

七. 我面试的感受&听到哪类回答就能证明候选人比较资深

  1. 大多数的候选人(大概7成)直接就来了,不做任何准备。要知道,面试和项目其实有些脱节,哪怕项目做得再好,不做准备照样通不过,只要我确认过这类人确实无法达标,我拒掉他们没任何心理负担,谁让他们不准备?

  2. 还有些候选人态度很好,明显准备过,但没准备到位,比如像刚才所说,只准备了算法,或者在Java Core方面,只看了集合方面的面试题。对于这些同学,哪怕是过了,我也会感到惋惜,毕竟如果面试好些的话,工资也能更高些,至于哪些过不了的,我敢说,如果他们准备过,估计就不是这个结果了。

其实我也知道,人无完人,哪怕我自己去面试,也不可能面面俱到,所以,我不会要求候选人什么问题都能回答出,甚至大多答错也没关系,只要能证明自己的能力即可通过面试。

我也和不少面试官交流过,根据我们的经验,如果候选人能说出如下的知识点,即能证明他在这个领域比较资深了,在这块,我可能就不会过多地问问题了。

架构方面

  1. 能证明自己可以干活(这不难),同时能结合底层代码说出IOC,AOP或Spring MVC的流程,只要能说出一个即可。或者能说出拦截器,Controller等的高级用法。

  2. 能证明自己有Spring Boot或Spring Cloud的经验,比如能说出些Spring Cloud组件的用法。

  3. 如果能证明自己有分布式开发的经验,那最好了,其实这不难证明,比如能说出服务的包是放在多台机器上(大多数公司其实都这样),而且能说出如何部署,如何通过nginx等做到负载均衡。

数据库方面,其实讲清楚一个问题即可:如何进行SQL调优,比如通过索引,看执行计划即可,如果有其它的优化点,说清楚即可。

Java Core方面,这里给出些诀窍:

  1. 能结合ConcurrentHashMap的源代码,说出final,volatile,transient的用法,以及在其中如何用Lock对象防止写并发。

  2. 结合一个项目实际,说下设计模式的实践。

  3. 多线程方面,能说出Lock或volatile等高级知识点的用法。

  4. 这块最取巧:说下GC的流程,以及如何通过日志和Dump文件排查OOM异常,如果再高级些的话,说下如何在代码中优化内存代码。

诀窍点归结成一个:能结合源代码或项目实际,说出些比较资深的问题。在java技术栈微信公众号后台回复:多线程,可以阅读Java多线程技术文章。

八. 本文的侧重点

本文的侧重点是:

面试一定得准备 (重要的话说三遍,这里已经超过3遍了)

”我自己是一名从事了十余年的后端的老程序员,辞职后目前在做讲师,近期我花了一个月整理了一份最适合2018年学习的JAVA干货(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)从事后端的小伙伴们都可以来了解一下的,这里是程序员秘密聚集地,各位还在架构师的道路上挣扎的小伙伴们速来。“
加QQ群:585550789(名额有限哦!)

Android高级工程师BAT面试题及知识点整理大全(Java基础+Android) 去年年底我从一家小公司辞职,今年二月份投第一份简历,到十月底过去了整整八个个月。感谢八个月来身边的同学,我的朋友,亲人等对我的鼓励与支持,同时也感谢腾讯课堂,没有你们,我很难坚持到现在。 三月很惨淡,百度不招Android,腾讯没给面试机会,阿里一面挂,头条两次一面挂,一共投了二三十家,收到的面试通知寥寥无几,甚至没有哪一家能进入二面,整个人真的很难受。 但是,生活还是要继续前行,工作还是要继续找... 阅读详情

相关推荐

2020阿里java面试笔试总结 (含面试题解析)

本人5年开发经验、19年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴、今日头条、滴滴等公司offer,岗位是Java后端开发. 因为发展原因最终选择去了阿里,入职一年时间了,也成为了面试官,之前面试了很多家公司,感觉大部分公司考察的点都差不多,趁空闲时间,将自己的心得记下来. 希望能给正在找或者准备找工作的朋友提供一点帮助。 下面提的问题可以看下你自己是否能回答出来,是否做好准备了,当然面试题准备是一方面,你本身的技能掌握是一方面,本身技能不过硬也会被刷下来.   下面的图是进阶体系图可以参考下,还有

it小旭博客 1745

如何准备Java初级和高级的技术面试


 
 
 
 
 
 
 本人最近几年一直在做java后端方面的技术面试官,而在最近两周,又密集了面试了一些java初级和高级...

Java团长 2922

【大数据面试】--2019年面试和笔试题目汇总

一、前言 经过一段时间的面试和笔试,已经彻底快让鄙人失去了信心!年底了,找工作真难!但是这也对个人将来的规划和学习工作有了一定的提示。下面将把个人算是面经吧,分享出来,希望对各位有帮助。 二、思考 每次进入一家公司,即要做好离开的准备! -- 因为公司不是你的家 一定要建立起自己的知识库,必须频繁循环下面的过程:获取、应用、更新和存储! -- 与时俱...

欢迎来到我的博客,一起探索代码里的世界! 1万+

Java面试技巧分享

Java 开发者面试可能是一段艰苦的旅程,但不用担心!在这篇文章中,我将会分享一些实用的 Java 面试技巧,以帮助你在面试前、面试中和面试后表现出色。一、面试准备阶段1.1 学习基础知识【学习资料】在准备 Java 面试时,首先要掌握 Java 的基础知识。其中包括:Java 语言基础(变量、运算符、流程控制、方法、类和接口等)Java 集合框架Java 异常处理Java I/OJava 多线程和并发Java 网络编程Java 虚拟机Java 性能优化。

xsgnzb的专栏 1157

Unity2D像素刀光实现:粒子方向控制与像素级渲染规范

像素风游戏中的刀光特效并非普通粒子动画,而是需严格遵循像素艺术原理的视觉暂留模拟。其核心在于将‘瞬时切割感’转化为程序可执行的渲染逻辑:通过禁用纹理滤波保障1:1像素锐度,绑定刀锋向量控制粒子运动方向,限定≤0.15秒生命周期匹配人眼暂留阈值,并采用Stretched Billboard实现动态拉伸拖影。该方案兼顾美术语义(如直劈、横扫、突刺)与工程约束(Sorting Layer分层、对象池复用、单粒子GPU优化),广泛适用于Unity2D平台的动作反馈系统,尤其适配《空洞骑士》《死亡细胞》类高节奏像素R

weixin_32390647的博客 286

从零开始:用Neo4j构建你的第一个知识图谱(附完整代码示例)

本文提供了一份从零开始的Neo4j知识图谱构建实战指南。通过一个“经典科幻电影宇宙”的具体案例,手把手教你安装环境、设计图谱模式,并使用Cypher查询语言完成节点与关系的创建、数据查询及可视化,帮助你快速掌握自下而上构建知识图谱的核心技能。

weixin_29053073的博客 475

如何系统性地准备Java高级工程师的面试?

掌握分布式系统核心问题的解决方案,包括分布式锁(Redis/Zookeeper实现)、分布式事务(Seata/TCC模式)、服务熔断降级(Hystrix/Sentinel)。保持对技术前沿的关注,包括云原生技术栈(K8s/Service Mesh)、新锐框架(Spring Cloud Alibaba)的演进趋势。但需注意避免泛泛而谈,每个技术点都应准备至少两个层次的深入追问应答方案。录制模拟面试过程进行复盘分析,重点关注技术表达的清晰度、问题分析的系统性以及编码过程的规范性,针对薄弱环节进行专项突破。

kejhadma8481ocu的博客 241

基于gm/id方法的折叠式共源共栅放大器设计实践

本文详细介绍了基于gm/id设计方法进行折叠式共源共栅放大器设计的完整流程。该方法通过确定晶体管的跨导效率(gm/id)作为核心设计参数,将复杂的放大器设计转化为有明确路径的优化问题。文章以设计一个增益80dB、带宽1GHz的两级放大器为例,逐步拆解了从指标分解、关键晶体管工作点选取、到实战仿真与微调的全过程,特别强调了第二级设计对稳定性的影响以及相位裕度的调试技巧。

w8x9y0z1的博客 417

面渣逆袭必看Java中高级面试指南,Github标星4.3k+

比如对集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计。因为这些对互联网的企业是绝对重要的。第二你需要有全面的互联网主流技术相关知识从底层说起,你起码得深入了解mysql,redis,mongodb,nginx,tomcat,rpc,jms等方面的知识。第三就是编程能力,编程思想,算法能力,架构能力首先排序和查询的基本算法得会,编程思想是必须的,问你个AOP和IOC你起码的清清楚楚,设计模式不说每种都用过,但也能了解个几种吧。

公众号:该用户快成仙了 226

软件工程:数据字典

数据字典

永远怀着至诚之心拥抱世界 4280

新手避坑指南:用COMSOL Multiphysics仿真气体放电(汤逊vs.流注)

本文详细介绍了使用COMSOL Multiphysics仿真气体放电的实战指南,涵盖汤逊理论和流注模型的实现方法。通过对比两种放电模型的关键参数和物理场配置,帮助新手避免常见错误,准确预测气体击穿过程。文章还提供了工程应用案例,如高压绝缘子设计优化,展示了仿真技术在电力设备绝缘设计中的实际价值。

weixin_28716181的博客 478

年底了,整理了一份程序员面试必看的文章合集

本系列文章整合了本号发表和转载过的,有关技术招聘干货、笔试面试经验和技巧、简历、招聘等方面的精品文章,希望对想要找工作,以及正在找工作的你,能够有所帮助。原创面试干货文章校招季到来,你可能需要这一份求职作战计划!记一次面试腾讯的奇葩经历阿里巴巴实习生招聘 不完全指南如何修改个人简历?一些过来人的经验应聘腾讯,面试官和我聊了一个小时的人生看过太多大厂面试题,其实考的无非是这 3 点能力简历上的项目经...

Java技术江湖 7068

GEE:基于MODIS数据计算NDVI时间序列,并使用Savatsky-Golay(SG)滤波器对其进行平滑处理

优快云@_养乐多_本文将介绍如何在 Google Earth Engine (GEE) 平台中,使用 MODIS 数据计算 NDVI 时间序列,并对该数据集应用 Savitzky-Golay 滤波器,得到了一个新的平滑后的数据集。Savitzky-Golay 滤波器可以有效地去除信号中的噪声,并平滑信号的变化。该方法可以扩展到基于 MODIS 数据计算的任何指数或者波段。

养乐多的博客 1427

技术面试感觉什么都会,面试官一问回答不上来怎么办?

又到了一年金三银四,回想到很多年前我刚参加工作时的面试经历,那时都是呆呆地等着面试官问问题,被问到一些自己并不熟悉的问题时要不就是思考半天也切不中要点,要不就只能无奈地回答并不清楚了。其实不管是经验不足的初级开发,还是面临更高要求的资深开发,在面试上都会有一样的困扰:如何在掌握的知识有限的情况下,完成好一场高质量的面试呢?本文最适合以下几种情况的同学参考:知识面有限的初学者希望首次加入大公司的开发...

weixin_33827965的博客 4435

9.23华为OD机试真题 新系统 - 小菊的寻宝之旅 (Java/Py/C/C++/Js/Go)

9.23华为OD机试真题 新系统 - 小菊的寻宝之旅 (Java/Py/C/C++/Js/Go)

算法大师! 1021

Python 爬虫实战:Steam 游戏数据爬取与游戏市场分析

本文介绍了一个基于Python的Steam游戏数据分析项目。通过爬取Steam公开API和游戏详情页,获取游戏列表、价格、评价、标签等数据,结合SteamSpy统计销量和在线人数。项目使用requests、BeautifulSoup4进行数据采集,pandas处理数据,pyecharts和seaborn进行可视化。核心步骤包括:1)获取全量游戏列表并过滤;2)异步请求游戏详情处理限速;3)提取关键字段如价格、评分、标签;4)多维分析价格分布、标签热度等。技术栈涵盖API请求、HTML解析、数据存储与可视化,

u014481728的博客 309

干货,别再浪费时间到处找了,各大面试题和答案都在这里

又到一年跳槽季,课下不准备,面试徒伤悲。 本文汇总了常见面试题及面试技巧,让百忙中的程序员,少花精力乱找资料,希望对你有帮助。 一、面试题及答案 1、Java面试题阶段汇总 2、史上最全69道Spring面试题和答案 3、史上最全 40 道 Dubbo 面试题及答案 4、紧急整理了 20 道 Spring Boot 面试题 5、Spring Cloud面试题 5、史上最全Jav...

勇往直前的专栏 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

年底Java行情分析:岗位变化与面试考察新趋势

Java作为企业级应用开发的主流语言,其生态体系中的动态代理、泛型与反射等机制,是理解Spring等框架底层原理的关键。动态代理通过拦截方法调用实现AOP,而数据一致性则是分布式系统设计中的核心难题,涉及缓存、数据库与消息队列的协同。在实际业务中,数据一致性直接影响系统的正确性与可用性。当前技术招聘对候选人的评估已从简单的八股记忆转向实战能力,特别是对源码理解、场景化问题解决和项目深挖的考察。本文结合年底市场变化,解析Java岗位的真实分布、面试重点与简历优化策略,为求职者提供可落地的准备方向。

weixin_28740299的博客 294

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

外包Java后端开发三年,年底跳槽两个月如何应付面试?

前言 以java面试为例,每一年的重点都是不一样的,招聘要求中可能出现你没有使用过的技术, 如:RPC、springboot、docker等。如果,2个月后要去面试,你心仪的公司,招聘要求上出现这样的你没有用过的技术,都不知道面试官会问这个技术的哪些问题。每年新出现的技术很多,但大部分是属于针对特定应用领域的编程框架。比如十几年前的各类Web编程框架,十年前的中间件框架,最近几年的深度学习框架等等。要快速掌握一个技术,需要学习的内容分为领域知识和框架两部分,并在此基础上要做一些实例来练习。领域知识是针对这

SQY0809的博客 7084

2019年底新出炉的Android高级面试记录贴~

前言最近有个朋友开始偷偷投简历了。他与老东家的合同快要到期,想知道自己的斤两,续签合同也好有个底,顺便悄悄看看新的工作机会。虽然市场环境不好,但我们身在涨工资靠跳槽的行业...

这个时代,作为程序员可能要学习小程序 428

年底了,该跳槽了,全套高级Java面试题及答案整理~

又到年底了,又是一轮跳槽季 城外的人想进去,城里的人想出来 为什么离职? 马云说过,要么工资低,要么受了委屈 我想大多数人离职是这个原因 出来混的,跳槽也都是为了更好的生活 干技术的,工资都是跳出来的 跳得高低,关键看你有多少实力 如何提升硬实力? 我们为你准备了以下面试题 史上最全阿里巴巴高级Java面试题 史上最全Java多线程

Java技术栈,分享最主流的Java技术 3380

阿里P8面试官让你吃透这份10W字java面试题,准备一下明年上岸java高级岗,你如何准备?

2023是最不平凡的一年,可能找工作的程序员在前半年感触不是很深,尤其是从9月份之后,找工作是越来越难了,投出去的简历都是已读不回。其实,伴随着互联网行业寒冬的到来,各大企业都不敢大肆招聘,都是选择收缩发展,加上程序员内部越来越卷,要求越来越高了,要想在IT行业继续发展进阶拿高薪的话,提升自己是必不可少的。现在这个时刻更是到了年底,找工作只会更难,所以,咱们程序员要做的就是进行一个面试+技术的一个储备,准备明年金三银四的时候,好好拼一把,把握住这个大好机会,绝对不容错过。

程序员高级码农的博客 538

银行技术岗位招聘面试题准备

摘要:本文系统梳理了银行技术岗位面试准备要点,重点涵盖Java核心技术、数据库优化、区块链架构及隐私计算等专业知识。针对实习项目经验,详细分析了区块链课题管理、BaaS平台开发等技术实现细节与业务价值。同时提供面试策略建议,强调技术原理与银行业务场景的结合,以及故障排查、性能优化等实战能力的展示。最后指出需特别关注银行系统特有的安全性、稳定性要求及金融合规性考量,并建议深入了解目标银行的金融科技布局。全文约150字。

目前专注区块链相关技术的学习与分享 1102
上一篇: 13个最热开源微服务 Java 框架
下一篇: 解读 Java 并发队列 BlockingQueue
java1856905
博客等级 码龄8年 100粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值