Java初级开发0608面试

简介: Java初级开发0608面试

聊聊SpringBoot和传统的SSM的区别?

  • SpringBoot是Spring的扩展,在Spring的基础上,简化了传统的SSM开发繁琐的配置;
  • 在部署上,SpringBoot内置了Tomcat,可以直接将项目打包成可执行的jar/war。

说说你了解的Docker?

Docker是一个容器,就像是集装箱,将软件系统运行所需的环境如jdk、MySQL、消息队列等等装起来,这样就像是搬运货物一样,软件开发所需的环境就能在不同的硬件环境,如开发的电脑、测试集群、生产环境之间迁移,再也不用担心测试与正式发布时环境及依赖关系的差异所带来的问题。

生产环境Docker一般怎么用?单体吗?

一般使用k8s搭建集群。

说说你现在做的项目的业务?

略……

说说你们项目中MySQL、MongoDB、Redis的应用场景?

  • MySQL用于存储业务数据;
  • MongoDB用于存储文件;
  • Redis作为缓存。

详细说说在你的项目中Redis的应用场景?

  • 用作缓存
  • 与前置/中间库库数据交换时临时存储数据

你们的Redis存储的时候对象序列化吗?

需要序列化。

你们的数据是以什么形式存进Redis的?

将数据存进Redis使用了Spring Data Redis的RedisTemplate。序列化器采用的是StringRedisSerializer,所以以字符串的形式存储Java对象

你们公司是怎么做负载均衡的?

采用Nginx进行负载均衡。

聊聊RocketMQ的应用场景?

  • 异步解耦
  • 分布式事务的数据一致性
  • 消息的顺序收发
    详见参考【3】。

为什么短信发送考虑要用RocketMQ?

用户有一个待办任务,需要发送短信提醒。传统的做法有两种 1.串行的方式;2.并行方式。

(1)串行方式:将提醒信息写入数据库成功后,再发送提醒短信。

(2)并行方式:将提醒信息写入数据库的同时,发送提醒短信。

并行的方式可以提高处理的时间。

说说Tomcat的作用?为什么要用Tomcat?用户是怎么访问到你的应用的?

通俗点说他是jsp网站的服务器之一,就像asp网站要用到微软的IIS服务器,php网站用apache服务器一样,因为你的jsp动态网站使用脚本语言等写的,需要有服务器来解释你的语言吧,服务器就是这个功能。如果你的网页是纯html的,浏览器就可以直接解释查看效果,但是你的网页一但是.jsp  .asp .php 等的动态网页时浏览器自己就无法解释了,需要上面说到的服务器。tomcat便可以解释jsp等java编写的网站。

聊聊多线程?

先说一说进程:进程可以简单的理解为一个可以独立运行的程序单位,它是线程的集合,进程就是有一个或多个线程构成的。而线程是进程中的实际运行单位,是操作系统进行运算调度的最小单位。可理解为线程是进程中的一个最小运行单元。

那么多线程就很容易理解:多线程就是指一个进程中同时有多个线程正在执行。

为什么要在项目中使用多线程?

于我的理解:使用多线程最主要的原因是提高CPU的利用效率。

现在CPU基本都是多核的,如果你只用单线程,那就是只用到了一个核心,其他的核心就相当于空闲在那里了。

厕所的坑位有5个,如果只用一个坑位,那不是很亏?比如现在我有5个人要上厕所。

在单线程的时候:进去一个人解决要10分钟,然后后面的人都得等一个坑位。那总的时间就要花费50分钟。

在多线程的时候,进去一个人要解决10分钟,然后后面的人发现还有别的坑位,就去别的坑位了,不是傻瓜地等一个坑位。

我们可以把「等坑位」看作是IO操作,众所周知IO操作相对于CPU而言是非常慢的,CPU等待IO那段时间是空闲的。如果我们需要做类似IO这种慢的操作,可以开多个线程出来,尽量不要让CPU空闲下来,提高系统的资源利用率。

说白了,我们就是在「压榨」CPU的资源。本来就有的资源,如果有需要,我们就应当好好利用。

说说创建线程的方式?

三种方式:

  • 继承 Thread 类创建线程类
  • 实现Runnable接口创建线程类
  • 使用 Callable 和 Future 创建线程

线程一般通过什么方式管理?

Java提供了线程池可以很好地提高性能, 尤其是当程序中需要创建大量生存期很短暂的线程时, 更应该考虑使用线程池。

与数据库连接池类似的是, 线程池在系统启动时即创建大量空闲的线程, 程序将一个 Runnable 对象或 Callable  对象传给线程池, 线程池就会启动一个空闲的线程来执行它们的 run()或 call()方法, 当 run()或 call()方法执行结束后,  该线程并不会死亡, 而是再次返回线程池中成为空闲状态, 等待执行下一个Runnable 对象的 run()或 call()方法。

从 Java 5 开始, Java 内建支持线程池。 Java 5新增了一个 Executors 工厂类来产生线程池。

使用线程池来执行线程任务的步骤如下:

  • 调用 Executors 类的静态工厂方法创建一个 ExecutorService 对象, 该对象代表一个线程池。
  • 创建 Runnable 实现类或 Callable 实现类的实例, 作为线程执行任务。
  • 调用 ExecutorService 对象的 submit()方法来提交 Runnable 实例或 Callable实例。
  • 当不想提交任何任务时, 调用 ExecutorService 对象的 shutdown()方法来关闭线程池。
    // 创建一个具有固定线程数(6)的线程池
    ExecutorService pool = Executors.newFixedThreadPool(6);
    // 使用Lambda表达式创建Runnable对象
    Runnable target = () -> {
      for (int i = 0; i < 100 ; i++ )
      {
        System.out.println(Thread.currentThread().getName()
          + "的i值为:" + i);
      }
    };
    // 向线程池中提交两个线程
    pool.submit(target);
    pool.submit(target);
    // 关闭线程池
    pool.shutdown();


目录
相关文章
|
2月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
3月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
5月前
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
486 0
|
5月前
|
安全 Java 领域建模
Java 17 探秘:不容错过的现代开发利器
Java 17 探秘:不容错过的现代开发利器
425 0
|
3月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
5月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
260 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
3月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
151 0
|
4月前
|
JavaScript 安全 前端开发
Java开发:最新技术驱动的病人挂号系统实操指南与全流程操作技巧汇总
本文介绍基于Spring Boot 3.x、Vue 3等最新技术构建现代化病人挂号系统,涵盖技术选型、核心功能实现与部署方案,助力开发者快速搭建高效、安全的医疗挂号平台。
258 3
|
4月前
|
安全 Java 数据库
Java 项目实战病人挂号系统网站设计开发步骤及核心功能实现指南
本文介绍了基于Java的病人挂号系统网站的技术方案与应用实例,涵盖SSM与Spring Boot框架选型、数据库设计、功能模块划分及安全机制实现。系统支持患者在线注册、登录、挂号与预约,管理员可进行医院信息与排班管理。通过实际案例展示系统开发流程与核心代码实现,为Java Web医疗项目开发提供参考。
250 2