自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 链表——不仅仅是穿针引线、双指针

例题:删除链表中的节点请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。说明:-链表至少包含两个节点。-链表中所有节点的值都是唯一的。-给定的节点为非末尾节点并且一定是链表中的一个有效节点。-不要从你的函数中返回任何结果。这个,,似乎没什么难度啊,咋还不仅仅是穿针引线呢?看到函数我突然明白了,并不是给你一个链表再给你一个值把它删掉,而是删...

2020-03-31 22:24:40 143

原创 Spring Boot 日志

一、日志框架JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j…日志门面 (日志的抽象层)日志实现JCL(Jakarta Commons Logging) SLF4j(Simple Logging Facade for Java) jboss-loggingLog4j JUL(java.util.loggi...

2020-03-31 16:19:55 96

原创 链表——复杂的穿针引线

例题:两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。使用四个指针,node1和node2分别指向要交换的两个结点,pre指向node1前一个结点,next指向node2后一个结点。交换node1和node2的操作:node2.next = node1;node1.next = next;...

2020-03-30 22:19:15 148

原创 Spring Boot 配置

一、配置文件(一)全局配置文件application.properteisapplication.yml用来修改Spring Boot自动配置的默认值。(二)YAML以前的配置文件:大多数都是xml文件。.yml以数据为中心,比json、xml更适合做配置文件。YAML配置端口:server: port: 8081XML配置端口:<server> &...

2020-03-30 12:40:09 152

原创 链表——虚拟头结点

例题:移除链表元素删除链表中等于给定值 val 的所有节点。看上去似乎很简单,一个指针cur向后遍历,遇到cur.next.val==val便通过cur.next = cur.next.next删除它。直到cur.next.val!=val,再执行cur = cur.next。但是,那这样头结点怎么办呢?所以要使用一个虚拟头结点。class Solution { public ...

2020-03-29 21:28:38 1202

原创 链表——在节点间穿针引线

例题:反转链表反转链表原理很简单,就是将原本指向下一个结点的指针,指向上一个结点。但是,需要存储前面和后面的结点,要不就找不到了。所以使用pre cur next三个结点,存储着上一个结点、当前结点、下一个结点,然后一起向后遍历。在这期间,最需要注意的就是顺序以及边界。class Solution { public ListNode reverseList(ListNode head...

2020-03-28 22:02:12 195

原创 Spring Boot入门

一、简介Spring Boot来简化Spring应用开发,约定大于配置,去繁从简。底层用的就是Spring全部的技术栈,整合Spring全家桶。是J2EE开发的一站式解决方案。优点:快速创建独立运行的Spring项目以及与主流框架集成;使用嵌入式Servlet容器,无需打成WAR包;starters自动依赖与版本控制(web,jdbc,redis…);大量自动配置,简化开发,也可修改...

2020-03-28 19:15:15 153

原创 美团二面

美团这个公司问的真的广,但是深度却没有腾讯深。二面相比于一面更多的是对项目能力的查看,而少了很多java的基础。对数据库索引的理解,聚集索引和稀疏索引的区别;写一条sql,找到成绩排名第16的同学;项目中的数据库表是怎么设计的,为什么要这么设计?原子性可以怎么实现,atomic包的底层都是怎么实现的。synchronized底层怎么实现的?说一下面向对象语言的三个特性。说一下你对...

2020-03-28 12:03:41 133

原创 线程池

一、并发队列(一)阻塞队列线程池是通过阻塞队列实现的。入队:当队列满了的时候,进行等待,什么时候有数据出队,再放进去。出队:当队列中没有元素,等待队列中有数据,再取出。(二)非阻塞队列入队:当队列满了的时候,放入数据,数据丢失。出队:队列中没有元素,取数据,得到的是null。(三)测试BlockingQueueBlockingQueue是一个接口,有多种实现类。入队 多种方法:...

2020-03-27 10:48:12 165

原创 查找表+滑动窗口

例题:存在重复元素II给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的 绝对值 至多为 k。·i和j差的绝对值至多为k的话,那么可以使用一个大小固定为k+1的滑动窗口,只要这个窗口内有重复的元素,那就说明符合题意,返回true。如果遍历完都找不到,返回false。由于不需要统计次数,所以使...

2020-03-26 17:42:02 204

原创 事务

一、事务是什么事务(Transaction),是一个最小的不可分割的单元,事务能够保证一个业务的完整性。多条sql语句要么同时成功,要么同时失败。比如转账update user set money=monry-100 where name='a';update user set money=monry+100 where name='b';假如只有一条语句执行成功,那么就会出现数...

2020-03-26 16:40:48 257

原创 使用查找表的经典问题

例题1:两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。使用查找集的做法就是,将所有元素以及对应下标都放入map中,然后查找每一个target-a是否存在于map,在的话返回a以及target-a的下标值。但是,如果有两个相同...

2020-03-25 20:24:46 226

原创 MySQL——查询练习(3)

一、子查询查询所有任课教师的tname 和 depart(任课:说明在课程表中有课程)---先查询课程表中课程对应教师编号select tno from course;---再查询教师编号对应的老师select tname,depart from teacher where tno in(select tno from course);+--------+---------------...

2020-03-25 15:53:43 1002

原创 MySQL——查询练习(2)

一、分组计算平均成绩查询每门课的平均成绩(分组查询,group by)---只查询3-105号课程select avg(degree) from score where cno='3-105';+-------------+| avg(degree) |+-------------+| 85.3333 |+-------------+---分组查询select cno...

2020-03-24 18:09:57 1082

原创 MySQL——查询练习(1)

一、数据准备学生表student:学号,姓名,性别,出生年月日,所在班级create table student( sno varchar(20) primary key, sname varchar(20) not null, ssex varchar(10) not null, sbirthday datetime, class varchar(20)); 课程表cours...

2020-03-23 19:32:51 253

原创 数据表设计——范式

一、第一范式 1NF数据表中的所有字段都是不可分割的原子值。create table student( id int primary key, name varchar(20), contact varchar(30));---contact字段是可以拆分的insert into student values(1,'张三','8159758,17625364718');inser...

2020-03-23 17:22:07 183

原创 约束

一、主键约束定义:主键约束在表中定义一个主键来唯一确定表中每一行数据的标识符。(唯一、非空)--id为主键create table user( id int primary key, name varchar(20));联合主键:多个字段组成一个主键,每个单独的字段允许重复,但不能都重复。--id,name组成复合主键create table user2( id int ,...

2020-03-22 17:40:09 206

原创 数据库基本定义与操作

一、关系型与非关系型关系型数据库:存储的格式可以直观地反映实体间的关系。关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关系的。 常见的关系型数据库有Mysql,SqlServer等。非关系型数据库:指的是分布式的、非关系型的、不保证遵循ACID原则的数据存储系统,如MongoDB、Redis、Memcache。(ACID:原子性、一致性、独立性及持久性)二、...

2020-03-22 11:11:36 554

原创 查找问题

一、查找有无:使用set例题:给定两个数组,编写一个函数来计算它们的交集。将nums1的元素放到一个set里,然后逐一判断nums2中的元素,存在的就是交集元素。二、查找关系:使用map例题:求两个数组的交集,并且要输出结果中每个元素出现的次数。使用map来记录nums1中元素的出现次数,然后判断nums2元素是否在map中,在则map中次数减一。1.有效的字母异位词给...

2020-03-21 21:54:17 128

原创 美团一面问题

本来白天面试完没想写,晚上想写了又记不住了,简单罗列几个记住的问题:深拷贝和浅拷贝关系型数据库的了解索引的数据结构,为什么用B+树,好处的关键在于(减少IO次数)锁的分类,什么是CAS什么是AQS什么是Callable,什么是FutureTCP和UDP的区别HashMap底层实现(几乎每场面试必考),为什么线程不安全?Hashtable的实现,ConcurrentHashMap的...

2020-03-21 21:26:56 189

原创 B-Tree

一、定义B树又称多路平衡查找树,B树中所有结点的孩子结点数的最大值称为B树的阶。一棵m阶B树或为空树,或为满足以下特征的m叉树:树中每个结点至多有m棵子树(即至多含有m-1个关键字)。根节点不是终端节点,则至少有两棵子树。除根节点所有非叶子节点至少有ceil(m/2)棵子树(ceil(m/2)-1个关键字)。非叶子节点的结构:所有的叶子节点都出现在同一层次上,并不带任何信息。...

2020-03-21 17:09:39 210

原创 HashMap、ConcurrentHashMap原理剖析

一、HashMap底层原理1. 默认加载因子(loadFactor) 0.75,为什么?何时扩容:当hashmap中的元素个数超过数组大小*loadFactor时,就会进行数组扩容。为什么非要0.75?过高会导致更多哈希碰撞,过低会导致空间利用率低。根据源码注释来看,节点在hash桶中的分布大致遵循泊松分布,在加载因子为0.75时,每个碰撞位置链表长度超过8个的概率便小于千万分之一。2...

2020-03-20 21:35:04 145

原创 腾讯java面试答案整理

1.Java中锁的分类乐观锁与悲观锁:(1)乐观锁 只会在更新数据的时候判断是否出现冲突,适合读操作多(2)悲观锁 每次拿数据都会上锁(比如synchronized),适合写操作多共享锁和排他锁对于Java ReentrantLock而言,其是排他锁。但是对于Lock的另一个实现类ReadWriteLock,其读锁是共享锁,其写锁是排他锁。可重入锁即同一线程的外层函数获得锁之后,内...

2020-03-20 15:03:00 245

原创 数组--滑动窗口

滑动窗口大多用于处理连续子数组问题,然后得到相应的长度。例题:长度最小的子数组给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。思路:使用滑动窗口i在左边,j在右边,明确意义[i,j]为滑动窗口(闭区间)。如果滑动窗口内的和小于s,则j++来扩大窗口范围。否则说明达到题目要求,记录此时的长度...

2020-03-19 21:06:02 645

原创 数组--对撞指针

例题:两数之和给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。思路:由于数组是升序排列的,所以利用对撞指针,i从左向右,...

2020-03-19 14:07:26 170

原创 牛客笔试题整理(3)

1.类方法类方法指的就是被static修饰的方法,有如下选择题:下列说法错误的有( )A. 在类方法中可用this来调用本类的类方法B. 在类方法中调用本类的类方法时可直接调用C.在类方法中只能调用本类中的类方法D. 在类方法中绝对不能调用实例方法A. static方法是属于类的,而不是属于某一个对象,所以没有this指针。B.一个类方法中可以直接调用另一个类方法C.一个...

2020-03-19 12:12:42 417

原创 数组--基础算法思路的应用

例题:颜色分类给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意: 不能使用代码库中的排序函数来解决这道题。首先,最简单的思路是使用计数排序,因为只有三个元素。其次,可以使用三路快排思想。维护三个指针 zero ,i, two,让它们满...

2020-03-18 21:21:54 133

原创 数组--明白变量的含义是什么

例题:移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。使用两个指针i和j,i用来遍历数组,j用来统计非零元素个数,每次将num[i]的值赋值给num[j],最后将j后面的元素清0即可。1.移...

2020-03-18 19:42:39 313

原创 腾讯java开发实习面试

啊,好难啊,不到30分钟就结束了,明明没有问什么很高深的问题,可我就是不会,还是需要多多学习多多积累了。锁的膨胀了解吗,为什么要膨胀,是可逆的吗?jvm内存结构中,哪些是会发生内存溢出的?元空间和永久代的区别?JDK1.8中HashMap的结构是怎么样的,为什么用红黑树?为什么要有双亲委派机制?如果是为了避免一个类多次加载为什么不直接用一个加载器?数据库索引的结构是怎么样的,了解B-...

2020-03-18 10:40:40 458

原创 牛客笔试题整理(2)

1.类初始化的顺序父类的静态变量和静态代码块赋值(按照声明顺序)自身的静态变量和静态代码块赋值(按照声明顺序)父类的成员变量和块赋值(按照声明顺序)父类构造器赋值:如果父类没有无参构造器,则子类中一定要使用super(参数)指定父类的有参构造器,否则会报错自身的成员变量和块赋值(按照声明顺序)自身构造器赋值2.数组是对象吗数组是一个对象,不同类型的数组具有不同的类两个数组用...

2020-03-17 21:16:29 239

原创 牛客笔试题整理(1)

1.final、finally和finalize的区别final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。finalize()是Object中的方法,当垃圾回收器将要回收对象所占内存之前被调用,即当一个对象被虚拟机宣告死亡时会先调用它finalize()方法,让此对象处理它生前的最后事情。不过,finali...

2020-03-17 20:21:55 566

原创 单例模式的几种写法

单例模式在《设计模式》中的定义为“保证一个类仅有一个实例,并提供一个访问它的全局访问点。”1.饿汉式饿汉式在类装载时便完成实例化,注意:单例模式的构造函数都是私有的。public class HungryMan { //静态常量,可以避免多次实例化 private final static HungryMan instance = new HungryMan(); pri...

2020-03-17 16:38:01 162

原创 字节跳动面试编程题

1.字符串全排列这里仅实现了小写字母,因为逻辑差不多。采用了两种判断方式,一种是在同一层使用的,为了防止相同值的元素被重复使用造成浪费。另一种是层与层之间,防止相同位置的元素被重复使用造成错误。所以最外面使用flags数组,长度为字符串的长度;函数内部创建isReapt数组,长度为26。代码如下:import java.util.ArrayList;import java.uti...

2020-03-17 12:25:40 836

原创 字节跳动面试问题答案

1.动态、静态链接是什么意思?静态链接:在生成可执行文件的时候(链接阶段),把所有需要的函数的二进制代码都包含到可执行文件中去。优点:在程序发布的时候就不需要的依赖库,也就是不再需要带着库一块发布,程序可以独立执行。缺点:程序体积会相对大一些。动态链接:动态链接的基本思想是把程序按照模块拆分成各个相对独立部分,在程序运行时才将它们链接在一起形成一个完整的程序。优点: 多个程序可以共享同...

2020-03-17 11:01:38 2620 4

原创 三角形最小路径和

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。思路一:首先...

2020-03-15 11:23:54 87

原创 堆排序

堆,是一种类似于二叉树的数据结构。它分为大顶堆和小顶堆,以大顶堆为例,大顶堆的每一个父节点一定大于它的左右子节点;小顶堆顾名思义。大致步骤所以,利用这种性质,便可以实现数组的排序。步骤如下:以大顶堆为例(通常用于升序排列),先将数组的元素构成一个大顶堆;取出堆顶元素,一定是最大的,然后放在数组末尾(交换数组末尾元素);剩下的元素重新组成一个大顶堆,然后再次取出堆顶元素,放在上一个的前...

2020-03-12 20:02:02 98

原创 四数相加 II

给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] +C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。思路:查找集最近在跟着慕课网学《玩转算法面试》,所以就没怎么刷题。这个题是课上讲的例题,相比于其他题目,这个题将组合后的值放...

2020-03-10 11:29:28 119

原创 零钱兑换

给定不同面额的硬币 coins 和一个总金额amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1: 输入: coins = [1, 2, 5], amount = 11 输出: 3 解释: 11 = 5 + 5 + 1示例 2: 输入: coins = [2], amount = 3 输出: -1说明: 你可以认为...

2020-03-07 20:43:08 206

原创 最长上升子序列

给定一个无序的整数数组,找到其中最长上升子序列的长度。示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是4。说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为 O(n2) 。 进阶:你能将算法的时间复杂度降低到 O(nlogn) 吗?思路一:动态规划难得...

2020-03-06 12:18:42 260

原创 寻找重复数

给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1 输入: [1,3,4,2,2] 输出: 2示例 2: 输入: [3,1,3,4,2] 输出: 3 说明:不能更改原数组(假设数组是只读的)。 只能使用额外的 O(1) 的空间。 时间复杂度小于 O(n2) 。数组...

2020-03-05 21:19:18 132

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除