- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Java网络编程高频面试题及参考答案
一、基础概念类
问题:Java中TCP和UDP的核心区别是什么?实际开发中如何选择?
答案:TCP是面向连接的可靠传输协议,通过三次握手建立连接、四次挥手断开,支持重传、流量控制和拥塞控制,适合对数据完整性要求高的场景(如文件传输、接口调用);UDP是无连接的不可靠传输,无需建立连接,传输速度快但可能丢包、乱序,适合实时性要求高的场景(如视频流、直播弹幕)。开发选择时,先判断“可靠性”和“实时性”哪个优先——需要确保数据不丢失用TCP,追求低延迟且能容忍少量丢包用UDP。
问题:什么是Socket?Java中的Socket和ServerSocket分别对应什么角色?
答案:Socket本质是“网络通信的端点”,封装了IP地址和端口号,提供了网络数据读写的接口。Java中Socket是客户端的通信对象,通过指定服务端IP和端口主动发起连接;ServerSocket是服务端的监听对象,绑定指定端口并监听客户端连接请求,调用accept()方法阻塞等待连接,连接成功后返回对应的Socket与客户端通信。简单说,ServerSocket负责“开门接客”,Socket负责“双向聊天”。
问题:HTTP和HTTPS的区别,Java中如何实现HTTPS请求?
答案:核心区别在安全性和底层协议——HTTP是明文传输,基于TCP,端口80,无加密;HTTPS是HTTP+SSL/TLS,加密传输,端口443,能防止数据窃听和篡改。Java实现HTTPS有两种方式:一是用HttpsURLConnection(URLConnection的子类),默认会验证服务器证书;二是用HttpClient(Java11+推荐),通过SSLContext配置证书相关参数。如果遇到自签名证书,需要自定义TrustManager跳过证书验证(生产环境不推荐)。
二、Socket编程实践类
问题:用Java写一个简单的TCP客户端和服务端通信示例(核心代码),并说明可能出现的问题?
答案:
可能出现的问题:①未处理IO异常(如网络中断);②阻塞式IO导致单线程无法处理多个客户端;③未关闭流和Socket导致资源泄露;④中文乱码(需指定字符集,如InputStreamReader(socket.getInputStream(),UTF-8))。
服务端核心代码:
ServerSocketserverSocket=newServerSocket(8888);
Socketsocket=serverSocket.accept();//阻塞等待客户端连接
BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream()));
PrintWriterout=newPrintWriter(socket.getOutputStream(),true);//autoFlush=true
Stringmsg=in.readLine();
System.out.println(客户端消息:+msg);
out.println(已收到:+msg);
//注意:需关闭流和Socket(实际开发用try-with-resources自动关闭)
客户端核心代码:
Socketsocket=newSocket(localhost,8888);
PrintWriterout=newPrintWriter(socket.getOutputStream(),true);
BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream()));
out.println(HelloServer);
System.out.println(服务端响应:+in.readLine());
//关闭资源
问题:如何解决TCP服务端“单线程只能处理一个客户端”的问题?常见方案有哪些?
答案:核心思路是“多线程/线程池处理并发连接”,常见方案:
方案1:每接一个客户端就创建一个新线程(弊端:客户端过多时线程爆炸,资源耗尽);
方案2:使用线程池(推荐),通过线程池复用线程,控制最大并发数,示例:
ExecutorServicethreadPool=Executors.newFixedThreadPool(10);
wh
您可能关注的文档
最近下载
- (12页PPT)美的集团QMS系统培训ROHS试验V10.pptx VIP
- 慢性阻塞性肺疾病健康教育培训课件.pptx VIP
- 工业机器人系统运维员实操试卷(技师)(试卷三).docx VIP
- (23页PPT)美的集团QMS系统培训成品抽检V11.pptx VIP
- 新教材北师大版高中数学选择性必修第一册第一章直线与圆知识点考点重点难点解题规律归纳总结.pdf VIP
- 美的集团QMS系统培训-成品巡检V1.1.ppt VIP
- 第四版(2025)国际压力性损伤溃疡预防和治疗临床指南解读.docx VIP
- 小学信息技术教案制作贺卡.doc VIP
- 《光伏渔业池塘建设通用技术规范》.pdf VIP
- 2025年供应链管理部年终总结.docx
原创力文档


文档评论(0)