news 2026/9/4 22:26:04

Java面试经典10题(66-75)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java面试经典10题(66-75)

前言

本文整理了 Java 面试中常见的 10 道高频题目,涵盖线程状态、并发锁、序列化、I/O 流、文件操作、网络编程、XML 解析以及 JDBC 数据库操作等核心知识点。每道题都给出了详细的解答思路和可直接运行的代码示例,帮助你在面试前快速回顾和巩固 Java 基础。

建议按照题目顺序依次阅读,先独立思考再看答案,最后动手运行代码验证,这样能加深对知识点的理解。如果你正在准备 Java 后端岗位的面试,这份题目清单值得反复研读。

目录

  • 66、线程的基本状态以及状态之间的关系?
  • 67、简述 synchronized 和 java.util.concurrent.locks.Lock 的异同?
  • 68、Java 中如何实现序列化,有什么意义?
  • 69、Java 中有几种类型的流?
  • 70、写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。
  • 71、如何用 Java 代码列出一个目录下所有的文件?
  • 72、用 Java 的套接字编程实现一个多线程的回显(echo)服务器。
  • 73、XML 文档定义有几种形式?它们之间有何本质区别?解析 XML 文档有哪几种方式?
  • 74、你在项目中哪些地方用到了 XML?
  • 75、阐述 JDBC 操作数据库的步骤。

66、线程的基本状态以及状态之间的关系?

答:


说明:其中Running表示运行状态,Runnable表示就绪状态(万事俱备,只欠CPU),Blocked表示阻塞状态,阻塞状态又有多种情况,可能是因为调用wait()方法进入等待池,也可能是执行同步方法或同步代码块进入等锁池,或者是调用了sleep()方法或join()方法等待休眠或其他线程结束,或是因为发生了I/O中断。

67、简述 synchronized 和 java.util.concurrent.locks.Lock 的异同?

答:Lock 是 Java 5 以后引入的新的 API,和关键字 synchronized 相比主要相同点:Lock 能完成 synchronized 所实现的所有功能;主要不同点:Lock 有比 synchronized 更精确的线程语义和更好的性能,而且不强制性的要求一定要获得锁。synchronized 会自动释放锁,而 Lock 一定要求程序员手工释放,并且最好在 finally 块中释放(这是释放外部资源的最好的地方)。

68、Java 中如何实现序列化,有什么意义?

答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决对象流读写操作时可能引发的问题(如果不进行序列化可能会存在数据乱序的问题)。

要实现序列化,需要让一个类实现 Serializable 接口,该接口是一个标识性接口,标注该类对象是可被序列化的,然后使用一个输出流来构造一个对象输出流并通过 writeObject(Object) 方法就可以将实现对象写出(即保存其状态);如果需要反序列化则可以用一个输入流建立对象输入流,然后通过 readObject 方法从流中读取对象。序列化除了能够实现对象的持久化之外,还能够用于对象的深度克隆(可以参考第 29 题)。

69、Java 中有几种类型的流?

答:字节流和字符流。字节流继承于 InputStream、OutputStream,字符流继承于 Reader、Writer。在 java.io 包中还有许多其他的流,主要是为了提高性能和使用方便。关于 Java 的 I/O 需要注意的有两点:一是两种对称性(输入和输出的对称性,字节和字符的对称性);二是两种设计模式(适配器模式和装潢模式)。另外 Java 中的流不同于 C# 的是它只有一个维度一个方向。

面试题 - 编程实现文件拷贝。(这个题目在笔试的时候经常出现,下面的代码给出了两种实现方案)

importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.nio.ByteBuffer;importjava.nio.channels.FileChannel;publicfinalclassMyUtil{privateMyUtil(){thrownewAssertionError();}publicstaticvoidfileCopy(Stringsource,Stringtarget)throwsIOException{try(InputStreamin=newFileInputStream(source)){try(OutputStreamout=newFileOutputStream(target)){byte[]buffer=newbyte[4096];intbytesToRead;while((bytesToRead=in.read(buffer))!=-1){out.write(buffer,0,bytesToRead);}}}}publicstaticvoidfileCopyNIO(Stringsource,Stringtarget)throwsIOException{try(FileInputStreamin=newFileInputStream(source)){try(FileOutputStreamout=newFileOutputStream(target)){FileChannelinChannel=in.getChannel();FileChanneloutChannel=out.getChannel();ByteBufferbuffer=ByteBuffer.allocate(4096);while(inChannel.read(buffer)!=-1){buffer.flip();outChannel.write(buffer);buffer.clear();}}}}}

**注意:**上面用到Java 7的TWR,使用TWR后可以不用在finally中释放外部资源 ,从而让代码更加优雅。

70、写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

答:代码如下:

importjava.io.BufferedReader;importjava.io.FileReader;publicfinalclassMyUtil{// 工具类中的方法都是静态方式访问的因此将构造器私有不允许创建对象(绝对好习惯)privateMyUtil(){thrownewAssertionError();}/** * 统计给定文件中给定字符串的出现次数 * * @param filename 文件名 * @param word 字符串 * @return 字符串在文件中出现的次数 */publicstaticintcountWordInFile(Stringfilename,Stringword){intcounter=0;try(FileReaderfr=newFileReader(filename)<
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 22:24:09

医学检验科技师边轮夜班边写论文,按检测批次推进的节奏

值完夜班出完急诊报告&#xff0c;天亮了&#xff0c;论文一字没动——不少医学检验技师都深有体会。检验科的工作天然有节拍&#xff1a;标本按批次上机、过质控、审核后放行。把论文拆成与「检测批次」同频的小任务&#xff0c;就能在批次间隙、夜班空隙里慢慢成型。下文给出…

作者头像 李华
网站建设 2026/9/4 22:23:43

StreamTTT:流式视觉语言模型如何融合实时感知与长期记忆

StreamTTT 这个方向&#xff0c;核心是在流式视觉语言模型&#xff08;Streaming VLM&#xff09;里同时解决两个硬需求&#xff1a;实时感知&#xff08;Real-Time Perception&#xff09;和长期记忆&#xff08;Long-Term Memory&#xff09;。如果只看词面&#xff0c;它很像…

作者头像 李华
网站建设 2026/9/4 22:23:01

AI推理加速14倍?拆解模型提速的六种尺子与验证方法

第一次看到“GPT-5.6 Sol 被 OpenAI 加速 14 倍”这条讨论时&#xff0c;我的第一反应不是兴奋&#xff0c;而是先找尺子&#xff1a;这里的 14 倍&#xff0c;到底是在哪一层量出来的&#xff1f;在模型圈待久了会发现&#xff0c;一个“加速 N 倍”的数字&#xff0c;经常可以…

作者头像 李华
网站建设 2026/9/4 22:22:10

SettingWithCopyWarning 到底在警告什么:视图与副本的内存引用真相

SettingWithCopyWarning 到底在警告什么&#xff1a;视图与副本的内存引用真相在每一个 Python 数据分析师的成长历程中&#xff0c;控制台里最常弹出的警告&#xff0c;八成就是那串长达 5 行的红字——SettingWithCopyWarning: A value is trying to be set on a copy of a s…

作者头像 李华
网站建设 2026/9/4 22:21:45

基于Python与MongoDB的闲鱼市场数据分析实战:从数据采集到可视化洞察

简介&#xff1a;这是一套面向数据分析初学者与Python开发者的数据采集与可视化实践工具包&#xff0c;聚焦二手交易平台闲鱼的市场洞察需求&#xff0c;解决商品价格分布、地域热度、类目结构及用户评价等核心业务问题。资源共13个文件&#xff0c;含8个Python脚本&#xff08…

作者头像 李华
网站建设 2026/9/4 22:20:13

企业级 IAM 与动态访问控制策略在大模型调用链路中的实践

企业级 IAM 与动态访问控制策略在大模型调用链路中的实践当企业在内部私有化落地大语言模型&#xff08;LLM&#xff09;平台或基于 Agent 的工作流时&#xff0c;访问控制面临着严峻的范式转移挑战。在传统微服务架构中&#xff0c;每个 REST API 端点都有清晰的路径和请求动词…

作者头像 李华