ohmyblog

#Java 后端

经典题解析:Spring MVC 怎样把一次请求送到 Controller

一个请求到了 Controller 方法之前,究竟经过哪些步骤?如果只背 DispatcherServlet、HandlerMapping、HandlerAdapter、ViewResolver,容易误以为所有返回值最后都要渲染页面。

经典题解析:Spring Bean 从定义到可用,经历了哪些步骤

Spring 帮你创建对象,但一个 Bean 从配置出现到能够被业务使用,远不止调用一次构造器。答生命周期题,最容易出错的是把“修改定义”“创建实例”和“初始化后包装”混成同一段流程,最后说不清扩展点到底作用于谁。

经典题解析:public、protected、默认和 private 到底管到哪

“public 谁都能访问,protected 子类能访问,private 只有自己能访问。”这张口诀表能帮助入门,却很容易在一道跨包继承题上失效。Java 的访问控制不只检查有没有继承关系,还检查访问发生在哪里、对象表达式的类型是什么,以及声明所在的类型本身是否可访问。

笔试真题复盘:调用 t.run() 和 t.start() 有什么区别

先说明属性:这是一篇笔试真题复盘,题目出自本地历史笔试资料整理,与任何公司的当前招聘无关。这道题以选择题形式出现:给一段 main 方法里 t.run() 再打印字符串的代码,问输出是什么。它考的是 Java 并发里最基础也最容易想当然的一个语义陷阱。

经典题解析:final 关键字到底锁住了什么,修饰类、方法和变量各是什么语义

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。「final 有什么用」几乎每个 Java 面试都会问,多数人能背出三个位置的答案,但面试官追问「final 引用指向的对象能改吗」「final 在并发里还有什么用」时,背书就露馅了。

从栈溢出面试题延伸:JVM 内存区域全景图,每个区域怎么溢出、怎么排查

同批的面试真题解析讲了虚拟机栈这一个区域的两种溢出:容量到顶抛 StackOverflowError,扩容失败抛 OutOfMemoryError。这篇把镜头拉远:JVM 运行时到底有哪几块内存区域,每块存什么、怎么溢出、出问题从哪儿入手排查。

经典题解析:栈也会内存溢出?StackOverflowError 和 OOM 不是一回事

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。「虚拟机栈什么情况下抛 StackOverflowError,什么情况下抛 OutOfMemoryError」是 Java 面试里区分度很高的一题:很多人背过「递归太深会栈溢出」,却说不出栈和 O…

经典题解析:Java 序列化是怎么回事,为什么现在都不推荐用原生序列化

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。「Java 序列化是怎么回事,为什么不推荐用原生序列化」把三个考点捆在一起问:Serializable 机制本身、serialVersionUID 与 transient 各管什么、反序列化为什么…

经典题解析:HashSet 是怎么去重的,为什么说它背后就是一个 HashMap

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。「HashSet 是怎么去重的」表面考一个容器,实际考的是两件事:你知不知道 HashSet 根本没有自己的存储,以及你讲不讲得清 hashCode 与 equals 在去重里的分工。

经典题解析:Error 和 Exception 有什么区别,Checked 异常为什么备受争议

先说明属性:这是一篇经典题解析,题目出自本地历史面试资料,与任何公司的当前招聘无关。「Error 和 Exception 的区别」是 Java 面试的入场题,很多人背得出「Error 是系统错误、Exception 是程序异常」这一句,却说不清这条分界线为什么是 Throwabl…