java面试
文章平均质量分 55
不努力就种地~
problems will always solved by keep thinking
展开
-
redis string底层为什么使用sds, sds好处?redis 的动态字符串优点?
redis底层为c语言, 而c 语言中字符串,并没有对获取长度参数 进行方法封装,即获取长度,只能进行遍历,直至最后一位获取为空字符,这样时间复杂度比较高o(n) , sds 则是根据len 长度 来记录sds 本身的长度,获取时间复杂度为o (1)而键的value则可以是:“字符串对象”, “列表对象 (list object)”,“哈希对象 (hash object)”, “集合对象(set object)”, “有序集合对象(sorted set object)” 这五种对象集合中的一种!原创 2024-04-07 11:12:27 · 552 阅读 · 0 评论 -
hash冲突四种解决办法,hash冲突除了拉链法还有什么?
使用公共溢出区的优点是简化了哈希表的实现,所有哈希冲突的元素都集中在一个地方,管理起来相对容易。然而,由于所有冲突元素都放在同一个区域,可能会导致这个区域的负载过重,影响查找和插入的效率,因此在设计时需要考虑如何平衡元素的分布。:在开放寻址法中删除元素时,不能简单地将对应的位置标记为空,因为这可能会影响后续查找其他元素的过程。总的来说,建立公共溢出区是一种处理哈希冲突的方法,适用于一些简单的应用场景,但在高负载情况下可能需要额外的优化和调整。:使用第二个哈希函数来计算探测的步长,而不是使用固定的增量序列。原创 2024-03-25 16:04:24 · 971 阅读 · 0 评论 -
http状态码介绍 304状态码, 307状态码
说明无需再次传输请求的内容,也就是说可以使用缓存的内容,(我认为就是浏览器并没有再次请求服务器,还是使用上次请求的数据)临时重定向响应状态码,表示请求的资源暂时地被移动到了响应的。f12 请求网页数据,可以看到这类状态码。nginx 设置有用到!首部所指向的 URL 上。原创 2024-03-20 13:37:35 · 828 阅读 · 0 评论 -
java中的四种引用类型
在上面的例子中,对象 obj 是通过虚引用来引用的,当垃圾回收器回收 phantomRef 指向的对象时,该对象会被放入 referenceQueue 队列中。一个对象是否有虚引用的存在,完全不会对其生存时间构成影响,也无法通过虚引用获取对象实例。强最常见的一种引用方式,只要引用存在,垃圾收集器永远不会回收掉被引用的对象。软引用是在内存不足时,垃圾回收器会回收具有软引用的对象以释放内存。弱引用,只要jvm 开始回收,弱引用就会被回收掉。虚引用也被称为幽灵引用或者幻影引用,它是。原创 2024-03-20 11:14:23 · 296 阅读 · 0 评论 -
java 线程交替打印AB 如何使用多线程轮流打印参数 两个线程依次打印AB 两个线程依次打印1,2
变量的解决方案,通常情况下,该类将被用于原子性地更新状态标识位,比如flag。类提供的方法:详情可查看源码。AtomicBoolean 是什么?AtomicBoolean提供了一种。朋友们,简简单单吃个羊头 --!可以看下源码 基于unsafe实现的。还有很多的其他方法,暂不介绍!LockSupport用来。,直至获得许可,当调用。原创 2024-03-07 08:57:08 · 437 阅读 · 0 评论 -
Java 三个线程轮流打印ABC (二) 使用Semaphore解决打印abc
Semaphore 中有个计数器,表示可用的许可证数量。调用acquire()方法,可以获取许可证,使用完后调用release()方法,释放许可证。比如以数据库连接池为例,现有30个线程请求数据库连接,但连接池的最大连接数为10,故会有20个线程请求失败。为控制连接数,可用Semaphore操作。可用于控制并发数量,即同时访问特定资源的线程数量,通过协调各个线程,保证合理使用公共资源。1. 如何用java解决:启动三个线程,依次打印“A”, “B”, “C”?原创 2024-02-22 15:34:59 · 388 阅读 · 0 评论 -
Java 三个线程轮流打印ABC 使用wait notify解决打印abc
1. 如何用java解决:启动三个线程,依次打印“A”, “B”, “C”?3. 有很多方法都可以解决。如信号量,LockSupport, join等。原创 2024-02-22 14:36:32 · 275 阅读 · 0 评论 -
面试常见问题?java面试问什么?java面经
1.介绍集团,愿景,方向等,业务形态,岗位初衷,(识别招聘者想短线干,还是打算长线干),试用期考核相关解答,公司福利相关解答。(对于求职者角度,培训时候,底下女同事听到这直接就有意见了==!9. 碰到的员工年龄问题(虚报,身份证大,如果介意,需要提前问)答不好,完犊子,面试官能够看出来有情绪,是有问题的,那么就不符合岗位需求了。:这么多问题,其实看面试官,公司制度,时间,地点,当时心情等因素。(从应聘者角度来看,前几年我就犯了一个错误,说了一个问题,注:其实有时候,面试就是对眼的事,领导喜欢你,事就。原创 2024-01-05 15:37:32 · 1079 阅读 · 0 评论 -
leetCode 给定数组,目标值 计算数组下标
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。但是,数组中同一个元素在答案里不能重复出现。链接:https://leetcode.cn/problems/two-sum。链接:https://leetcode.cn/problems/two-sum。商业转载请联系官方授权,非商业转载请注明出处。商业转载请联系官方授权,非商业转载请注明出处。来源:力扣(LeetCode)来源:力扣(LeetCode)原创 2023-02-02 22:21:17 · 637 阅读 · 1 评论 -
leetCode 字符串反转
1. 给定字符串,abcdefg, 或输入一串字符串,进行反转。3. 字符串方法 toCharArray 转换为数组。5. 字符串方法 subString 切割。2. StringBuffer 反转。4. 字符串方法charAt。原创 2023-02-02 20:18:39 · 180 阅读 · 0 评论 -
HashMap的时间复杂度
当桶内元素大于8个:O(logN)(红黑树查询的时间复杂度为O(logN)与二分查找类似)1. hashMap 1.8 之后当 链表的数量大于8 并且数组数量大于64 链表升级为红黑树。当桶内元素大于8个:O(logN)(红黑树插入的时间复杂度为O(logN)与二分插入类似)是数组 + 链表 时 get方法的时间复杂度, 当链表转换为红黑树后。当桶内元素不大于6个:O(N)(JDK8尾插法,遍历到尾部再插入)当桶内元素不大于6个:O(N) (即单链表查询的时间复杂度)原创 2023-01-17 13:53:25 · 3190 阅读 · 1 评论 -
HashMap为什么线程不安全?
1. 两个线程A、B都在进行put操作,并且hash函数计算出的插入下标是相同的,当线程A执行完计算数组下标并赋值给数组后,由于时间片耗尽导致线程被挂起,而线程B得到时间片后在该下标处插入了元素,完成了正常的插入之后,此时线程A重新获得时间片,由于之前已经进行了hash碰撞的判断,所以此时不会再进行判断,而是直接进行插入,这就导致了线程B插入的数据被线程A覆盖了,从而线程不安全!2. (++size > threshold) 中的++size 我认为应该是 ++ 不属于原子操作的问题。原创 2023-01-17 13:32:30 · 121 阅读 · 0 评论