博客
关于我
理解RabbitMQ中的AMQP模型,真香!
阅读量:555 次
发布时间:2019-03-09

本文共 2680 字,大约阅读时间需要 8 分钟。

Java技术面试准备

作为一名技术面试官,我在面试中收集并整理了大量的面试题目。这些题目涵盖了Java基础、多线程、Spring、Redis、MySQL、Kafka、Zookeeper等多个技术领域。希望这些内容能帮助准备面试。


Java基础

OOP基础

  • JDK 和 JRE 的区别

    JDK(Java Development Kit)是开发工具套装,包含JRE(Java Runtime Environment)和开发工具如IDE、编译器等。
    JRE是运行时环境,负责执行Java程序。

  • == vs equals()

    == 比较对象的引用地址,equals() 比较对象的值,!= 用于不等式判断。

  • hashCode() 和 equals() 的关系

    hashCode() 用于计算对象的哈希值,equals() 判断两个对象是否相等。两个对象的 hashCode() 相同并不意味着 equals() 一定为 true,但如果 equals() 为 true, hashCode() 必须相同。

  • final 的作用

    final 可以修饰类、方法或变量,分别具有不同的作用。

  • Math.round(-1.5)

    返回-1,因为round函数会将-1.5向下取整到最近的整数。

  • String 属于基础数据类型吗?

    String 不是基础数据类型,属于对象类型。

  • Java中操作字符串的类

    StringBufferStringBuilder 用于 mutable 操作,String 用于 immutable。

  • String 对比

    String str1 = "i"; String str2 = new String("i"); 两个对象不同,str1 == str2 为 false,但 str1.equals(str2) 为 true。

  • 如何反转字符串

    可以通过 new StringBuilder(str).reverse().toString()

  • String 常用方法

    length(), charAt(), substring(), replace(), toUpperCase() 等。

  • 抽象类特点

    必须声明至少一个抽象方法。

  • 抽象类和普通类的区别

    抽象类没有具体实现,普通类可以是 concrete 或 abstract。

  • 抽象类是否可以使用 final

    不能,final 类不能继承。

  • 接口和抽象类的区别

    接口中的方法没有实现,抽象类有抽象方法。

  • IO流类型

    Java IO 包括 FileInputStreamBufferedReaderPrintWriter 等。


JVM

内部结构

  • JVM组成

    包括类加载器(Class Loader)、方法区、虚拟机栈、程序计数器、值类型堆、本地方法堆等。

  • 运行时数据区

    包括虚拟机栈(method stack)、程序计数器(PC)、值类型堆(operand stack)、方法区(constant pool)、变量值表(variable value table)。

  • 堆栈区别

    堆用于对象分配,栈用于方法调用和变量存储。

  • 队列与栈

    栈先进后出,队列先进先出。

  • 双亲委派

    JVM加载类时,首先检查父类 loader,如果找不到再委派给 super loader。

  • 类加载过程

  • 加载类文件到内存。
  • 连接类,处理初始化。
  • 执行类,执行类构造器。
  • 垃圾回收算法

    标记-清除、复制算法、标记-整理。

  • 垃圾回收器

    CMS(并发标记-清除)、G1(垃圾第一)、新生代收集器。

  • jvm 调优工具

    jconsolejvisualvmgclog 等。


多线程

基础

  • 并行与并发

    并行是指程序在同一时间内执行多个任务,依赖关系较少。并发是指程序在同一时间内执行多个任务,依赖关系紧密。

  • 线程与进程

    线程是进程的子任务,进程是资源分配的单位。

  • 守护线程

    用于长时间运行的应用,释放资源或关闭应用。

  • 创建线程的方式

    new Thread(), Thread.start(), Executor 等。


Spring

核心概念

  • Spring 的优势

    解耦业务逻辑和技术实现,简化配置,提高可维护性。

  • AOP 和 IOC

    AOP(面向切面编程)用于日志、事务等横切关注点,IOC(控制反转)用于依赖注入。

  • Spring注入方式

    @Autowired、@Inject、@Component 等。

  • Bean的线程安全性

    单例 bean 线程安全, prototypes 是不线程安全的。

  • Bean作用域

    singleton、prototype、request、session、global session。

  • 自动装配方式

    XML、注解、注件检测(@Component)。


Redis

基础

  • Redis是什么

    开源键值数据库,支持高性能、持久化、分布式。

  • Redis功能

    支持字符串、列表、哈希、集合、有序集合等数据结构。

  • Redis与Memcached的区别

    Redis支持事务、持久化、复制、分布式锁等,Memcached仅为缓存层。

  • 缓存穿透解决方案

    布隆过滤器、数据库缓存层。


MySQL

SQL

  • 三范式

  • 每个关系都唯一确定主属性。
  • 非主属性不能参与多个关系。
  • 每个关系对应一行、一列。
  • 自增表问题

    假设表 id 自增,删除两个记录后重启数据库,插入新数据,id 依次递增。

  • 获取数据库版本

    执行 SHOW VARIABLES LIKE 'version%'

  • ACID

    原子性(一系列操作不可逆),一致性(事务中的操作一致),独立性(事务与其他操作无关),持久性(持久化)。


Kafka

操作

  • Kafka脱离Zookeeper

    从Kafka 0.9及以后版本支持单独运行,不再依赖Zookeeper。

  • Kafka数据保留策略

    配置 log.retention policies,例如删除超过 7 天或 10 GB 的数据。

  • Kafka性能瓶颈

    消息生产速度受broker数量和分区影响,消费速度受partition和消费者数量影响。


Zookeeper

集群

  • Zookeeper作用

    提供分布式的配置管理、命名服务、路径共享。

  • 集群部署

    可以采用单机部署、伪节点部署、成熟节点部署等。

  • Zookeeper节点类型

    主节点、副节点、读节点。

  • Zookeeper故障恢复

    集群中一个节点故障后,业务会在其他节点上继续运行。


以上是我的面试准备内容,涵盖了Java技术栈的多个方面。如果需要进一步补充或具体问题,请随时告知!

转载地址:http://fvksz.baihongyu.com/

你可能感兴趣的文章
NIO Selector实现原理
查看>>
nio 中channel和buffer的基本使用
查看>>
NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
查看>>
NI笔试——大数加法
查看>>
NLP 基于kashgari和BERT实现中文命名实体识别(NER)
查看>>
NLP:使用 SciKit Learn 的文本矢量化方法
查看>>
Nmap扫描教程之Nmap基础知识
查看>>
Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
查看>>
NMAP网络扫描工具的安装与使用
查看>>
NN&DL4.1 Deep L-layer neural network简介
查看>>
NN&DL4.3 Getting your matrix dimensions right
查看>>
NN&DL4.8 What does this have to do with the brain?
查看>>
No 'Access-Control-Allow-Origin' header is present on the requested resource.
查看>>
No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
查看>>
No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
查看>>
No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
查看>>
No mapping found for HTTP request with URI [/...] in DispatcherServlet with name ...的解决方法
查看>>
No module named cv2
查看>>
No module named tensorboard.main在安装tensorboardX的时候遇到的问题
查看>>
No module named ‘MySQLdb‘错误解决No module named ‘MySQLdb‘错误解决
查看>>