自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 春招——遭到了社会的毒打

先说一下自己的情况吧,本菜鸡从三月底开始有了找实习的想法,接着在招聘网站也有投递一些小公司,然而,一切都没有我想象的那么顺利,起初是很久都没有回应,我认为是今年疫情的原因,导致很多小公司减少了招聘(其实是菜鸡本菜的借口)。 到了三月30号收到了第一份面试邀请——美团,当时真的是激动的心、颤抖的手,只可惜当时没有准备好,面试官问的问题都很简单,自己心里也很清楚,但就不知...

2020-05-08 13:32:46 687 2

原创 测试常见面试

一、软件测试的生命周期:需求分析——测试计划——测试设计——测试执行——测试评估在需求分析阶段主要确认需求范围,测试计划是计划什么时间、什么人干什么事情,测试设计就是编写测试用例,测试执行就是执行测试用例,并且管理缺陷,测试评估就是编写测试报告。二、白盒测试、黑盒测试以及灰盒测试白盒测试:对代码进行测试,即测试接口、路径覆盖、边界、数据结构等。黑盒测试:不看代码,对软件的功能进...

2020-03-21 16:17:39 318

原创 二叉树笔试

一、查看两个二叉树是否相同 public boolean isSameTree(TreeNode p, TreeNode q) { if(p == null && q == null){ return true; } if(p == null || q == null){ r...

2020-03-13 15:34:11 199

原创 二叉树迭代遍历

一、前序遍历:思想:先创建一个Stack用来存放节点,此时Stack为空,先将root结点放入stack,前序遍历是先根后左再右,结合栈的先进后出的特点,再入栈的应该是右节点,因此判断若结点的右子树不为空则入栈,再判断左子树进行入栈,代码示例: public List<Integer> preorderTraversal(TreeNode root) { S...

2020-03-12 16:23:23 474

原创 图片服务器——实现阶段(Servlet实现)

首先在项目根目录下创建一个Servlet包,在这个包中创建两个Servlet类,一个用来完成图片的增删改查(ImageServlet),一个用来展示图片的详细内容(ImageShowServlet).一、创建 ImageServlet这个类的 doPost 对应插入图片,doGet 对应查看图片信息,doDelete 对应删除图片。public class ImageServlet...

2020-03-02 22:09:51 305

原创 图片服务器——实现阶段(数据库实现)

一、封装数据库操作创建DBUtil类,创建一个单例类辅助创建连接,其中URL为数据库连接字符串,用户名,密码都是固定的。private static final String URL = "jdbc:mysql://127.0.0.1:3306/image_server?characterEncoding=utf8&useSSL=true" private static fi...

2020-03-01 20:25:05 266

原创 图片服务器项目——设计阶段

一、背景:图床,解决博客或者 github 中插入图片的问题,实现给一个 URL 可以获得图片内容。二、重要知识点:1.简单 Web 服务器设计能力。2.Java 操作 MySQL 数据库。3.数据库设计。4.Restful 风格API。5.gson 的使用。6.强化 HTTP 协议的理解。7.Servlet 的使用。8.基于 md5 进行校验。9.软件...

2020-02-29 21:39:40 256

原创 Java基础语法

一、定义访问权限修饰符的关键字1.private:该成员变量或者方法是私有的,只有当前类对其具有访问权限,其他的类或者对象都没有权限访问。使用private修饰体现出了封装性,具体表现是类中的属性都用private修饰,对外提供 set 和 get 方法。2.protected:该成员变量或方法对该类自身、与它在同一个包中的其他类,在其他包中的该类的子类都可见。3.default:该成...

2020-02-23 17:46:34 102

原创 浅谈线程池

一、线程池的概念线程池做的工作主要是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建和启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等待,等其他线程执行完毕,再从队列中取出任务来执行。二、主要特点:线程复用,控制最大并发数,管理线程1)降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。2)提高响应速度。当任务到达时,任务可以不需要等到...

2020-02-17 17:49:53 112

原创 TCP协议

一、TCP协议格式: 16位源端口号 16位目的端口号 32位序号 32位确认序号 4位首部长度 保留6位 U R...

2020-02-15 20:50:54 130

原创 synchronized和 Lock 有什么区别?

1.原始构成:synchronized是关键字,属于JVM层面。monitornter(底层通过monitor对象来完成,其实wait/notify等方法也依赖于monitor对象只有在同步块或者方法中才能调wait/notify等方法)Lock是具体类(java.util.concurrent.Locks.Lock)是api层面的锁。2.使用方法sychronized 不需要用户...

2020-02-13 21:25:43 140

原创 每日一题15

题目描述:有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。解题思路:这里用到了集合ArrayLis...

2020-02-12 21:13:43 134

原创 Java 网络

一、http 响应码 301 和 302 代表的是什么?有什么区别?301、302都是HTTP状态码的编码,都代表着某个URL发生了转移。区别:301 redirect:301代表永久性转移(Premanently Moved)。 302 redirect:302代表暂时性转移(Temporarily Moved)。二、forward 和 redirect 的区别?Forwar...

2020-02-07 13:52:16 117

原创 Java 异常

一、throw 和 throws 的区别?throws 是用来声明一个方法可能抛出的所有异常信息,throws 是将异常声明但是不处理,而是将异常往上传,谁调用就交给谁处理,而throw则是指抛出的一个具体异常类型。二、final、finally、finalize有什么区别?final 可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是...

2020-02-06 11:16:25 80

原创 Java Web(上)

一、jsp 和 servlet 有什么区别?jsp 经编译后就变成了 Servlet(jsp 的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将jsp的代码编译成JVM能够识别的java类) jsp更擅长表现于页面显示,servlet更擅长于逻辑控制 Servlet中没有内置对象,jsp 中的内置对象都是必须通过 HttpServletRequest对...

2020-02-05 13:36:57 113

原创 Java 对象拷贝

一、为什么要使用克隆?想对一个对象进行处理,又想保留原有的数据进行接下来的操作,就需要克隆,Java语言中克隆针对的是类的实例。二、如何实现对象克隆?实现Cloneable接口并重写Object类中的clone()方法。 实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆。注意:基于序列化和反序列化实现的克隆不仅仅是深度克隆,更重要的是通过...

2020-02-04 11:20:43 110

原创 Java 反射

一、什么是反射?反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。Java 反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在运行时调用任意一个对象的方法二、什么时 java 序列化?什么情况下需要序列化?简单的说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是...

2020-02-03 10:32:05 83

原创 Java 多线程(下)

九、创建线程池有哪几种方法?newFixedThreadPool(int nThreads):创建一个固定长度的线程池,每当提交一个任务就创建一个线程,直到达到线程池的最大数量,这时线程规模将不再变化,当线程发生未预期的错误而结束时,线程池会补充一个新的线程。 newCachedThreadPool():创建一个可缓存的线程池,如果线程池的规模超过了处理需求,将自动回收空闲线程,而当需求增加...

2020-02-02 16:56:07 228

原创 Java 多线程(上)

一、并行和并发有什么区别?并行是指两个或者多个事件在同一时刻发生;而并发是指两个或者多个事件在统一时间间隔发生。 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。 在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。如haddoop分布式集群。所以并发编程的目标是充分利用处理器的每一个核,以达到最高的处理性。二、线程和进程的区别?进程是指程序运行和资源...

2020-02-01 15:18:20 153

原创 Java容器

十八、java 容器都有哪些?十九、Collection 和 Collections 有什么区别?java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection 接口在 Java 类库中有很多具体的实现。Collection 接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有 L...

2020-01-31 15:46:49 210

原创 Java基础(2)

九、如何将字符串反转?使用StringBuilder 或者 StringBuffer 的 reverse() 方法。 StringBuilder sb = new StringBuilder(); sb.append("abcdef"); System.out.println(sb.reverse()); StringBuff...

2020-01-30 15:28:38 146

原创 Java基础(1)

一、JDK和JRE有什么区别?JDK:Java Development Kit 的简称,java开发工具包,提供了java的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,java运行环境,为 java 的运行提供了所需环境。 具体来说 JDK 其实包含了 JRE,同时还包含了编译java源码的编译器javac,还包含了许多java程序调试和分析的...

2020-01-29 13:29:28 107

原创 每日一题14

题目描述:正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数解题思路1:暴力法public static void main(String[] args) { Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int b=s...

2019-12-01 22:17:23 162

原创 每日一题13

题目描述:链接:https://www.nowcoder.com/questionTerminal/1183548cd48446b38da501e58d5944eb来源:牛客网二货小易有一个W*H的网格盒子,网格的行编号为0~H-1,网格的列编号为0~W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:( ...

2019-11-27 21:33:31 147

原创 每日一题12

问题描述:n个数里出现次数大于等于n/2的数解题思路:关键方法:str.split(" "):按照空格切分字符串Integer.valueOf(str):将数字字符串转为int代码示例:import java.util.*;public class Main {public static void main(String[] args) { Scanner in ...

2019-11-24 20:43:42 112

原创 每日一题11

题目描述:链接:https://www.nowcoder.com/questionTerminal/02d8d42b197646a5bbd0a98785bb3a34来源:牛客网A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数....

2019-11-21 21:07:32 159

原创 每日一题10

题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解题思路:栈1用来作入队列,栈2用来作出队列,当栈2为空时,栈1全部出栈到栈2,栈2再出栈Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack&l...

2019-11-21 20:55:20 98

原创 每日一题09

题目描述:链接:https://www.nowcoder.com/questionTerminal/9aaea0b82623466a8b29a9f1a00b5d35来源:牛客网有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积...

2019-11-18 21:20:20 128

原创 每日一题08

题目描述:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”解题思路1:最简单的思路就是两层循环遍历,将第一个字符串称为字符串1,将要删除的字符串被称为字符串2,每遍历到字符串2中的一个字符,就在字符串1中找到相同的字符,找到之后删除它,并将字符串1后面的...

2019-11-17 20:49:42 103

原创 每日一题07

题目描述:链接:https://www.nowcoder.com/questionTerminal/61cfbb2e62104bc8aa3da5d44d38a6ef来源:牛客网小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不会购买。解题思路...

2019-11-15 21:45:05 103

原创 每日一题06

题目描述:对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。思路:1)碰到“)”开始弹出栈顶的“(”,如果此时栈为null,则返回false.2)碰到其他内容直接返回false.3)字符串结尾时,栈非空返回false.private static boolean isBracket(Str...

2019-11-14 22:02:04 76

原创 每日一题05

题目描述:读入一个字符串str,输出字符串str中的连续最长的数字串解题思路:使用一个空字符串保存结果,先将目标字符串转换为字符数组,遍历字符数组private static String maxString(String n){ int count=0; char[] s=n.toCharArray(); String result="";...

2019-11-12 15:15:43 113

原创 每日一题04

题目描述:链接:https://www.nowcoder.com/questionTerminal/bb06495cc0154e90bbb18911fd581df6来源:牛客网有一组数,对于其中任意两个数组,若前面一个大于后面一个数字,则这两个数字组成一个逆序对。请设计一个高效的算法,计算给定数组中的逆序对个数。给定一个int数组A和它的大小n,请返回A中的逆序对个数。保证n小于等于50...

2019-11-11 19:18:44 156

原创 每日一题03

题目描述:有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?解...

2019-11-10 21:08:59 517

原创 每日一题02

题目描述:有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。在看到这道题的第一反应就是如下代码,虽然牛客上提交过去了,但是这是投机取巧的方法,主要是忘记了快速排序的思想。​​public class Finder { public int findKth...

2019-11-10 18:49:13 102

原创 每日一题01

链接:https://www.nowcoder.com/questionTerminal/9d1559511b3849deaa71b576fa7009dc来源:牛客网问题描述:“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符...

2019-11-08 19:47:11 158

原创 多线程(2)

多线程的状态转移图线程的七种状态:NEW,RUNNABLE,RUNNING,WAITING,TIMED_WAITING,TERMINATED,BLOCKED线程安全线程不安全:线程没有按照预期正常工作。线程不安全的原因:共享资源/数据/变量①私有数据不需要考虑线程安全问题,共享数据才是线程不安全的罪魁祸首②线程之间会因为调度的原因,穿插着进行,数据的方法有一定的特殊规则(调度交叉执行...

2019-11-08 19:14:04 87

原创 多线程(1)

进程和线程的区别:进程是资源分配的最小单位,进程是CPU调度的最小单位,线程是一个进程中的执行场景,一个进程可以启动 多个线程。多线程的作用:提高应用程序的使用率,让人感觉到多个线程同时并发执行。线程和线程共享堆内存和方法区内存,栈内存是独立的,一个线程一个栈内存。Java程序的运行原理:Java命令会启动JVM,等于启动了一个应用程序,表示启动了一个进程,该进程会自动启动一个“主线程...

2019-11-07 17:35:34 81

原创 异常处理

Java的异常机制主要依赖于try,catch,finally,throw和throws五个关键字。try:后紧跟一个花括号括起来的代码块(花括号不可以省略),简称try块,它里面放的是可能引发异常的代码块。catch:后面对应异常类型和代码块,用于表明该catch块用于处理这种类型的代码块。finally:多个catch块后还可以跟一个finally块,finally块用于回收在tr...

2019-10-30 14:23:15 185

原创 最后一个单词长度

力扣题目描述为:给定一个仅包含大小写字母和空格' '的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0。有两种解法分别为:第一种思路:将字符串使用空格分隔符分割成字符串数组,然后获取数组中最后一个元素的长度 public int lengthOfLastWord(String s) { if(s==null){ ...

2019-10-24 16:59:25 114

空空如也

空空如也

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

TA关注的人

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