Java面试知识汇总
文章平均质量分 90
为了获得心仪的工作而努力吧
程序员世杰
公众号『程序员世杰』,就职过各互联网大厂,资深码农,专注Java后端技术栈、AIGC等领域的技术分享
展开
-
快手商业化 Java后端 二面|面试官很nice
面试官很nice,在答不上来的时候会引导我去思考,并在我回答正确的时候给与充分的肯定原创 2024-07-31 09:31:03 · 506 阅读 · 0 评论 -
shopee虾皮 java后端 一面面经 整体感觉不难
shopee虾皮 Java一面面经+答案详解原创 2024-07-25 15:25:19 · 1300 阅读 · 0 评论 -
字节抖音电商 后端开发岗位 一面
延时消息的实现主要依赖于RocketMQ中的定时任务机制。消息被发送到Broker时,会先存储在一个特定的延时消息队列中。Broker会定时扫描这个队列,当消息的延时时间到了,就会把消息投递到目标消费队列中。原创 2024-07-15 21:58:02 · 722 阅读 · 0 评论 -
彻底搞懂JVM垃圾回收
一文带你彻底了解JVM垃圾回收原创 2024-07-13 12:00:03 · 827 阅读 · 0 评论 -
Java对象引用的访问方式是什么?
值传递:方法参数传入的是参数的备份,对参数的修改并不会影响本身引用传递:方法参数传入的都是参数的引用,对参数的修改会影响本身Java的参数传递是值传递还是引用传递?先说结论:Java本质上都是值传递。原创 2024-07-10 14:45:17 · 782 阅读 · 0 评论 -
【不看答案挑战,今天你刷题了吗?】LeetCode72,题目+解析+答案
每天一道LeetCode算法题,不看答案挑战!今天你刷题了吗?原创 2024-07-09 20:03:41 · 427 阅读 · 0 评论 -
JVM是如何创建一个对象的?
1. Java对象创建的流程是什么样?1. JVM执行new关键字时都有哪些操作?1. JVM在频繁创建对象时,如何保证线程安全?1. Java对象的内存布局是什么样的?1. 对象头都存储哪些数据?原创 2024-07-09 14:20:23 · 1204 阅读 · 0 评论 -
你真的了解Java内存模型JMM吗?
1. 什么是Java内存模型(JMM)? 为什么需要JMM?2. Java线程的工作内存和主内存各自的作用?3. Java缓存一致性问题?4. Java的并发编程问题?原创 2024-07-08 14:25:59 · 699 阅读 · 0 评论 -
面试官:如何打破双亲委派机制?
面试连环call:1. 双亲委派机制是什么?如何打破双亲委派机制?2. JVM都有哪些类加载器?3. 如何构造一个自定义类加载器?原创 2024-07-05 13:42:51 · 1346 阅读 · 0 评论 -
面试官:Java文件是如何被加载到内存中的?
一个类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期是怎样的?原创 2024-07-03 14:38:16 · 956 阅读 · 0 评论 -
面试官:你了解git cherry-pick吗
事情要从一次不规范的代码开发开始说起原创 2024-07-02 13:57:05 · 1079 阅读 · 0 评论 -
千万别忽视基础!十张图带你一步步理解Java内存结构!
本文笔者将为大家详解Java内存结构。原创 2024-07-01 09:20:45 · 1321 阅读 · 0 评论 -
小白也能懂的Mysql数据库索引详解
一文解释:主键索引/二级索引,聚簇索引/非聚簇索引,回表/索引覆盖,索引下推,联合索引/最左联合匹配,前缀索引,explain原创 2024-06-25 09:28:31 · 1026 阅读 · 0 评论 -
现在这个行情,又又又要开始准备面试了~~
亲爱的程序员朋友们:这些资料曾经帮助过许多有志之士顺利拿下抖音、快手、阿里等大厂的Offer,现在也希望它们能为你的面试旅程助力!关注【程序员世杰】回复【1024】惊喜等你来拿!截图关注【程序员世杰】回复【1024】惊喜等你来拿!敬请关注【程序员世杰】原创 2024-06-22 18:05:33 · 384 阅读 · 0 评论 -
2020届春招实习面经(含阿里、腾讯、网易、京东、华为、美团、快手、字节跳动)
前言:之前发表了一篇实习复习的内容:史上最全!20/21届春招/秋招 实习/校招 JAVA面试全攻略!复习回顾这一篇就够了!在这篇文章详细说了该如何去复习,也答应各位把面经整理一下,但是因为入职的事情耽搁了,现在整理出来回馈给大家!PS:楼主只收到网易、快手、华为三家offer,也不是所谓的offer收割机。只是提供一些个人经验,这个平台帮了我很多,前人栽树后人乘凉,共勉!文章目录快手(已offer)一面(60mins)二面(55mins)HR面(15mins)阿里一面腾讯一面(40mi.原创 2020-06-14 23:42:22 · 3336 阅读 · 4 评论 -
彻底搞懂数据库内连接、外连接
文章目录一、定义1、内联接2、外联接3、交叉联接二、示例一、定义1、内联接典型的联接运算,使用像 = 或 <> 之类的比较运算符。包括相等联接和自然联接。 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students 和 courses 表中学生标识号相同的所有行。2、外联接外联接可以是左向外联接、右向外联接或完整外部联接。 ...转载 2020-04-30 11:27:55 · 4211 阅读 · 0 评论 -
史上最全!20/21届春招/秋招 实习/校招 JAVA面试全攻略!复习回顾这一篇就够了!
之前写过一篇Java面试知识点汇总,由于我不断补充,现在知识点已经比较庞杂,很多人私信我,说那一篇全是知识点太过庞杂,问我有没有整合的。正好春招和秋招在即,我花费了几个月的时间,把知识点整合成不同的模块并针对不同的知识点以及结合本人自己的面试经历,整合出这篇java面试全攻略。希望对大家有所帮助!原创 2020-04-26 18:48:13 · 6303 阅读 · 2 评论 -
搞懂回溯算法思想(LeetCode46、47、980)
一、回溯介绍1.定义搜索与回溯是计算机解题中常用的算法,很多问题无法根据某种确定的计算法则来求解,可以利用搜索与回溯的技术求解。回溯是搜索算法中的一种控制策略。它的基本思想是:为了求得问题的解,先选择某一种可能情况向前探索,在探索过程中,一旦发现原来的选择是错误的,就退回一步重新选择,继续向前探索,如此反复进行,直至得到解或证明无解。如迷宫问题:进入迷宫后,先随意选择一个前进方...原创 2020-04-25 16:58:22 · 607 阅读 · 0 评论 -
IO多路复用的两种模式:水平触发和边缘触发
在 linux 的 IO 多路复用中有水平触发,边缘触发两种模式水平触发 (level-trggered)只要文件描述符关联的读内核缓冲区非空,有数据可以读取,就一直发出可读信号进行通知,当文件描述符关联的内核写缓冲区不满,有空间可以写入,就一直发出可写信号进行通知LT 模式支持阻塞和非阻塞两种方式。epoll 默认的模式是 LT。边缘触发 (edge-triggered)...原创 2020-04-20 18:49:55 · 1014 阅读 · 0 评论 -
Linux 查看文件大小 5 个常用命令
1. 前言Linux 系统有非常好用的命令,功能也非常丰富,如果你对命令行工具熟悉,可以非常高效率完成维护工具。本文主要介绍 Linux 系统中,用于查看文件大小的命令。Linux 查看文件大小 5 个常用命令2. 使用 stat 命令查看stat 命令一般用于查看文件的状态信息。stat 命令的输出信息比 ls 命令的输出信息要更详细。oucanrong@zcwyou:~/...转载 2020-04-20 18:22:03 · 1896 阅读 · 0 评论 -
LeetCode55 跳跃游戏、LeetCode45跳跃游戏(进阶版)
LeetCode55 跳跃游戏【题目】给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。【样例】输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。【思考】使用动规,dp[x]代表从头到x是否可以达...原创 2020-04-17 11:51:02 · 326 阅读 · 0 评论 -
ConcurrentHashMap 的实现原理 (JDK1.7 和 JDK1.8)
HashMap、CurrentHashMap 的实现原理基本都是 BAT 面试必考内容,阿里 P8 架构师谈:深入探讨 HashMap 的底层结构、原理、扩容机制深入谈过 hashmap 的实现原理以及在 JDK 1.8 的实现区别,今天主要谈 CurrentHashMap 的实现原理,以及在 JDK1.7 和 1.8 的区别。内容目录:1. 哈希表 2.ConcurrentHashMap 与 H...转载 2020-04-15 11:23:08 · 3086 阅读 · 0 评论 -
Java求指定精度的开根号运算
原理是二分法不断迭代:取max为指定值target,min为1,精度要求m;取min和max的中点mid,当midmid>target,把max设定为mid;当midmid<target,把min设定为mid。然后max和min求出新的中间 newMin。结果就在mid和newMid之间,并不断逼近最终结果,当newMid-mid的绝对值小于m时,结果即为所求【代码】packa...原创 2020-04-14 22:26:52 · 840 阅读 · 0 评论 -
聊聊 Mysql 索引和 redis 跳表
一、Redis中的跳表跳表可以简单理解就是给链表加索引,当结点数量多的时候,这种添加索引的方式,会使查询效率提高的非常明显。跳表这个动态数据结构,不仅支持查找操作,还支持动态的插入、删除操作,而且插入、删除操作的时间复杂度也是 ○(㏒n)。对于单纯的单链表,需要遍历每个结点来找到插入的位置。但是对于跳表来说,因为其查找某个结点的时间复杂度是 ○(㏒n),所以这里查找某个数据应该插入的位置,...原创 2020-04-14 18:26:15 · 2003 阅读 · 0 评论 -
【面试刷题-力扣经典】动规:221. 最大正方形
【题目】在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。输入:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4【思路】dp[x][y] 代表的是正方形的最右下角是x,y的时候,正方形的边长从 (0,0)(0,0) 开始,对原始矩阵中的每一个 1,我们将当前元素的值更新为(1,3) 处的 2 表示到该索引为...原创 2020-04-13 20:52:57 · 415 阅读 · 0 评论 -
Mybatis 的一级缓存和二级缓存
一级缓存1.定义一级缓存基于 sqlSession 默认开启,在操作数据库时需要构造 SqlSession 对象,在对象中有一个 HashMap 用于存储缓存数据。不同的 SqlSession 之间的缓存数据区域是互相不影响的。一级缓存的作用域是 SqlSession 范围的,当在同一个 sqlSession 中执行两次相同的 sql 语句时,第一次执行完毕会将数据库中查询的数据写到缓存...原创 2020-04-11 11:20:15 · 263 阅读 · 1 评论 -
快速求最大公约数和最小公倍数
辗转相除法辗转相除法又名欧几里得算法(Euclidean algorithm),目的是求出两个正整数的最大公约数。这条算法基于一个定理:两个正整数 a 和 b(a 大于 b),它们的最大公约数等于 a 除以 b 的余数 c 和 较小数 b 之间的最大公约数。算法计算过程是这样的:2个数相除,得出余数如果余数不为0,则拿较小的数与余数继续相除,判断新的余数是否为0如果余数为0,则最大公...原创 2020-04-09 21:31:30 · 987 阅读 · 2 评论 -
JVM 参数及调优
调优基本概念在调整 JVM 性能时,通常有三个组件需要考虑:堆大小调整垃圾收集器调整 JIT 编译器大多数调优选项都与调整堆大小和选择合适的垃圾收集器有关,JIT 编译器对性能也有很大影响,但很少需要对其进行调优,尤其是针对较新版本的 JVM。通常,在进行 Java 程序调优的时候,会重点关注两个主要指标:响应性:应用程序对请求进行响应的速度,对于专注响应性的应用程序,长时间...转载 2020-04-22 09:56:15 · 528 阅读 · 0 评论 -
Redis 和 Mysql 数据库数据如何保持一致性
在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用 redis 做一个缓冲操作,让请求先访问到 redis,而不是直接访问 Mysql 等数据库。这样可以大大缓解数据库的压力。具体业务流程如下: 读取缓存步骤一般...转载 2020-04-09 10:12:08 · 1630 阅读 · 0 评论 -
CAS乐观锁的ABA问题
CAS1.CAS 原理CAS 机制当中使用了 3 个基本操作数:内存地址 V,旧的预期值 A,要修改的新值 B。更新一个变量的时候,只有当变量的预期值 A 和内存地址 V 当中的实际值相同时,才会将内存地址 V 对应的值修改为 B。CAS 的原理就是预期值 A 与内存中的值相比较,如果相同则将内存中的值改变成新值 B。这样比较有两类:第一类:如果操作的是基本变量,则比较的是 值 是否...原创 2020-04-08 21:57:33 · 1227 阅读 · 1 评论 -
【面试刷题-力扣经典】409最长回文串、647回文子串、5最长回文子串
1原创 2020-04-08 20:24:08 · 322 阅读 · 0 评论 -
两种常见数据库引擎:MyISAM 与 InnoDB 的区别
1.事务的支持MyISAM:强调的是性能,每次查询具有原子性,其执行数度比 InnoDB 类型更快,但是不提供事务支持。InnoDB:提供事务支持事务,外部键等高级数据库功能。具有事务 (commit)、回滚 (rollback) 和崩溃修复能力 (crash recovery capabilities) 的事务安全 (transaction-safe (ACID compliant)...原创 2020-04-07 15:47:20 · 341 阅读 · 0 评论 -
LeetCode42.接雨水、LeetCode11. 盛最多水的容器
单调栈、动态规划、双指针【题目】给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。【输入】: [0,1,0,2,1,0,1,3,2,1,2,1]【输出】: 6【解法一】:暴力解法思路:对于数组中的每个元素,我们找出下雨后水能达到的最高位置,等于两边最大高度的较小值减去当前高度的值。每次计算的当前元素能存储的雨水,最后累计即可首尾元素无...原创 2020-04-05 21:59:03 · 492 阅读 · 0 评论 -
【商城秒杀项目】-- 项目总结
转自:https://blog.csdn.net/weixin_42687829/article/details/104535027?utm_source=app原作者项目代码已上传至gitHub:https://github.com/java-LJ/miaosha.git 最近对商城秒杀项目所用到...转载 2020-04-03 10:36:28 · 2594 阅读 · 1 评论 -
单调栈
一、单调栈定义单调递增栈:数据出栈的序列为单调递增序列(比站内元素小就入栈,否则将栈中比当前元素小的元素弹出后再入栈)单调递减栈:数据出栈的序列为单调递减序列(比站内元素大就入栈,否则将栈中比当前元素大的元素弹出后再入栈)二、题目(一)视野总和【题目】描叙:有 n 个人站队,所有的人全部向右看,个子高的可以看到个子低的发型,给出每个人的身高,问所有人能看到其他人发现总和是多少。输...原创 2020-04-03 09:33:14 · 590 阅读 · 1 评论 -
HTTP 常见状态码(14 种)
HTTP 状态码表示客户端 HTTP 请求的返回结果、标记服务器端的处理是否正常或者是出现的错误,能够根据返回的状态码判断请求是否得到正确的处理很重要。状态码由 3 位数字和原因短语组成,例如下图所示:数字中的第一位指定了响应类别,后两位无分类,响应类别有一下 5 种:状态码分类表 ...转载 2020-04-02 14:59:16 · 357 阅读 · 0 评论 -
负载均衡
一、什么是负载均衡(Load balancing)在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但是随着业务量越来越大,无论是性能上还是稳定性上都有了更大的挑战。这时候我们就会想到通过扩容的方式来提供更好的服务。我们一般会把多台机器组成一个集群对外提供服务。然而,我们的网站对外提供的访问入口都是一个的,比如 www.taobao.com。那么当用户在浏览器输入 www.taobao...原创 2020-03-31 15:58:38 · 359 阅读 · 0 评论 -
磁盘寻道调度算法
磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读 / 写操作的请求。由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列,常用的磁盘调度算法有以下四种:先来先服务算法(FCFS),最短寻道时间优先算法(SSTF),扫描算法(SCAN),循环扫描算法(CSCAN) 例: 假定某磁盘共有 ...转载 2020-03-31 11:03:03 · 5070 阅读 · 0 评论 -
快速幂
快速幂:将幂指数 b 转换为二进制,例:6 对应二进制为 110,此时 a b =a4a2a0,时间复杂度为 f(n)=lgnpublic class QuickPower { public static void main(String[] args) { /** * 2^n;需要n个2相乘,时间复杂度O(n) * ...原创 2020-03-30 20:22:58 · 176 阅读 · 0 评论 -
Redis 实现分布式锁
1.分布式下的情况分布式与单机情况下最大的不同在于其不是多线程而是多进程。多线程由于可以共享堆内存,因此可以简单的采取内存作为标记存储位置。而进程之间甚至可能都不在同一台物理机上,因此需要将标记存储在一个所有进程都能看到的地方。2.分布式锁当在分布式模型下,数据只有一份(或有限制),此时需要利用锁的技术控制某一时刻修改数据的进程数。与单机模式下的锁不仅需要保证进程可见,还需要考虑进程与锁...转载 2020-03-30 19:05:58 · 184 阅读 · 0 评论