自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

从零学起

一个java学渣的学习之路

  • 博客(185)
  • 收藏
  • 关注

原创 maven的三种项目打包方式-jar,war,pom

maven的三种打包方式有何不同:1.jar包(默认打包方式)是maven的默认打包方式(不通过packaging来指定),通常是许多工具类项目(common)和需要被其他项目依赖的项目,打成jar包。2.war包会通过<packaging>war</packaging>来打包成war包,通常用于网站和服务,需要发布在服务器上的,例如portal移动端,可以让用户通过浏览器进行访问的项目。3.pom包常用与微服务项目中,父级工程和聚合工程打pom包,通过<packa

2020-05-08 17:39:03 1673

原创 用Swagger-UI实现在线API文档

用Swagger-UI实现在线API文档Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务,可以动态地根据注解生成在线API文档。一、常用注解(有四种)(1)@Api:用于修饰Controller类,生成Controller相关文档信息,在controller类的开头(2)@ApiOperation:用于修饰Controller类中...

2020-03-28 20:06:49 1291

原创 一个实用的工具-Mybatis generator

一个实用的工具-Mybatis generatorMybatis generator:MyBatis的代码生成器,可以根据数据库的表生成model、mapper.xml、mapper接口和Example,通常情况下的单表查询不用再手写mapper。下面我用一个例子来演示如何使用这个工具:1.在pom文件中加入Mybatis generator的依赖 <dependency&gt...

2020-03-27 16:23:47 263

原创 2020京东秋招笔试题1 && LeetCode768 最多能完成排序的块II

题目:arr是一个可能包含重复元素的整数数组,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。解法一:暴力法思路:设一个值为max,记录从左到右遍历时,数组的最大值;当数组的最大值小于等于当前的数,判断之后的数是否有比数组最大值小的,如果没有,就可以从这里断开,如果有则不行代码:public static int getC...

2019-08-25 13:27:16 525 2

原创 2020商汤8月19日笔试题二 最大递增序列和最大递减序列

题目:如果一个整型数组A的连续子数组B满足以下性质,那么我们把这个子数组成为“山峰”len(B)>=3存在一个变量i,0<i<len(B)-1,B[0]<…B[i]>…B[len(B)-1]B有可能是A的全集现在给出一个数组A,找出最长的山峰长度如果没有山峰就输出0输入:N 数组大小N个数字 表示数组元素输出:最长的山峰长度方法:动态规划...

2019-08-20 10:24:56 276

原创 2020商汤8月19日笔试题一 逆波兰问题

题目:通常逆波兰是将一种运算符放在操作数后面的表达方式。现在以数组的形式给出一些逆波兰的表达式,请你按照表达式给出运算结果。输入:操作数和符号以空格隔开,每个元素是操作数或者‘+’,‘-’,‘*’,‘/’其中一种操作数,操作数是int32范围内的整数,结果保证处于int32范围内,表达式保证合法输出描述:输出最终运算结果输入:2 1 + 3 *输出:9说明:(4+(13/5)...

2019-08-20 00:23:54 176

原创 2020校招8.17日腾讯技术笔试题5

题目:由于工作业绩优秀,公司给小Q放了n天的假,身为工作狂的小Q打算在假期中工作、锻炼和休息。他有个奇怪的习惯:不会连续两天工作或锻炼。只有当公司营业时,小Q才能去工作,只有当健身房营业时,小Q才能去健身,小Q一天只能干一件事。给出假期中公司,健身房的营业情况,求小Q最小需要休息几天?输入:第一行表示放假天数第二行n个数,0或1,表示公司第i天是否营业第三行表示健身房1为营业 0为不营...

2019-08-18 22:41:05 884

原创 2020校招8.17日腾讯技术笔试题4

题目:小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行。小Q从第一栋一直走到了最后一栋,小Q从来没有见过这么多的楼,所以他想知道他在每栋楼的位置处能看到多少栋楼呢?(当前面的楼的高度大于等于后面的楼时,后面的楼将被挡住)输入描述:第一行 楼栋数第二行 每个楼的高度输出:输出一行,分别是小Q在第i栋楼上能看到楼的数量方法:栈操作法思路:新建...

2019-08-18 21:40:25 762

原创 2020校招8.17日腾讯技术笔试题3

题目:小Q在进行一场竞技游戏,这场游戏的胜负关机就在于能否能争夺一条长度为L的河道,即可以看作是[0,L]的一条数轴。这款竞技游戏中有n个可以听视野的道具-真视守卫,第i的真视守卫能够覆盖区间[x,y],小Q想知道至少用几个真视守卫就可以覆盖整段河道输入:第一行 两个正整数n和ln行的每行为每个真眼的覆盖区间x,y输出:最少需要的真眼数量,如果无解,输出-1方法:贪心法思路:我发...

2019-08-18 15:36:41 1752 1

原创 2020校招8.17日腾讯技术笔试题2

题目:作为程序员的小Q,他的数列和其他人的不太一样,他有2^n个数,老板问了小Q一共m次,每次给出一个整数qi(1<=i<=m),要求小Q把这些数每2的qi分为一组,然后每组进行翻转,小Q想知道每次操作后整个序列中的逆序对个数是多少?输入描述:第一行一个数n第二行2^n个数,表示初始序列第三行一个数m第四行m个数表示qi输出:m行每行一个数表示答案方法:强行翻转+归并...

2019-08-18 14:53:17 1773

原创 2020校招8.17日腾讯技术笔试题1

题目:给你一个压缩字符串,让你进行解压缩,例如ABCABCABC会被压缩成[3|ABC]输入:压缩字符串([2|A[2|BC]])输出:解压后的字符串(ABCBCABCBC)方法:用栈来存思路:见到括号这些的题都应该用栈,让其一直入栈,直到‘]’有括号进栈,则让其中元素依次出栈,直到第一个‘[’左括号出栈,然后进行解压缩,解压之后继续将字符串按顺序存入栈中,然后继续此操作代码:p...

2019-08-18 11:34:33 1816 1

原创 Spring面经

一、Spring1.为什么要使用Spring(1)spring 提供 ioc 技术,容器会帮你管理依赖的对象,从而不需要自己创建和管理依赖对象了,更轻松的实现了程序的解耦。(2)spring 提供了事务支持,使得事务操作变的更加方便。(3)spring 提供了面向切片编程,这样可以更方便的处理某一类的问题。(4)更方便的框架集成,spring 可以很方便的集成其他框架,比如 MyBati...

2019-08-11 22:50:42 808

原创 数据库(含Mysql,redis)的面经

一、数据库基础1.什么是事务?事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。2.ACID属性原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行一致性(Consistency):当事务完成时,数据必须处于一致状态隔离性(Isolation):对数据进行修...

2019-08-11 13:49:02 371

原创 2020大疆校招B卷第三题

题目3:小W非常喜欢吃零食,经常都会去零食间里购买半价的零食吃,但是他为了控制自己的体重,因此会限制自己买零食的开销在某个数值以内。但是小W有一个特别的爱好,他对于某些零食特别的喜欢,并且会对这些零食的喜爱成都进行排序。对于零食A和零食B,如果小W对零食A的喜爱程度大于对零食B的喜爱程度,那么每次拿零食的时候,一定会确保A的数目比B多。现在零食间里有N种零食,假设每种零食都是取不完的,但小W...

2019-08-09 01:04:32 648

原创 2020大疆校招B卷第二题

题目:小B平时喜欢倒腾一些小东西,最近他准备给自己做的小机器人加入一套语音控制的功能,每个指令对应一个动作。由于语言转文字有很多现成的方案,所以小B打算直接复用这些方案,但是语音转成了文字之后,还需要将文字跟具体的动作对应起来。因此小B需要实现一个函数,将语音转换出来的文字,再转换成相应的动作。为了简单实现,小B将语音直接转成了拼音,然后把对应的动作也都起了名字,因此只要预先输入好两者的映...

2019-08-08 23:40:09 1281 1

原创 JVM的面经

JVM也是很重要的一个面试常考的部分,其中JVM的内存区域和GC垃圾回收是最重要的点,下面让我们来学习下有哪些考点吧1.Java虚拟机的构成(重点)(1)Class Loader类加载器:依据指定格式,将class文件加载到内存(2)Execution engine执行引擎:对命令进行解析(3)Native Interface本地接口:融合不同的开发语言的原生库(4)Runtime Da...

2019-07-30 14:26:03 838

原创 六、Java并发-JUC包的梳理

一、JUC包的介绍JUC是java.util.concurrent的缩写,提供了并发编程的解决方案1.核心是:(1)CAS:是java.util.concurrent.atomic包的基础(2)AQS:是java.util.concurrent.locks包以及一些常用类比如Semophore,ReentrantLock等类的基础2.JUC包的分类(1)线程执行器executor及其线...

2019-07-30 01:38:54 1084

原创 五、Java并发-线程池的底层实现

一、使用Java线程池的好处(1)降低资源消耗。通过重复利用已创建的线程降低反复创建和销毁线程的消耗(2)提高响应速度。任务不需要等线程创建就可以执行(3)提高线程的可管理性。使用线程池可以统一分配,调优和监控二、线程池对任务的处理流程(1)线程池判断核心线程池中的线程是否有空余的。如果有,就创建新的工作线程完成任务,没有就下一步(2)线程池判断工作队列是否满了。如果没满就存在工作队列...

2019-07-28 23:33:55 391

原创 四、Java并发-ReentrantLock原理(AQS)和synchronized的区别

一、ReentrantLock重入锁ReentrantLock,就是支持重进入的锁,它表示该锁能够支持一个线程对资源重复加锁。ReentrantLock虽然不像synchronized关键字支持隐式的重进入,调用Lock方法时,获取到锁的线程仍然能再次调用Lock获取锁而不被堵塞。它提供了与synchronized关键字相似的同步,只是在使用时需要显式的获取和释放锁,缺少了便捷性,但拥有了可操作...

2019-07-27 23:50:51 3030 1

原创 三、Java并发-HashMap,HashTable和ConcurrentHashMap的源码学习

一.HashMap的底层实现(1)jdk1.8之前,是采用的数组(Entry)+链表实现的,数组的初始值为16,数组储存的是链表的头结点,而hashcode算法是通过位运算来实现散列运算的存在问题:可能多个值都计算后连接在一个链表上,链表会变得很长,查询性能低(2)jdk1.8之后,采用的是数组(Node)+链表/红黑树实现的,当链表长度等于8时,就会将链表转换为红黑树,这样进行查询就提高...

2019-07-27 02:23:41 159

原创 二、Java并发-volatile和synchronized的底层实现及不同和CAS的原理

在多线程并发编程中synchronized和volatile都扮演的重要的角色,接下来我们来学习一下他们两个的相关知识及底层原理:1.volatile的定义定义:Java语言允许线程访问共享变量,为了确保共享变量能被准确一致地更新,线程应该确保通过排他锁单独获得这个变量于是Java提供了volatile,某些情况比锁更方便。如果一个字段被声明为volatile,Java内存模型(JMM)确保...

2019-07-26 16:02:25 705

原创 一、Java并发-线程与进程

最近好几天没更博了,刷完了剑指Offer之后,上次oppo和字节都问到了我薄弱的一环——Java并发相关,我这几天去找了几本书看了看,整理记录了一些心得和面试题,分享给大家1.什么是线程?操作系统在运行一个程序时,会为其创建一个进程。而线程就是现在操作系统系统调度的最小单元,也叫轻量级进程,一个进程里可以创建多个线程,这些线程都拥有各自的计数器,堆栈和局部变量等属性,并且能访问共享的内存变量。...

2019-07-26 02:01:34 196

原创 计算机网络面经

1.OSI七层模型应用层,表示层,会话层(前三层是数据),传输层(分段),网络层(分组(数据报)),数据链路层(帧),物理层(比特)2.Tcp/Ip协议簇:应用层:应用层,表示层,会话层(后两个没有协议)传输层:传输层网络层:网络层链路层:数据链路层,物理层3.应用层:应用层有哪些协议:HTTP,SMTP,Telnet(远程终端访问),FTP,DNS,SIP(互联网电话)(只有...

2019-07-23 13:53:21 2013 1

原创 剑指Offer 066机器人的运动范围

066机器人的运动范围题目:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?方法:回溯法思路:还...

2019-07-21 14:43:48 155

原创 剑指Offer 065矩阵中的路径

065矩阵中的路径题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abc...

2019-07-21 14:02:50 149

原创 剑指Offer 064滑动窗口的最大值

064滑动窗口的最大值题目:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,...

2019-07-21 13:23:38 122

原创 剑指Offer 063数据流中的中位数

063数据流中的中位数题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解释:两个函数,一个插入函数,一个得出中位数函数(排序之后的中位数)方法:大小根堆...

2019-07-20 23:32:37 140

原创 剑指Offer 062二叉搜索树的第k个节点

062二叉搜索树的第k个节点题目:给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。方法:中序遍历+递归思路:要找第k小的节点,因为是二叉搜索树,所以中序遍历之后的结果就是从小到大的顺序,用一个变量来记数代码:int index =0;//计数器 TreeNode KthNode(TreeNod...

2019-07-20 23:05:01 94

原创 剑指Offer 061序列化二叉树

061序列化二叉树题目:请实现两个函数,分别用来序列化和反序列化二叉树解释:序列化:给你一个root节点,前序遍历打印成一个字符串,每个节点之间加一个’,’,如果为空就’#'填充,返回字符串反序列化:给你字符串,让你还原成二叉树,返回头节点方法:前序遍历+递归法思路:前序遍历就是根左右,然后用递归做下去,反序列化也是递归代码: int index=-1;//反序列化中计数的一个变...

2019-07-20 22:05:55 98

原创 剑指Offer 060把二叉树打印成多行

060把二叉树打印成多行题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。方法:队列计数法思路:新建一个队列,每次把取出的节点的左右孩子节点放进去,然后用一个变量来记下每层节点的数量代码:ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) { ArrayList<Arr...

2019-07-20 21:34:51 137

原创 剑指Offer 059按之字形顺序打印二叉树

059按之字形顺序打印二叉树题目:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。方法:双栈分别存奇偶层思路:新建两个栈分别来存放奇偶层的二叉树节点,用一个变量%2为0还是1控制奇偶,奇数每个节点出来就遍历,然后把左右子树存到偶数栈里,遍历完后,把变量++,去遍历偶数栈,代码:public ...

2019-07-20 18:51:12 102

原创 剑指Offer 058对称的二叉树

058对称的二叉树请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。方法一:递归法思路:写一个递归函数,递归推出的条件就是left和right是否同时为true,然后在返回那里继续判断left,right的值是否相等,和子树是否相等代码:boolean isSymmetrical(TreeNode pRoot){ ...

2019-07-20 17:06:58 90

原创 剑指Offer 057二叉树的下一个结点

057二叉树的下一个结点题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。方法:定义法思路:中序遍历是先遍历左子树->根节点->右子树于是根据结点的不同情况,要分类讨论:1.如果二叉树为空,直接返回空2.如果是二叉树的根节点,有右子树的话,就找右子树的最左节点3.不是根节点,如果...

2019-07-20 15:29:07 119

原创 剑指Offer 056删除链表中重复的节点

056删除链表中重复的节点题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5方法:双指针法思路:创建两个指针cur,last分别指向头和头相邻后继结点,然后判断last是否跟后面的结点相同,不相同就移动两个指针,相同...

2019-07-20 14:36:22 112

原创 剑指Offer 055链表种环的入口结点

055链表种环的入口结点题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。方法:快慢指针法思路:设两个指针,分别为快慢指针,快指针每次进两格,慢指针每次进一格,如果有环存在,就会相交,然后让一个指针指向head头节点,两个指针每次走一格,直到两者相遇,就是环的入口结点代码:public ListNode EntryNodeOfLoop(ListNode ...

2019-07-20 02:11:49 111

原创 剑指Offer 054字符流中第一个不重复的字符

054字符流中第一个不重复的字符题目:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出:如果当前字符流没有存在出现一次的字符,返回#字符,有就输出当前字符方法:用Arraylist队列来记输入流,用HashMap来记字符出...

2019-07-20 01:21:52 130

原创 剑指Offer 053表示数值的字符串

053表示数值的字符串题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。方法:逐步筛选法思路:就需要对正负号,小数点,e的位置进行判断,然后判断除了0-9,正负号,小数点,e其他的都返回fa...

2019-07-20 00:40:36 186

原创 剑指Offer 052正则表达式匹配

052正则表达式匹配题目:请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"aba"均不匹配方法:递归法思路:1.如果字符串的第一个跟模式的第一个相同,模式第二个为时,...

2019-07-20 00:00:52 105

原创 剑指Offer 051构建乘积数组

051构建乘积数组题目:给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。方法:巧解法思路:用的是剑指Offer上的思路分别对下三角和上三角进行求解,下三角非常简单,就是Bn=Bn-1*An-1,从1到n-1递推下去上三角则需要从n-2开始倒退回0,相同的原...

2019-07-19 21:01:40 188

原创 剑指Offer 050数组中重复的数字

050数组中重复的数字题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。方法一:boolean数组标记法思路:新建一个于原数组长度相同的boolean数组,遍历后会标记为...

2019-07-19 19:25:58 112

空空如也

空空如也

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

TA关注的人

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