自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 测试开发面经(百度,好未来,声网,SHEIN,中科创达)

面经这几天面的公司总结一下:1:个人介绍(多练,1分多钟简洁明了)2:项目(熟悉自己的项目)3:网络:UDP和TCP的区别,使用场景(重要,每一面都问)三次握手和四次挥手DNS域名解析协议响应码URL进入浏览器都进行了那些活动http是那层协议,传输依靠什么,有无状态cookie和session的区别,没有cookie,session可以使用不4:操作系统即线程进程和线程的区别死锁的概念以及死锁的产生线程的创建方式(重要)那些数据结

2021-08-14 22:09:55 5041 16

原创 用户管理系统JavaEE

用户管理系统代码列表数据库实现项目配置文件后端接口界面展示做项目前先配置好环境,使用MyBatis 框架通过 XML 和注解来配置实体映射文件和Mapper接口。代码列表数据库实现drop database if exists userdb;create DATABASE if not exists userdb character set utf8;use userdb;drop table if exists userinfo;create table `userinfo` (

2021-07-27 22:25:17 1399 2

原创 JavaEE+Mybatis实现个人博客系统

个人博客系统注册页面登录页面个人文章列表文章展示全部文章列表编写文章代码:https://gitee.com/qq2425875237/study/tree/master/mybolg

2021-07-21 18:56:58 462

原创 (动态规划)面试常考的最长公共子序列和最长公共子串

最长公共子序列和最长公共子串最长公共子串题目描述给定两个字符串str1和str2,输出两个字符串的最长公共子串题目保证str1和str2的最长公共子串存在且唯一。示例1输入:“1AB2345CD”,“12345EF”返回值:“2345”题解:定义一个 max记录最长公共子串的最大长度,还需定义一个end记录当前字符串的下标值,这样最长连续子串就可以通过str2.substring(end-max+1,end+1)得到。import java.util.*;public cl

2021-07-03 16:25:13 228 1

原创 笔试常考超详细设计LRU缓存结构,一看就会!!!

设计LRU缓存结构设计LRU缓存结构示例1输入: [[1,1,1],[1,2,2],[1,3,2],[2,1],[1,4,4],[2,2]],3返回值: [1,-1]说明:第一次操作后:最常使用的记录为(“1”, 1) 第二次操作后:最常使用的记录为(“2”, 2),(“1”, 1)变为最不常用的第三次操作后:最常使用的记录为(“3”, 2),(“1”, 1)还是最不常用的第四次操作后:最常用的记录为(“1”, 1),(“2”,2)变为最不常用的第五次操作后:大小超过了3,所以移除此时最

2021-06-27 00:07:11 294 2

原创 基于 Java Servlet 构建的图片服务器(项目)

基于 Java Servlet 构建的图片服务器背景需求图床, 解决 github / 博客中插入图片的问题. 给定一个 url, 能够获得到图片内容.这里写目录标题基于 Java Servlet 构建的图片服务器前置知识数据库接口前置知识Servlet的作用?当客户端(浏览器)访问到一个URL时从后端获取HTML+CSS+JS的前端数据,作为代码运行在浏览器上,通过JS写的AJAX代码发送HTTP请求给Servlet。Servlet重写doXXX(HttpServletReques

2021-06-23 20:43:20 345 2

原创 图解面试中常问的HashMap的线程不安全问题(JDK1.7&JDK1.8)

HashMap的线程不安全问题JDK1.7JDK1.8JDK1.71》JDK1.7是头插法,导致死循环先看源码1)步骤一2)步骤二3)步骤三4)步骤四JDK1.82》JDK1.8是尾插法,会有数据覆盖问题这是jdk1.8中HashMap中put操作的主函数,注意第6行代码,如果没有hash碰撞则会直接插入元素。如果线程A和线程B同时进行put操作,刚好这两条不同的数据hash值一样,并且该位置数据为null,所以这线程A、B都会进入第6行代码中。假设一种情况,线程A进入后还

2021-06-03 22:47:44 734 11

原创 面试中常问的锁你都知道吗?

(1)乐观锁VS悲观锁1》乐观锁:他认为一般情况下不会出现问题,所有他在使用的时候不会加锁,只有在数据修改的时候才会判断有没有锁竞争,如果没有就会直接修改数据,如果有则会返回失败信息给用户自行处理。乐观锁的经典事项:CAS(Compare And Swap)对比并且替换1)CAS实现(V【内存中的值】,A【预期的旧值】,B【新值】)每次把V和A进行对比,如果V==A则将V修改为B,如果不相等,则不修改。进行自旋对比和替换。2)CAS实现原理是什么?public final n

2021-06-01 23:40:41 462 5

原创 那些面试中必会的多线程问题(一)!!快看这!!

那些面试中的线程问题(一)进程与线程线程创建线程状态非线程安全问题和锁线程池线程不安全解决方案ThreadLocal进程与线程1:并行编程VS并发编程并行:同一时间点多个程序同时执行并发:所有程序轮流执行2:进程VS线程(1)进程的组成单位是:PID状态(新建,就绪,运行中,终止,阻塞)优先级一组指针(资源)记账信息(解决资源分配不均的问题)上下文(当没有时间片这时候需要保持状态等待下次执行,这个暂存状态和后面运行状态就是一个上下文)(2)当把一个可执行文件加载到内存中,运行起

2021-05-30 15:21:36 407 7

原创 经典面试题--在浏览器中输入URL之后会发生什么?

当在浏览器中输入URL之后会发生什么事情?1.URL进行解析,浏览器会判断当前输入的URL是否正确(URL为什么要进行解析:因为网络标准规定了URL只能是字母和数字,还有一些其他的特殊符号(比较常见的就是不包括%,“”),而且如果不转义就会会出现歧义。URL的编码规则是utf-8,保证编码格式使用encodeUrlComponent)2:浏览器会判断当前的URL有没有缓存(当项目中改动了代码但是还是原来的界面就是URL缓存,解决办法:ctrl+R强制刷新;URL加一个参数)3:DNS服务器

2021-05-10 22:36:13 822 1

原创 如何解决MYSQL order by与limit语句的分页数据重复

order by与limit语句的分页数据重复问题描述:在MYSQL中我们通常会使用limit来进行翻页查询,比如limit(0,10)表示列出的第一页的10条数据,但是,当limit遇到order by的时候,可能会出现翻到第二页的时候,竟然又出现第一页的记录。具体如下????:select post_title,pose_date from post where post_status=publish order b view_count desc limit 5,5使用上述SQL查询

2021-05-04 11:54:45 327 1

原创 get和post的区别及状态码

get和post的区别GET在浏览器回退时是无害的,而POST会再次提交请求。 GET产生的URL地址可以被加书签,而POST不可以。GET请求会被浏览器主动隐藏,而POST不会,除非手动设置。 GET请求只能进行url编码,而POST支持多种编码方式。GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。GET请求在URL中传送的参数是有长度限制的,而POST么有。 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。GET比POST更不安

2021-04-28 10:43:52 359

原创 超详细TCP/UDP面试常考(八大特性)

TCP/IP传输层1.端口号(Port)标识了一个主机上进行通信的不同的应用程序;找到一个应用程序:端口号在TCP/IP协议中, 用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信。0 - 1023: 知名端口号, HTTP, FTP, SSH等这些广为使用的应用层协议, 他们的端口号都是固定的.1024 - 65535: 操作系统动态分配的端口号. 客户端程序的端口号, 就是由操作系统从这个范围分配的端口号的最大范围65535(不可改

2021-04-25 19:49:50 254 1

原创 使用idea创建web项目并配置(超详细)

使用idea创建web项目创建webapp项目maven添加引用添加配置(servlet,tomcat,jQuary)创建webapp项目maven添加引用添加配置(servlet,tomcat,jQuary)web.xml里的代码删除并将这段代码复制<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="ht

2021-04-18 19:11:57 533

原创 剑指offer--整数中1出现的次数

整数中1出现的个数题目求出1-13的整数中1出现的次数,并算出100-1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。解析case 1: cur=02 3 0 4千位和百位可以选00 01 02…22 十位可以取到1( 形如[00|01…|22]1[0-9] 都

2021-03-29 11:32:26 72

原创 通过HTML,js,css设计计算器

计算机的设计使用HTML,js,css以盖房子类比,必须定义这个房子有多长、多宽,每一块面积如何规划,例如哪里是卫生间、哪里是饭厅、哪里是卧室。将这些定义好,网页也就有了最基本的样子。总之,HTML 就是用来布局网页中的每一个元素的。CSS 中的“样式”就是指外观。还以盖房为例,定义好了各个空间,房子也盖起来了,但还要装修,例如给客厅贴壁纸、给卧室铺地板。CSS 就是起装修作用的,要和 HTML —起配合使用。JavaScript 是一种脚本语言,它在网页中的作用是控制 HTML 中的每一个元

2021-03-28 13:25:36 220

原创 剑指offer--数值得整数次方

数值的整数次方题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0解析:这个题并不难主要在于思考条件,整理思路public class Solution { public double Power(double base, int exponent) { if(base==0&&exponent<=0){ throw n

2021-03-25 18:01:28 89

原创 剑指offer--构建乘积数组

构建乘积数组题目给定一个数组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]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)对于A长度为1的情况,B无意义,故而无法构建,因此该情况不会存在。输入[1,2,3,4,5]返回值[120,60,40,30,24]解析:剑指的思路:

2021-03-18 18:16:50 59

原创 剑指offer--数组中重复数字

数组中重复的数字题目在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。没有重复的数字返回-1。解析:1:使用HashSet:public int duplicate (int[] numbers) { // write code here if(numbers

2021-03-18 17:14:15 84

原创 剑指offer--不用加减乘除做加法

不用加减乘数做加法题目写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解析:两个数异或:相当于每一位相加,而不考虑进位;两个数相与,并左移一位:相当于求得进位;将上述两步的结果相加public class Solution { public int Add(int num1,int num2) { if(num2==0){ return num1; } return Add(num1

2021-03-17 18:43:54 61

原创 剑指offer--平衡二叉树

平衡二叉树题目输入一棵二叉树,判断该二叉树是否是平衡二叉树。输入{1,2,3,4,5,6,7}返回值true解析:平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。思路:判断一棵树为二叉树首先需要求出他左右子树的高度通过左右子树的高度相减得到的结果来判断,当结果的绝对值小于等于与1是成立。import java.util.*;public class Solution {

2021-03-17 18:10:13 44

原创 剑指offer--二叉树的深度

二叉树的深度题目输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。示例1输入{1,2,3,4,5,#,6,#,#,7}返回值4解析此题属于二叉树的经典例题:主要的方法在于递归思想:(大问题化小问题)求左边子树的深度和右边子树的深度,比较大小,最后加上根节点,最后结果就是最大深度。import java.util.*;public class Solution { public int TreeDepth

2021-03-17 17:33:17 69

原创 剑指offer--第一次只出现一次的字符

-第一次只出现一次的字符题目在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)示例1输入“google”返回值4解析:先在hash表中统计各字母出现次数,第二次扫描直接访问hash表获得次数import java.util.*;public class Solution { public int FirstNotRepeatingChar(Strin

2021-03-15 18:28:07 47

原创 剑指offer --连续子数组最大和

连续子数组最大和题目:输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n).解析:1:此题采用动态规划:使用动态规划F(i):以array[i]为末尾元素的子数组的和的最大值,子数组的元素的相对位置不变F(i)=max(F(i-1)+array[i] , array[i])res:所有子数组的和的最大值res=max(res,F(i))如数组[6, -3, -2, 7, -15, 1, 2, 2]初始

2021-03-15 18:06:14 89

原创 剑指offer 第28题数组中有一个数字出现的次数超过数组长度的一半(摩尔+排序+哈希)

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字题目数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解析:该题可以有多种方法进行解答:1:借助HashMapimport java.util.*;public class Solution { public int MoreThanHalfNum_Solution

2021-03-15 16:44:21 164

原创 杨辉三角(java)

杨辉三角https://leetcode-cn.com/problems/pascals-triangle/杨辉三角给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]解析:此题使用list数据结构:杨辉三角的特性是每行第一个和最后一个数字均为1;下一行数字是其上方前一行相邻数字相加;使用List保存每

2021-03-04 21:28:44 194 2

原创 剑☞offer(第六题)--旋转数组的最小位置

旋转数组的最小位置题目题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 示例1 输入 [3,4,5,1,2] 返回值 1解析:这个题的考点在于二分法的运用旋转之后的数组实际上可以划分成两个有序的子数组:前面子数组的大小都大于后面子数组中的元素注意到实际上最小的元素就是两个子数组的分界线。本题目给出的数组一定程度上是排序的,因此我们试着用二分查

2021-03-04 20:13:58 63 1

原创 根据前序遍历与中序遍历,中序遍历与后序遍历构造二叉树

思路:用前序或者后序遍历找根,用中序遍历确定左右树。1.找到根2:在中序遍历当中找到根的位置,此时根的左边是作数右边是右树。1.根据一棵树的前序遍历与中序遍历构造二叉树。class Solution { public int preIndex=0; public TreeNode buildTreeChild(int[] preorder, int[] inorder,int inbegin,int inend) { if(inbegin>inend){

2021-02-04 21:59:50 229

原创 认识Java异常及处理

所谓异常指的就是程序在 运行时 出现错误时通知调用者的一种机制.注意关键字:运行时!!!有些错误是这样的, 例如将 System.out.println 拼写错了, 写成了 system.out.println. 此时编译过程中就会出错, 这是 "编译期" 出错.而运行时指的是程序已经编译通过得到 class 文件了, 再由 JVM 执行过程中出现的错误.

2021-01-20 17:10:32 114

原创 字符串的左旋转java

字符串的左旋转字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = “abcdefg”, k = 2输出: “cdefgab”示例 2:输入: s = “lrloseumgh”, k = 6输出: “umghlrlose”class Solution { public String reverseLeftWord

2021-01-19 15:31:09 212

原创 图书馆系统(Java)

图书馆系统用户package user;import book.BookList;import operation.IOperation;public abstract class User { public String name; public IOperation[] operations; public User(String name){ this.name=name; } public abstract int menu()

2021-01-18 18:45:30 2018 3

原创 剑指offer 16题合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if(l1==null&&l2==null){ return null; } if(l1==null){ return l2;

2021-01-17 17:36:51 49

原创 最长公共前缀(Java字符串)

最长公共前缀class Solution { public String longestCommonPrefix(String[] strs) { //字符数组长度为零 if(strs.length==0){ return ""; } //设第一个字符串为标记 String s=strs[0]; //遍历数组 for(String string:strs){

2021-01-17 15:29:22 439

原创 判断一个链表是否有回环返回第一个回环节点

定义一个快慢指针,快指针一次走两步,慢指针一次走一步,进入循环,此时结束循环有两种情况,一种是没有环,一种是当快慢指针相遇时,结束循环。因为快指针是慢指针的两倍,则当二指针相遇时快指针走了慢指针的两倍,设进入环时的路程为X,慢指针进入环后走了L,即当二人相遇时,快指针又走了X+2L的路程,则快指针在离入环点环还有X.public Node theListNode(){if(headnull){return null;}Node fast=this.head;Node slow=this.head

2021-01-09 18:45:31 125

原创 实现反转链表

实现反转链表class Solution { public ListNode reverseList(ListNode head) { if(head==null){ return null; } ListNode cur=head; ListNode newHead=null; ListNode prev=null; while(cur!=null){

2021-01-08 12:36:11 46

原创 重载(overload)重写(override)

重载(overload)重写(override)重载是针对同一个类:1)方法名必须相同。2)方法的参数列表一定不同。3)方法的返回值不影响重载(返回值类型可相同也可不同)也就是针对不同情况写的不同的方法。Class Test{public static void main(String[] args){int a=2;int b=3;int c=1.2;int d=1.3;int ret=add(a,b);int ret2=add(c,d);System.out.println(

2020-12-29 15:13:51 622 1

原创 Java引用类型(数组)及JVM的介绍

引用类型1)什么是内存?内存就是内存储器所能存储的信息量,也可以理解为一个宿舍楼有很多个宿舍,每个宿舍的大小是1Byte,每个房间上面都有一个门牌号,这个门牌号就是地址。2)什么是引用?引用相当于一个“别名”,也可以理解为一个指针。创建一个引用只是相当于创建了一个很小的变量,这个变量保存了一个整数,这个整数表示内存中的一个地址。针对int[] arr=new int[]{1,2,3};内存布局如下:A:当我们创建new int[]{1,2,3}的时候,相当于创建了一块内存空间来保存三个int。

2020-12-29 15:11:42 235 3

原创 Java数组拷贝的四种方法

数组的拷贝数组的拷贝共有4种方法:for循环 clone() System.arraycopy() Arrays.copyof()1:for循环:--拷贝数值类型:int[] array1 = {1,2,3}; int[] array2 = new int[3]; for (int i = 0; i < array1.length; i++) { array2[i] = array1[i]; } System.out.println("拷贝数值类型:"); Sys

2020-12-29 15:03:05 169

原创 JAVA逻辑控制(循环语句)+经典例题

逻辑控制1:顺序结构:按照代码书写的顺序一行一行的执行,如果调整代码的书写顺序,则执行顺序也发生变化。2:分支结构:(1)if语句:基本语法形式1:if(布尔表达式){//条件满足时执行代码}基本语法形式2:if(布尔表达式){//条件满足时执行代码}else if(布尔表达式){//条件满足时执行代码}else{ //写代码时一定要注意大括号,否则造成悬垂else//条件不满足时执行代码}例:判断奇偶数(%2

2020-12-08 22:34:46 273

原创 各式各样的运算符(Java)

运算符1:算术运算符:(1)基本四则运算符:+ -* / %其中特别注意/ %:A)int/int的结果还是int,如果要算小数位则使用double来计算。B)0不能作为除数。使用时会出现算术异常.C)%表示取余,不仅可以对int求模,也能对double来求模。eg:System.out.println(11.5%2.0);//1.5(2)增量赋值运算符+= -= *= /= %=a+=1;//a=a+1;(3)自增自减运算符++ --;a++表示先给a赋值再加1;++a

2020-12-05 23:08:18 139

空空如也

空空如也

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

TA关注的人

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