- 博客(51)
- 收藏
- 关注
原创 字节跳动面试真题&检验(含内推码)
面试真题&经验可前往下面链接查看:面试真题:https://www.nowcoder.com/contestRoom?mutiTagIds=665面试经验:https://www.nowcoder.com/search?type=post&query=%E5%AD%97%E8%8A%82%E8%B7%B3%E5%8A%A8%E9%9D%A2%E7%BB%8F附上内推信息:字节跳动校招内推码: DCYVVKC校招投递链接: https://job.toutiao.com/s
2020-10-28 01:03:09 573
原创 最长公共子序列动态规划
思路:通过一个二维数组存储两个字符串的最长公共子序列,int[][] maxLength,一维表示字符串的A的下标,二维表示字符串B的下标,值表示当前下标下的两个字符串的最长公共长度。重点:(自己顿悟)Xi和Yj表示字符串中的元素 maxLength[i][j] = 0; 当i=0或者j=0;maxLength[i][j] = maxLength[i-1][j-1]+1; 当i...
2018-10-24 21:03:39 184
原创 01背包动态规划
1.动态规划 什么是动态规划?动态规划就是将一个大问题不断向下拆分成小问题,直到拆分出的小问题可以求出其解,然后将小问题的解不断的向上合并,最终得到大问题的解决方案。2.01背包问题 一个旅行者有一个最多能装m公斤的背包,现在有n中物品,每件的重量分别是W1、W2、……、Wn,每件物品的价值分别为C1、C2、……、Cn, 需要将物品放入背包中,要怎么样放才能保证背包中物品的总价...
2018-10-24 20:18:56 236
原创 PriorityQueue主要源码解析
简介:PriorityQueue优先队列,是Queue的实现类,但不具有先进先出的特点,而是根据自然排序或者自定义排序进行内部排序的,自然排序下(如存储Integer,String)会根据从小到大排序,自定义排序可以根据自己定义的比较方法排序。1.Priority的底层是数组,初始化长度为11,下面是PriorityQueue的主要创建方法 private static final...
2018-10-24 14:32:24 204
原创 动态规划二
题目描述n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出 -1。输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含一个整数 n(1 <= n <= 100),接下来的一行包含 n 个整数 ...
2018-10-23 23:31:43 117
原创 动态规划一
题目描述牛牛和 15 个朋友来玩打土豪分田地的游戏,牛牛决定让你来分田地,地主的田地可以看成是一个矩形,每个位置有一个价值。分割田地的方法是横竖各切三刀,分成 16 份,作为领导干部,牛牛总是会选择其中总价值最小的一份田地, 作为牛牛最好的朋友,你希望牛牛取得的田地的价值和尽可能大,你知道这个值最大可以是多少吗?输入描述:每个输入包含 1 个测试用例。每个测试用例的第一行包含两个整数...
2018-10-23 23:30:39 130
原创 递归二
题目描述有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。测试样例:[[1,2,3],[4,5,6],[7,8,9]],3返回:[[7,4,1],[8,5,2],[9,6,3]]import java.util.Scanner; public class Main...
2018-10-23 23:29:19 103
原创 递归一
题目描述请把纸条竖着放在桌⼦上,然后从纸条的下边向上⽅对折,压出折痕后再展 开。此时有1条折痕,突起的⽅向指向纸条的背⾯,这条折痕叫做“下”折痕 ;突起的⽅向指向纸条正⾯的折痕叫做“上”折痕。如果每次都从下边向上⽅ 对折,对折N次。请从上到下计算出所有折痕的⽅向。给定折的次数n,请返回从上到下的折痕的数组,若为下折痕则对应元素为"down",若为上折痕则为"up".测试样例:1...
2018-10-23 23:28:09 100
原创 文件分类
package testIO;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Ma...
2018-10-23 08:55:18 419
原创 多线程编程:两个人A、B同时对一个账户取钱(A从ATM取,B从柜台取)
分析:1)账户的钱必须设置是静态的2)所有人操作的是同一个账户,操作的时候要加同步锁代码:package ThreadTest; import java.util.Objects; public class Bank { // 假设一个账户有1000块钱 static double money = 1000; // 柜台Counter取钱的方法 priva...
2018-10-20 10:28:05 7358
原创 多线程编程:三个售票窗口同时卖出20张票
分析:1)票数要使用一个静态值,才能所有窗口共享(线程)2)要使用线程同步锁,才不会有多个窗口同时卖出一张票代码:package ThreadTest;/* * 多个窗口同时卖出20张票 */public class Station extends Thread{ public Station(String name) { super(name); } st...
2018-10-20 09:45:51 8014
原创 快速排序--Java实现
快速排序:方法一:以第一个数为基数,定义两个数,一个记录从后往前遍历的下标,一个记录从前往后遍历的下标,先从后往前遍历,找到一个数比基数小的值,记录下标,在从前往后遍历,找到一个比基数大的数,记录下标,交换两个数的位置,再继续遍历,先从后往前,再从前往后,一直到两个记录下标的数相等,则交换基数和该下标对应的数的位置,即该下标的数变成了第一个数(因为是先从后往前的,所以该下标对应的数肯定是小于基...
2018-10-16 21:07:10 179
原创 插入排序--Java实现
插入排序:将每个元素插入到之前已经排好序的数组里面,直到全部插入。刚开始的时候,假设第一个元素(只有一个元素)已经排好序,从第二个元素开始,将第二个元素与第一个元素比较,若大于第一个元素,则插入到第一个后面,若小于,则将第一个元素后移(即后移到第二个元素的位置,第二个元素需要事先保存起来),然后将第二个元素放在第一个元素的位置上;接下来看第三个元素,和前两个元素比较(前两个元素已经排好序),从后往...
2018-10-16 20:57:00 80
原创 冒泡排序--Java实现
冒泡排序:从数组第一个元素开始,和他的下一个元素对比,如果大于就交换两个元素位置,然后再对比第二个元素和第三个元素,一趟下来,最大的元素就会被放到了数组的最后边;由于最大元素已经放到最右边了,所以第二次排序的时候可以不考虑最后的元素了,以此类推,第三次排除就可以不考虑最后两个元素了,直到不考虑所有元素,即排序完成。package Sort;/* * 冒泡排序 */public cla...
2018-10-16 20:50:23 82
原创 二分查找--Java实现
二分查找:前提是数组必须已经排好序,每次查询数组中间的数和目标数是否相等,相等就返回,如果大于目标数就查询左边的子数组,如果小于目标数就查询右边的子数组package Sort;/* * 二分查找 */public class SearchTest1 { public static void main(String[] args) { int[] arr={-1,0,1,2,...
2018-10-16 20:46:31 121
原创 Cookie和Session的区别
1.两个都是会话技术,Cookie是保存在客户端的,每次客户端发送请求都会将Cookie中的数据一起带上发送给服务器端,Session是保存在服务器端的;2.客户端可以通过禁止cookie来限制cookie,不过限制不了session;3.session可以存储任意的对象,而cookie只能存储String类型的对象;4.cookie有大小和个数限制,而session没有大小限制,与服...
2018-10-10 16:06:10 103
原创 网络协议--HTTP协议
1.http协议的长连接和短连接http1.0:短连接,客户端的每次请求都要建立一次单独的连接,在处理完本次请求后,就会自动释放连接;http1.1:长连接,在一个连接中可以处理多个请求,而且请求可以重叠运行,不需要等待一个请求结束就发送另一个请求。2.http常见的状态码:200 ok 客户端请求成功301 Moved Permanently(永久移除) ...
2018-10-10 15:52:03 227
原创 网络协议--TCP协议
TCP的三次握手:1.建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN:同步序列编号2.服务器收到syn包后,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),及SYN+ACK包,此时服务器进入SYN_RECV状态;3.客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),...
2018-10-10 14:27:50 215
原创 面试题15:二进制中1的个数
题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如,把9表示二进制是1001,有2位是1.因此,如果输入9,则该函数输出2.思路:定理:一个数n和n-1相与相当于将n的二进制表示的最右边的1变为0。为什么呢?因为n-1的二进制就是n的二进制的最右边的1变为0,最右边1后面的位都变为0,例如:n=11010000,n-1=11001111.所以,该题目可以利用该定理来做。...
2018-10-04 20:02:09 154
原创 面试题14:剪绳子
题目:给你一根长度为n的绳子,把绳子剪成m段(m、n都为整数,n>1,m>1)每段绳子长度为m1,m2,m3,...,mn,求m1*m2*m3*...*mn的最大乘积是多少?例如,绳子长度8,把绳子剪成2,3,3,此时乘积最大为18.思路一:动态规划,从小往大,从长度为1的绳子开始算最大乘积是多少,假如绳子为1时为f(1)=1,绳子为2时为f(2)=1,绳子为3时为f(3)=2,那...
2018-10-04 19:47:11 140
原创 面试题13:机器人的运动范围
题目:地上有一个m行n列的方格。一个机器人从坐标(0,0)的格子开始,每次可以向上下左右移动一格,但不能进入坐标的数位之和大于k的格子。例如,k=18,机器人可以进入格子(35,37),因为3+5+3+7=18,不能进入(35,38)的格子,因为3+5+3+8=19。请问机器人可以到达多少个格子?思路:回溯法解法:package question13;public class T...
2018-10-04 17:05:23 166
原创 面试题12:矩阵中的路径
题目:请设计一个函数,用来判断矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中任意一格开始,每一步可以上下左右移动一格,但不允许经过已经经过的格子。例如,在下面的3*4矩阵中含有“bfce”的路径,但不包含“abfb”的路径,矩阵如下:a b t gc f c sj d e h思路:采用回溯法,遍历所有格子,例如从...
2018-10-04 16:45:42 130
原创 面试题11:旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的一个最小元素。例如,数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。思路:由于该数组是排序数组的一个旋转,所以一般情况下,数组是由两个递增子数组组合的,本题就是由{3,4,5}和{1,2}组成,所以我们可以每次取其中间的元素,判断该元素是否大...
2018-10-03 21:14:44 155
原创 面试题10:斐波那契数列
题目一:求斐波那契数列的第n项。写一个函数,输入n,求斐波那契数列的第n项,斐波那契数列的定义如下:n=0,f(n)=0;n=1,f(n)=1;n>1,f(n)=f(n-1)+f(n-2).思路一:递归解决一:public class Test1 { public static void main(String[] args) { int num=findNum(3)...
2018-10-03 20:36:52 136
原创 面试题9:用两个栈实现队列
题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。思路:队列是先进先出的,栈是先进后出的,用stack1来存放每次新增的元素,删除元素就在stack2删除,不过每次删除前要判断stack2中是否没有元素,有元素就删除栈顶的,没有元素就将stack1的元素移动到stack2中。例如,st...
2018-10-03 20:15:00 122
原创 面试题8:二叉树的下一个节点
题目:给定一个二叉树和其中的一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别指向左、右子节点的指针,还有一个指向父节点的指针。图一思路:以图一为例分析,图一二叉树的中序序列为{d,b,h,e,i,a,f,c,g},分几种情况:1)一个节点有右子树,那么该节点的下一个节点就是右子树的最左子节点2)一个节点没有右子树,如果该节点是其父节点的左子节点,那么它的下一个...
2018-10-03 17:58:43 137
原创 面试题7:重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建图一所示的二叉树并输出它的头节点。二叉树节点定义如下:class BinaryTreeNode{ int value; BinaryTreeNode left...
2018-10-03 17:11:10 159
原创 面试题6:从尾到头打印链表
题目:输入一个链表的头节点,从尾到头反过来打印出每个节点的值,链表节点定义如下:class Node{ int value; Node next; public Node(int value,Node node) { this.value=value; this.next=node; } }思路一:利用栈先进后出的结构,将节点从头到尾存储入栈,再一个一个取出...
2018-10-03 15:57:39 103
原创 面试题5:替换空格
题目:请实现一个函数,把字符串中的每一个空格替换成"%20"。例如,输入"We are happy.",则输出"We%20are%20happy."。思路:如果从前往后替换,那后面的内容会被替换多次,时间复杂度为O(n^2)。从后往前替换,则每一个字符只要被替换1次,时间复杂度为O(1),先算出字符串中有多少空格,假如为n,从后往前遍历,当遍历的元素不是空格时,将内容往后移动n位,若遍历到一个...
2018-10-03 15:33:15 103
原创 面试题4:二位数组中的查找
题目:在一个二位数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样一个二维数组和一个整数,判断数组中是否含有该整数。例如:在一下数组中寻找数字71 2 8 92 4 9 124 7 10 136 8 11 15思路:由于数组是从左到右,从上...
2018-10-03 14:57:47 142
原创 面试题3:数组中重复的数字
题目一:在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3.思路一:利用hash表,新建一个相同长度的数组,遍历原数组,每遍历一个元素,判断新数组中对应的下标(例如元素为2,对应下标就为...
2018-10-03 11:03:29 169
原创 面试题2:实现Singleton模式
题目:设计一个类,我们只能生成该类的一个实例思路:1)不能开发类的构造方法,不然谁都可以通过构造方法搭建,所以将构造方法私有化;2)创建一个静态实例,根据需要创建一个实例,但也要将该实例私有化,防止外部获取该实例时实例还未创建;3)创建一个方法获取2中的静态实例。解法一:(只适合单线程)public class Singleton { private Singleton...
2018-10-03 10:25:26 125
原创 JVM系列二(补)--OutOfMemoryError
注:对内存结构不熟悉可以看:JVM系列二--JVM内存结构对内存结构清晰的认识同样可以帮助理解不同OutOfMemoryErrors:Exception in thread “main”: java.lang.OutOfMemoryError: Java heap space原因:对象不能被分配到堆内存中Exception in thread “main”: java.lan...
2018-09-16 17:15:08 117
转载 JVM系列二--JVM内存结构
JVM内存结构图JVM内存结构主要有三大块:堆内存、方法区和栈:1.堆(Heap):JVM中最大的一块区域,有年轻代和老年代组成,年轻代又细分为:EdenSpace,FromSpace和ToSpace。堆存储的都是对象,不存放基本类型和对象引用,只存放对象本身。JVM中只有一个堆区由所有线程共享。2.方法区(Method Area):和堆一样,线程共享。存储类信息(包括类中方法...
2018-09-15 10:58:42 171
转载 SVN的使用
myeclipse中svn安装(两种方式):https://blog.csdn.net/rentian1/article/details/52767708myeclipse提交项目到SVN中:https://jingyan.baidu.com/album/375c8e19d5d66c25f3a22947.html?picindex=1myeclipse中svn常见使用方法:https://www....
2018-07-10 13:31:47 157
原创 springmvc文件上传案例
1.引入jar包:commons-fileupload-1.2.2.jar,commons-io-2.0.1.jar(上传jar包),springmvc相关jar包等2.student实体类public class Student implements Serializable { private static final long serialVersionUID = -5304386891...
2018-07-10 11:23:32 184
原创 SpringMVC框架使用
一、框架基本使用1.引入jar包2.新建配置文件spring-mvc.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"...
2018-07-10 11:03:19 139
转载 Redis缓存
1.定义: Redis是Remote Dictionary Server(远程数据服务)的缩写,由意大利人antirez(Salvatore Sanfilippo)开发的一款内存高速缓存数据库,该软件使用C语言编写,它的数据模型为key-value。它支持丰富的数据结构(类型),比如String/List/Hash/Set/Sorted Set。可持久化(一边运行,一边把数据往硬盘中备份一份,防止...
2018-07-09 11:14:30 148
转载 nginx 反向代理与负载均衡
1.正向代理与反向代理:https://www.cnblogs.com/Anker/p/6056540.html 正向代理:相当一个跳板,代理访问资源。例如:我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。 反向代理...
2018-07-09 10:38:29 128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人