- 博客(57)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 一道有关数组正赋值排序的面试题
前言上周星期天,我跟一个前一段时间在深圳找工作的学长聊天,他告诉 我他找了一份5位数薪资的工作,当时我也很高兴,然后我接着问了他遇到了哪些面试题,然后他就跟我分享了一道题,题目是这样的:给定一个整型数组,其中的数值有正有负(我们暂时认为0也算是正数部分),现在请调整位置,把所有负值调到数组的左边,把所有正直调到数组右边。思路用一个指针i从前往后找第一个正数,用一个指针j从后往前找第一个负数,找到以后并且i<j,那么就将他们位置互换。这样,就完成了排序,代码如下:package intervi
2020-11-18 15:01:19
1887
16
原创 解决LocalDateTime中的‘T’
我查了一些资料,发现需要将LocalDateTime,序列化,于是加了个配置文件解决了。仔细观察会发现,在‘20’与‘20’之间,有一个‘T’
2022-07-21 10:50:54
3750
原创 一嗨租车一面笔记
问题:1.自我介绍2.介绍一下你这个项目3.你这个分布式锁是怎么实现的?4.你知道Java中的哪些锁?5.能谈谈你对ReentrantLcok的理解吗?6.你知道Mysql哪些索引?7.描述一下聚簇索引和非聚簇索引?8.什么是回表?9.什么是最左前缀原则?10.连接查询有哪些?11.什么是内连接和外连接?12.做过jvm调优吗?13.项目中使用过线程池吗?14.什么是TCP/IP模型?15.TCP和UDP的区别是什么?16.TCP的可靠是怎么实现的?17.Spring你用过
2021-07-28 21:21:24
299
原创 LRU内存淘汰算法【大厂面试算法题】
题目描述运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写入新数据之
2021-07-23 22:48:29
219
1
原创 在二叉树中找到两个节点的最近公共祖先【大厂算法面试题】
题目描述给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。注:本题保证二叉树中每个节点的val值均不相同。输入:[3,5,1,6,2,0,8,#,#,7,4],5,1输出: 3解题思路由于递归要返回树的左子树或者右子树节点,而题目给出的返回值为int所以我们这里自己定义一个递归方法。如果root == null 就说明root走到底了,如果root等于o1或者o2就说明o1或者o2是另一个的父节点,就直接返回root即可
2021-07-22 10:18:50
315
原创 重建二叉树【大厂算法面试题】
题目描述给定某二叉树的前序遍历和中序遍历,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。提示:1.0 <= pre.length <= 20002.vin.length == pre.length3.0 <= pre[i], vin[i] <= 100004.pre 和 vin 均无重复元素5.vin出现的元素均出现在 pre里6.只需要返回根结点,系统
2021-07-21 22:52:06
158
2
原创 两个链表的第一个公共结点【大厂算法面试题】
题目描述输入两个无环的单链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)解题思路我们可以定义两个指针,p1和p2,分别指向两个链表的头节点,然后当p1(或者p2)等于 null时,将p1(或者p2)指向p2头节点(或者p1头节点),如果他们相等,将其返回。代码实现/*public class ListNode { int val; ListNode next = null; ListNode(in
2021-07-20 20:58:29
93
原创 使用两个线程交替打印0~100【大厂算法面试题】
题目描述使用两个线程,交替打印0~100解题思路我们定义两个线程,轮流打印,当一个线程打印完以后,就唤醒另一个线程,并且自己进入等待状态。代码实现package com.coolstar.test;public class TurningRunner implements Runnable{ static int count = 0; static Object lock = new Object(); @Override public void run()
2021-07-17 20:00:47
333
原创 中二分查找的疏忽【大厂算法面试题】
昨天面试了一家大厂,第一道面试题是面试官叫我两分钟写一个二分查找算法,我的代码是这样的:package array;public class _二分查找 { public static void main(String[] args) { int [] arr = {1,2,3,4,5,6,6,100}; int var = 2; System.out.println(fun(arr,var)); } public stat
2021-07-17 19:54:58
96
原创 手写简单的Lock
前言昨天的面试,让我知道了阅读源码的重要性,今天就手写三种简单Lock来进行JUC的巩固。代码实现1、简单的Lockpackage com.coolstar.locks;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;public class MyLock1 implements Lock {
2021-07-17 19:22:55
156
原创 数组只出现一次的数(其他数出现K次)【大厂算法面试题】
题目描述给定一个整型数组 arrarr 和一个整数 k(k>1)k(k>1)。已知 arrarr 中只有 1 个数出现一次,其他的数都出现 kk 次。请返回只出现了 1 次的数。解题思路用一个map记录每个数出现的次数,如果出现多次,就标记为false,然后再遍历map,寻找value为true的key就是出现一次的数代码实现import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定
2021-07-16 22:05:14
410
原创 用友畅捷通面试笔记(已拿offer)
1、自我介绍2、手写二分查找3、聊了一下动态规划4、HashMap的hashCode()方法和hash()方法5、ReentrantLock的Sync和AQS6、如何统计当前线程池里面运行的线程7、java bin的工具你了解哪些8、TCP三次握手和四次挥手9、Linux的高级命令用过哪些10、邮箱的正则表达式11、 stu {id,sex}clzz{name,stuid}grade{stuid,score}求 :每个班里面男同学的平均分...
2021-07-16 18:07:19
671
3
原创 删除链表的倒数第n个节点【大厂面试算法题】
题目描述给定一个链表,删除链表的倒数第 nn 个节点并返回链表的头指针例如,给出的链表为: 1→2→3→4→5, n=2.删除了链表的倒数第 n 个节点之后,链表变为1→2→3→5.备注:题目保证 nn 一定是有效的请给出请给出时间复杂度为\ O(n) O(n) 的算法解题思路把原链表前面加一个头节点,慢指针从新头节点开始跑,快指针从老头节点开始跑,先用快指针跑k个节点,然后再快慢指针一起跑,当快指针到达null时,删除慢指针后面的节点即可代码实现import java.util.*;
2021-07-16 10:53:25
122
原创 买股票的最好时机【大厂算法面试题】
题目描述数组里的每个元素代表每一天的价格情况,请计算这段时间最多能挣多少。示例:输入:[1,4,2]返回:3解释:第一天买,第二天卖,4-1=3;输入:[2,4,1]返回:2解释:第一套买,第二天卖,4-2=2;解题思路用一个变量记录当前天的最小值(从第二天开始),然后用每天减去这个最小值,得出的结果保留一个最大值并将其返回则是题目所需要的答案。代码实现import java.util.*;public class Solution { /** *
2021-07-15 16:50:18
94
原创 合并两个有序数组【大厂算法面试题】
题目描述给出一个整数数组 A和有序的整数数组 B,请将数组 合并到数组 A中,变成一个有序的升序数组注意:1.可以假设 A数组有足够的空间存放 B数组的元素, 和 中初始的元素数目分别为 m和 n,的数组空间大小为 m + n2.不要返回合并的数组,返回是空的,将数组 B的数据合并到A里面就好了3.A数组在[0,m-1]的范围也是有序的解题思路由于A数组的容量足够大,并且,A数组和B数组都是有序的,我们可以从A数组的后面进行比较并赋值。代码实现public class Solution {
2021-07-15 15:38:13
413
原创 寻找第K大的数【大厂算法面试题】
题目描述有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(1<=K<=n),请返回第K大的数(包括重复的元素,不用去重),保证答案存在。解题思路利用大根堆的特点,把数组元素放进大根堆,然后再删除K-1个最大的元素,剩下的最大数就是第K大的数。代码实现package heap;import java.util.PriorityQueue;public class _寻找第K大的数 { public stat
2021-07-15 11:59:04
221
原创 替换空格【Shein算法笔试题】
题目描述请实现一个函数,把字符串 s 中的每个空格替换成"%20"。解题思路定义一个StringBuilder,如果s.charAt(i) == ‘ ’则替换为"%20"代码实现 public String replaceSpace(String s) { StringBuilder sb = new StringBuilder(); for(int i = 0;i < s.length();i++) { if(s.charAt(i)
2021-07-14 13:34:04
888
1
原创 奇安信一面笔记
面试问题1、二叉树的右视图【算法题】2、网络、编程语言、数据库、操作系统你最擅长哪一块?3、写一个并发安全单例4、happens-before的概念5、GC算法6、为什么单表不建议超过500w条数据?7、TCP与UDP的区别?8、TCP的可靠是怎么实现的?...
2021-07-08 12:42:42
240
原创 树的前序,中序,后序遍历【大厂算法面试题】
题目描述分别按照二叉树先序,中序和后序打印所有的节点。示例输入:{1,2,3}输出:[[1,2,3],[2,1,3],[2,3,1]]解题思路写用三个List和三个方法,分别存储和计算先序,中序和后序的值,然后再装入res数组并返回。代码实现import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; *
2021-07-06 17:09:42
146
2
原创 单调不递减链表,删除掉重复值【大厂算法面试题】
题目描述在一个单调不递减链表中,删除掉重复出现的值。解题思路使用双指针,有两种情况:1、前指针指向的节点的值和后指针指向的节点的值相等就把后指针指向的节点删除,并且后指针指向新的后指针。2、两个指针指向的节点的值不相同,则两个指针分别向后走一步。代码实现package linkednode;import java.util.HashSet;import java.util.Set;public class _删除掉重复值 { public static void main(S
2021-07-05 17:34:16
108
原创 对链表值奇偶分离并排序【大厂算法面试题】
题目描述实现链表,无序链表,对链表值奇偶分离并排序,空间复杂度O(1)解题思路先自己定义一个链表,把数据放在链表里面,然后定义两个链表,对链表进行奇偶分离并排序。代码实现package linkednode;public class Node { int value; Node next; public Node(int value) { this.value = value; } public Node() {
2021-07-02 13:28:54
345
原创 一个n位的数,去掉其中的k位,使得留下来的那个(n-k)位的数最小【大厂算法面试题】
题目描述一个n位的数,去掉其中的k位,问怎样去掉使得留下来的那个(n-k)位的数最小?解题思路假设一个数为:123456789,k = 3,那么,去掉k个最大的数为123456。假设一个数为:987654321,k = 3,那么,去掉k个最大的数为654321。假设一个数为:192837465,k = 3,那么,去掉k个最大的数为123465我们可以发现,当第j位数>j+1位数时,我们可以将j删除。当找不到这样的数时,表示该数为非递减数列,例如123456789,这时候我们应该将最
2021-07-02 09:26:54
298
原创 链表实现队列【大厂算法面试题】
题目描述使用链表实现一个队列简单的基本功能。实现思路1、首先自己定义一个链表节点类Node,再定义一个队列类LinkedQueue。2、offer方法:我们首先判断头节点是否为空,如果为空,就先new一个head节点,接着把值放入head节点,在把tail节点指向head节点,否则,先new一个node节点,把node节点接入tail节点的下个节点,再把tail节点指向tail的下一个节点,让head节点始终保持指向头部节点,tail节点始终指向最后一个节点。3、poll方法:如果head不为空说
2021-06-29 13:41:32
113
原创 链表实现栈【大厂算法面试题】
题目描述自己手写链表实现一个栈的基本功能。做题思路1、首先自己定义一个链表节点类Node,再定义一个栈类Stack。2、push方法:我们首先判断头节点是否为空,如果为空,就先new一个head节点,接着把值放入head节点,否则,先new一个node节点,把head节点接入node的下个节点,再把head节点指向node节点。3、pop方法:如果head不为空说明栈中有值,把head节点的value拿出来,在把head节点往下走一步,原来的头节点回因为没有引用而被回收。4、peek方法:返回h
2021-06-29 12:59:21
114
原创 栈排序【大厂算法面试题】
题目描述栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。解题思路我们用两个栈,一个原始栈用来存储全部数据,另一个临时栈用来模拟插入排序后移数组的操作,把插入的数据放在合适的位置后,在将临时栈的数据再放回原始栈。实现代码class SortedStack { private Stack<Integer
2021-06-29 12:49:48
86
转载 用钓鱼的方式打开IO模型
什么是IO?我们常说的IO,指的是文件的输入和输出,但是在操作系统层面是如何定义IO的呢?到底什么样的过程可以叫做是一次IO呢?拿一次磁盘文件读取为例,我们要读取的文件是存储在磁盘上的,我们的目的是把它读取到内存中。可以把这个步骤简化成把数据从硬件(硬盘)中读取到用户空间中。其实真正的文件读取还涉及到缓存等细节,这里就不展开讲述了。关于用户空间、内核空间以及硬件等的关系如果读者不理解的话,可以通过钓鱼的例子理解。钓鱼的时候,刚开始鱼是在鱼塘里面的,我们的钓鱼动作的最终结束标志是鱼从鱼塘中被我们钓上来
2021-06-28 23:11:28
129
原创 面试的一些技巧(Offer已拿下)
前言大概是两个多月之前投的一个Python实习生的简历(我也忘了当时是怎么投的),我本人是做Java的,但是今天还是约了面试,是技术面,就聊了15分钟,然后面试官跟我说下次找个时间约HR面,跟面试官聊得很愉快,所以我面试应该是过了,就想聊聊面试的一些注意事项。正文1、自我介绍我就简单介绍了自己会哪些技术,然后在校参加过什么比赛,当过什么职位,做过哪些项目,平时做哪些事情等等。在自我介绍的时候一定要自信,大方,说话流利,这样能给面试一个很好的印象,如果还是很紧张就最好把自己的自我介绍对着镜子多背背,
2021-06-25 17:39:42
313
原创 实战总结,轻松解决synchronized的面试题
前言我在猫眼二面的时候面试官问了我一些synchronized的一些面试题,下面跟大家分享一下问题和我的答案,希望对大家有帮助,如果有什么不足的地方,也可以留言我们一起讨论。问题问题1:synchronized修饰静态方法和非静态方法有什么区别?答:如果是非静态方法那么锁的对象本身,如果方法是静态方法那么锁的是类。因为在jvm加载类的时候,类的常量以及静态成员和方法会一起加载,所以当我们在静态方法上加synchronized时,锁的资源是类,所以即使new了两个对象,调用的分别的静态方法也会阻塞。如
2021-06-25 12:33:40
299
3
原创 通过“Hello World!“来聊聊类加载器
前言前段时间学习了JVM的相关知识,今天想通过一个"Hello World!"来讲述底层的执行流程,如果有什么理解错误的地方,可以私聊我,相互讨论,共同进步!正文话不多说,先附上代码:package com.coolstar.blog;/** * @author CoolStar */public class HelloWorld { final static String HELLO_WORLD = "Hello World!"; public static
2021-06-25 10:55:57
123
原创 猫眼一面笔记
阻塞队列用于做什么?volatile关键字?String的创建JVM五大运行时区域的是什么和作用除了堆,其他区的垃圾回收类加载的过程static 跟 final static的区别Redis持久化RDB和AOF优缺点mysql更新redis时怎么保证?Redis的缓存过期的实现?Redis单线程为啥这么快多路复用原理关系型数据库和非关系数据的区别b+树原理http请求的过程TCP和UDP的区别和优缺点...
2021-06-22 20:32:11
181
原创 猫眼二面笔记
Synchronized加锁的锁对象是什么类加载器有了解吗如果我自定义加载了一个类加载器,然后分别去加载了一个类,比如说student类,然后这个student类里面有一个静态的方法被synchronized修饰,然后我分别用两个线程取load 这个student,之后去调这个静态的方法,然后他们彼此之间阻塞吗?描述一下synchronized升级的过程synchronized的轻量级锁体体现在哪?能够具体的描述ReentrantLock可重入锁的实现吗我在CLH队列里面添加一个节点的时候,我需
2021-06-22 20:30:43
202
原创 线段树
前言前段时间自己去看了灾后重建这道题,里面需要用到,最小生成树,线段树等算法,所以今天去学习了线段树:public class SegTree { static int [] arr = {1,3,5,7,9,11}; static int size = arr.length; static int [] tree = new int[(size+1)*2]; public static void build(int node,int start,int end) { if(s
2021-03-13 17:09:30
60
原创 PabinKarp 字符串滚动Hash算法
该算法通过计算每个固定长度的字串,然后通过滚动hash依次对每个子串的hash值与匹配串进行比较,如果相同就打印子串所在的位置。由于使用的是hash值,可能产生hash冲突,可以在hash值相同以后在进行逐个字符匹配。public class PabinKarp { public static void main(String[] args) { String s = "ABABABA"; String p = "ABA"; //方法开始
2021-01-23 20:35:44
196
原创 算法面试题 判断两个字符串是否个数相等
package string;public class SameString { public static void main(String[] args) { System.out.println(check("abc","abc")); } static boolean check(String s1,String s2) { int [] helper = new int[127]; for (int i = 0; i
2021-01-21 22:00:35
515
3
原创 蓝桥杯 移动距离 DFS
题目描述X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3…当排满一行时,从下一行相邻的楼往反方向排号。比如:当小区排号宽度为6时,开始情形如下:1 2 3 4 5 612 11 10 9 8 713 14 15 …我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动)输入为3个整数w m n,空格分开,都在1到10000范围内w为排号宽度,m,n为待计算的楼号。要求输出一个整数,表示m n 两楼间最短移动距离。例
2021-01-06 22:56:49
124
原创 蓝桥杯 剪格子
前言半个月前,自己做蓝桥2013年A组真题的时候,做到了剪格子这个题,由于对DFS不熟练,无从下手,自己花了接近一周的时间去重新学习递归和DFS,然后今天在看到这个题,就很简单了。正文附上题目:标题:剪格子如图所示,3 x 3 的格子中填写了一些整数。我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是60。本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以分割为两个部分,使得这两个区域的数字和相等。如果存在多种解答,请输出包含左上角格子的那个区域包含的格子的最
2021-01-03 09:37:34
255
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人