高级java工程师面试宝典
文章平均质量分 61
根据本人准备面试的脉络,整理了这份面试宝典,方便大家面试使用。
善守的大龙猫
昔之善战者,先为不可胜,以待敌之可胜。不可胜在己,可胜在敌。故善战者,能为不可胜,不能使敌之必可胜。故曰:胜可知,而不可为!
成为专家!成为专家!
展开
-
面试题 - 动态代理是基于什么原理?
代理的发展经历了静态到动态的过程,源于静态代理引入的额外工作。因为反射机制使用广泛,根据社区讨论,目前,Java 9 仍然保留了兼容 Java 8 的行为,但是很有可能在未来版本,完全启用前面提到的针对 setAccessible 的限制,即只有当被反射操作的模块和指定的包对反射调用者模块 Open,才能使用 setAccessible,我们可以使用下面参数显式设置。如果熟悉设计模式中的代理模式,我们会知道,代理可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成。原创 2024-01-27 19:28:18 · 791 阅读 · 0 评论 -
谈谈常用的分布式ID的设计方案?
从设计和具体编码的角度,还有一个很有效的措施就是缓存历史时间戳,然后在序列生成之前进行检验,如果出现当前时间落后于历史时间的不合理情况,可以采取相应的动作,要么重试、等待时钟重新一致,或者就直接提示服务不可用。Snowflake的官方版本是基于Scala语言,Java等其他语言的参考实现有很多,是一种非常简单实用的方式,具体位数的定义是可以根据分布式系统的真实场景进行修改的,并不一定要严格按照示意图中的设计。另外,序列号的可预测性是把双刃剑,虽然简化了一些工程问题,但很多业务场景并不适合可预测的ID。原创 2023-12-12 23:14:43 · 1044 阅读 · 0 评论 -
Spring相关面试题
利用三级缓存。原创 2023-12-10 11:35:25 · 412 阅读 · 0 评论 -
工作实践中如何使用ThreadLocal?
多线程问题主要是多个线程共享一个对象导致的,我们不让他共享就行了,每个线程保存一份自己的对象,自己玩自己的对象,就不会出现线程问题了。ThreadLocal这个作用就是让线程自己独立保存一份自己的变量副本。每个线程都独立使用自己的变量副本。注意事项:在引用之后,调用一下ThreadLocal的remove方法就不会出现内存泄漏的方法了。ThreadLocal是解决多线程问题的一个重要思路。,这个类是实现线程隔离的一个关键,有个非常关键的内部类。数组,它的key就是。它本身的一个弱引用。原创 2023-12-10 11:04:43 · 368 阅读 · 0 评论 -
布隆过滤器,Redis之 bitmap,场景题【如果微博某个大V发了一条消息,怎么统计有多少人看过了】
Bitmap是一种精简而高效的数据结构,通过二进制位存储大规模布尔值信息,常用于快速处理用户在线状态、权限管理以及行为记录等应用场景。可以简单把它想象成是趋于无限大的数组,只是这个数组的每个位置只能存储 1 和 0。它可以快速的统计出有多少个 1,也可以快速统计某个区间内有多少个 1。基于此我们可以创建一个 bitmap, key就是这条消息的id,每个位置就对应一个用户,1 就表示看过。原创 2023-12-10 10:18:49 · 854 阅读 · 0 评论 -
博客要做好下次面试的准备
面试总是需要准备的.最好通过博客来进行准备。原创 2021-02-06 20:50:05 · 122 阅读 · 0 评论 -
Java Object Layout查看对象布局工具
Java Object Layout查看对象布局工具引入的maven配置文件如下<!-- https://mvnrepository.com/artifact/org.openjdk.jol/jol-core --><dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>原创 2020-06-11 09:38:35 · 1042 阅读 · 0 评论 -
SpringBoot面试题总结
随着 Spring Boot 使用越来越广泛,Spring Boot 已经成为 Java 程序员面试的知识点,很多同学对 Spring Boot 理解不是那么深刻,经常就会被几个连环跑给干趴下了!问:你觉得 Spring Boot 最大的优势是什么呢?答:Spring Boot 的最大的优势是“约定优于配置“。“约定优于配置“是一种软件设计范式,开发人员按照约定的方式来进行编程,可以减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。问:Spring Boot 中 “约定优于配置“的具体产原创 2020-05-28 17:12:12 · 428 阅读 · 0 评论 -
ThreadLocal相关知识
文章目录1.是什么?2.有什么用?3.原理是什么?4.怎么使用?5.有什么需要注意的?1.是什么?ThreadLocal是线程的局部变量,是每一个线程所单独持有的,其他线程不能对其访问,这就是ThreadLocal命名的来源。2.有什么用?我们知道有时候一个对象可以被多个线程访问,这是就会有线程安全问题,当然我们可以用Synchorinized对此变量进行加锁,但是这就极大地影响效率,可以用ThreadLocal来解决某一变量的访问。Threadlocal适用于每个线程需要自己的实例,且实例需要多原创 2020-05-26 10:21:48 · 152 阅读 · 0 评论 -
关于java的几个问题
1.谈一谈,系统线程数量上限是多少?Linux 系统中单个进程的最大线程数有其最大的限制 PTHREAD_THREADS_MAX。这个限制可以在/usr/include/bits/local_lim.h中查看 ,对 linuxthreads 这个值一般是 1024,对于 nptl 则没有硬性的限制,仅仅受限于系统的资源。这个系统的资源主要就是线程的 stack 所占用的内存,用 ulimit -s 可以查看默认的线程栈大小,一般情况下,这个值是8M=8192KB。2.请讲一下浏览器从接收到一个URL原创 2020-05-11 20:16:49 · 160 阅读 · 0 评论 -
单例模式--双重检查锁
单例模式分为饿汉式和懒汉式。饿汉式是事先分配内存,提前创建。这样的方式为到位占用资源,当这种比较多时,会占用很多内存。懒汉式是在被调用的时候进行。这种在并发时又会导致问题。比较稳妥的办法是在懒汉式的基础上加上锁,然后进行双重检查,这种SpringIOC容器式单例也是用这种双重检查来避免线程冲突导致的问题。public class Singleton { private volatil...原创 2020-04-30 11:19:37 · 374 阅读 · 0 评论 -
验证回文串解答分析
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false解题思路看到这一题,首先想到去除标点符号,然后去除空格,转换为统一的大小写。最后遍历...原创 2019-12-13 10:20:55 · 87 阅读 · 0 评论