跳至主要內容
计算机网络

1. TCP三次握手原因

[TCP](计算机网络.md/#53-传输控制协议tcptransmission-control-protocol)


HeChuangJun小于 1 分钟面试面试
分库分表

1. 为什么要分库?为什么要分表?

  • 业务量剧增,磁盘容量不足,并发连接数不足,所以要分库
  • <<阿里开发手册>>单表行数超过500万行或者单表容量超过2GB。存储和查询的性能就会遇到瓶颈了

2. 什么是分库分表?

  • 数据分片,指按照某个维度将存放在单一数据库中的数据分散地存放至多个数据库或表中以达到提升性能瓶颈以及可用性的效果。数据分片的有效手段是对关系型数据库进行分库和分表

3. 如何选择分表键?


HeChuangJun大约 17 分钟面试面试
分布式

1. 什么是CAP定理?

  • CAP定理是指分布式系统中, CAP三者不可兼得
    • 一致性(Consistency):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
    • 可用性(Availability):保证每个请求不管成功或者失败都有响应。
    • 分区容忍性(Partition tolerance):分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性或可用性的服务。

2. 为什么CAP不可兼得呢?


HeChuangJun大约 27 分钟面试面试
面试

自我介绍

  • 面试官早上好,我是xxx,来自广东清远,2018年从广东药科大学制药工程专业毕业,目前有5年java开发经验,做过传统医疗项目和互联网社交项目,在项目里面使用过springboot、mybatis框架、redis分布式缓存组件,rabbitmq消息队列,mysql数据库等,在上一份工作中负责核心模块开发,参与过需求评审和数据库设计,有在linux上排查线上问题的经验。希望能加入贵公司担任java开发工程师,谢谢

  • Good morning, interviewer, My name is xxx,I come from Qingyuan,a city in Guangdong Province. I was graduated from Guangdong Pharmaceutical University in 2018, majoring in pharmaceutical engineering. l have been working as a java development engineer for 5 years, and have done traditional medical projects and Internet social projects, in which I have used springboot, mybatis framework and redis distributed cache component. rabbitmq message queue, mysql database, etc. In my last job, I was responsible for core module development, participated in requirement review and database design, and had experience in troubleshooting online problems on linux. I hope I can make a good performance today. That’s all. Thank you for giving me the chance.

  • 面试官早上好,我是xxx,广东清远人,18年广东药科大学毕业,制药工程专业,目前住在天河梅花园,是一个i人,平时喜欢看书跑步,与陌生人熟悉后就会变成e人,乐观开朗


HeChuangJun大约 28 分钟面试面试
java基础

java基础

1. 什么是 Java?特点?

  • Java 是一门面向对象的编程语言
  • 面向对象(封装,继承,多态),跨平台(一次编写,到处运行)

2. JVM、JDK、JRE区别

  • JVM:Java Virtual Machine,Java 虚拟机,Java 程序运行在 Java 虚拟机上。针对不同系统的实现(Windows,Linux,macOS)不同的 JVM,因此 Java 语言可以实现跨平台。
  • JRE: Java 运⾏时环境。包括 Java 虚拟机(JVM)和Java 类库
  • JDK: Java Development Kit,它是功能⻬全的 Java SDK(软件开发工具包)。包括了 JRE 以及编译器(javac)、Java 文档生成工具(Javadoc)、Java 调试器等开发工具。为开发者提供了开发、编译、调试 Java 程序的一整套环境。
  • JDK 包含 JRE,JRE 包含 JVM。

HeChuangJun大约 31 分钟面试面试
java集合

1. 集合继承结构

  • Collection,主要由 List、Set、Queue 组成
    • List:存储的元素有序,可重复。动态数组的 ArrayList 和封装了链表的 LinkedList;
    • Set:存储的元素无序,不可重复。HashSet 和 TreeSet;
    • Queue:队列。双端队列 ArrayDeque,以及优先级队列 PriorityQueue。
  • Map,键值对集合。HashMap。键不能重复,每个键只能对应一个值。HashMap、LinkedHashMap、TreeMap

HeChuangJun大约 26 分钟面试java
java并发

1. 并发与并行区别?

  • 并发:指多个任务在同一时间执行。这些任务在单核或多核处理器上通过进程或线程轮流地占有处理器资源来执行。
  • 并行:指多个任务在同一时刻执行。多个处理器同时执行多个任务,每个核心实际上可以在同一时间独立地执行不同的任务。
  • 串行:多个事件按顺序执行
  • 并行就是每个人对应一个阿姨,同时打饭;而并发就是一个阿姨,轮流给每个人打饭。

2. 进程和线程的区别?

  • 进程是程序运行和操作系统资源分配的基本单位,而线程是cpu调度和执行的基本单位

HeChuangJun大约 78 分钟面试面试
jvm
  • JVM,Java虚拟机,Java实现跨平台的基石。Java 程序运行的时候,编译器会将 Java 源代码(.java)编译成平台无关的 Java 字节码文件(.class),接下来对应平台的 JVM 会对字节码文件进行解释,翻译成对应平台的机器指令并运行。

2. Jvm主要组成部分及其作用?

  • 类加载器(ClassLoader):负责从文件系统、网络或其他来源加载Class文件,将Class文件中的二进制数据读入到内存中

  • 运行时数据区(Runtime Data Area)JVM 在执行 Java 程序时,需要在内存中分配空间来处理各种数据,这些内存区域主要包括方法区、堆、栈、程序计数器和本地方法栈。

  • 执行引擎(Execution Engine)负责执行class文件中包含的字节码指令,包括一个虚拟处理器,还包括即时编译器(JIT Compiler)和垃圾回收器(Garbage Collector)。

  • 本地库接口(Native Interface)调用C或C++实现的本地方法的代码返回结果

  • 各组件的作用:首先通过类加载器(ClassLoader)把Java代码转换成字节码,运行时数据区(Runtime Data Area)再把字节码加载到内存中,由特定的命令解析器执行引擎(Execution Engine),将字节码翻译成底层系统指令,再交由CPU执行,而这个过程中需要调用其他语言的本地库接口(Native Interface)来实现整个程序的功能
    jvmstructure.jpg


HeChuangJun大约 49 分钟面试java