- 博客(67)
- 资源 (4)
- 收藏
- 关注
原创 2024年11月10日系统架构设计师考试题目回顾
案例分析试题一:质量属性基于描述填空是什么质量属性,常规题。(性能,功能,安全,可用等等)可用性而言,王工建议采用 ping/echo 机制检测,不过从资源使用角度,李工建议采用心跳机制。问 ping/echo 和 心跳机制的实现原理,心跳机制好在哪里? (大致是这么回事吧,不太记得了)试题二:系统设计ES 的分词器,Standard,Simple, Whitespace, Keyword 介绍四个分词器。Restful 风格如何实现前后端分离试题三: 数据库T1线程读数据,T2
2024-11-10 21:51:21 397 2
原创 程序员面试经典系列(九):字符串压缩
题目描述:假定有一种isSubstring方法,可检查一个单词是否为其他字符串的字串。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次isSubstring(比如,waterbottle是erbottle旋转后的字符串)示例:输入:s1 = "waterbottle", s2 = "erbottlewat"输出:True 输入:s1 = "aa", s2 = "aba"输出:False提示:字符串长度在[0, 100000]范围内。说明:你能只调用一
2021-10-15 00:00:00 251
原创 程序员面试经典系列(八):零矩阵
题目描述:编写一种算法,若M*N矩阵中某个元素为0,则将其所在的行与列清零。示例:给定 matrix = [ [0,2,3], [4,0,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [0,0,0], [0,0,0], [0,0,9]]解题思路直接遍历整个矩阵,只要发现值为0的元素,就将其所在的行与列清零。不过这种方法存在陷阱:在读取被清零的行或列时,读到的尽是0,于是所在行与列都得变成0,很快,整个矩阵的所有元素都会变为0。标记位置和清零需要分离。publ
2021-10-14 00:00:00 352
原创 程序员面试经典系列(七):旋转矩阵
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-10-13 00:00:00 393
原创 程序员面试经典系列(六):字符串压缩
题目描述:利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例:输入:"aabcccccaaa"输出:"a2b1c5a3"输入:"abbccd"输出:"abbccd"解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。提示字符串长度在[0, 50000]范围内。更多详细描述,可见官网解题思
2021-10-12 03:00:00 233
原创 程序员面试经典系列(五):一次编辑
题目描述:字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。示例:输入:first = "pale"second = "ple"输出: True输入: first = "pales"second = "pal"输出: False更多详细描述,可见官网解题思路暴力法可以解决,但是运行时间比较缓慢,这里不采用。两个字符串之间需要一次插入、替换或删除操作意味着什么?❑ 替换。设想一下诸如bale
2021-10-11 02:00:00 104
原创 程序员面试经典系列(四):回文排列
题目描述:给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。示例:输入:"tactcoa"输出:true(排列有"tacocat"、"atcocta",等等)更多详细描述,可见官网解题思路是否存在回文字符串,该字符串随机排列后,是输入的字符串。一眼过去,貌似没有思路。进一步分析,要形成回文串,字符串中的字符出现的次数,如果都是偶数可以符合;如果出现的次数是奇数,那只能有且仅有一个字
2021-10-10 00:00:00 157
原创 程序员面试经典系列(三):URL化
题目描述:编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)示例:输入:"Mr John Smith ", 13输出:"Mr%20John%20Smith"输入:" ", 5输出:"%20%20%20%20%20"提示:字符串长度在 [0, 500000] 范围内。更多详细描述,可见官网解题思路方法一:直接调
2021-10-09 00:00:00 130
原创 程序员面试经典系列(二):判定是否互为字符重排
题目描述:实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例:输入: s = "leetcode"输出: false 输入: s = "abc"输出: true限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分。更多详细描述,可见官网解题思路尽管该题是希望在不使用额外数据结构的情况下,但是可以先解决问题,再优化算法。方法一:借助Set集合,将字符串s所包含的元素全部放到Set集合中,如果最后Set集合的大小和字符串s的长度相
2021-10-08 00:00:00 287
原创 程序员面试经典系列(一):判定字符是否唯一
题目描述:实现一个算法,确定一个字符串s 的所有字符是否全都不同。示例:输入: s = "leetcode"输出: false 输入: s = "abc"输出: true限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分更多详细描述,可见官网解题思路方法一:将字符串s转成字符数组,对当前的字符数组存入set集合中,最后比较set集合与字符数组的长度是否相等即可。public boolean isUnique(String astr) {
2021-10-07 00:00:00 164
原创 面试题59-I:滑动窗口的最大值
题目: 给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。(本题出现于快手2020校园招聘秋招笔试算法C试卷)示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释: 滑动窗口的位置 最大值[1 3 -1] -3 5 3 ...
2021-10-06 13:52:49 175
原创 手撸代码系列(十九)--贪心专题
动态规划和贪心算法都是一种递推算法,均用局部最优解来推导全局最优解;是对遍历解空间的一种优化,当问题具有最优子结构时,可用动规,而贪心是动规的的特例。贪心:遵循某种规则,不断(贪心地)选取当前最优策略,最终找到最优解。题目一: 硬币问题问题描述: 有1元,5元,10元,50元,100元,500元的硬币各c1c_1c1, c5c_5c5, c10c_{10}c10, c50c_{50}c50, c100c_{100}c100, c500c_{500}c500枚;现在要使用这些硬币
2021-10-05 16:37:13 290 2
原创 2021完美世界春招java游戏开发笔试题(一)--最大小栈
自己实现一个栈,其中包含出栈函数pop();入栈函数push(int data);计算栈中当前最大值int max();计算当前栈中最小值int min()输入描述:输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。输出描述:为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)示例1输入7 2输出111算法思想:思路比较简单,直接上代码吧。java代码import java.util.Scan
2021-04-09 14:11:58 502
原创 手撸代码系列(十八)--进制转换
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数输入描述:输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。输出描述:为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)示例1输入7 2输出111算法思想:思路比较简单,直接上代码吧。java代码import java.util.Scanner;public class Main{ /** * 给定一个
2021-03-31 15:20:04 206 1
原创 谈谈你对OOM的理解
结论先行:常见的OOM(一)栈内存溢出:java.lang.StackOverflowError(二)堆内存溢出:java.lang.OutOfMemoryError: Java heap space(三)直接内存溢出:java.lang.OutOfMemoryError: Direct buffer memory(四)“垃圾回收上头”:java.lang.OutOfMemoryError: GC overhead limit exceeded(五)元空间溢出:java.lang.OutOfMem
2021-03-26 10:11:23 369
原创 手撸代码系列(十七)--利用栈检查括号是否匹配
设计一个算法判定括号是否正确配对(包括三种括号并且需要考虑大中小三种括号的嵌套顺序)。算法思想:出现左括弧,进栈出现右括弧,先判断栈是否为空(1)如果不为空,看是否匹配栈顶括号。 (a)如果匹配,栈顶元素出栈。最后检查栈是否空,如果为空,匹配成功,否则不匹配import java.util.Scanner;import java.util.Stack;public class Main{ public static void input(){ Scanne
2020-10-27 08:58:22 209
原创 手撸代码系列(十六)--二维数组的顺时针、逆时针的遍历
java语言实现二维数组的顺时针、逆时针的遍历// 逆时针打印数组public class Main { public static void main(String[] args) { int[][] matrix = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
2020-10-26 11:15:35 726
原创 计算机网络常见面试题
计算机网络常见面试题一、请简述TCP/UDP的区别 TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节制交给应用的通信传输。两者的区别大致如下: (1)TCP面向连接,UDP面向非连接即发送数据前不需要建立链接; (2)TCP提供可靠的服务(数据传输),UDP无法保证; (3)TCP面向字节流,UDP面向报文; (4)TCP数据传输慢,UDP数据传输快 (5)在一个TCP连接中,仅有两方进行彼此通信,因此广播和多播不能用于TCP
2020-10-26 10:59:03 881 2
原创 JVM调优
根据自己工程实践中的经验,总结了一些基础的jvm参数相关的使用。一. 请问如何盘点查看JVM系统默认值?参数的类型 (1)标配参数 java -version java -help java -showversion (2)X参数(了解) -Xint 解释执行 -Xcomp 第一次使用就编译成本地代码 -Xmixed 混合模式 **(3)XX参数 (重点!!!)** XX参数,又分两种,一种是Boolean类型,一种是设置值类型(key-value)。
2020-09-29 10:22:51 179
原创 集合类线程不安全问题
new ArrayList(); 底层new的是什么?数组凡是数组,一定有类型,请问new出来的数组是什么类型? // 超过10怎么扩容?Objiect类型既然是数组,必然在内存中占据连续的内存空间,请问初始值为多少?(java8为例) 10(懒加载的方式)源码中的构造方法: /** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() {..
2020-09-12 16:19:02 226
原创 保姆级教程系列(二)之MySQL高级教程
一、 MySQL存储引擎:什么是存储引擎?答:数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。查看存储引擎命令: show engines;或者 show variables like '%storage_engine%';MySQL 默认存储引擎是?InnoDB 是系统的默认引擎,支持可靠的事务处理。修改数据库临时的默认存储引擎
2020-09-12 11:09:00 329
原创 常见java基础面试笔试题
要想有机会面试,还得先进行笔试,也是考核专业基本功是否扎实。考点一:自增运算符public static void main(String[] args){ int a = 1; // for(int i = 0; i < 10; i++){ for(int i = 0; i < 10; ++i){ a = a++; } System.out.println(a); // 1}分析:...
2020-09-09 11:18:21 295
原创 索引数据结构之哈希、红黑树(Red Black Tree)、B树(B-Tree)、B+树详解
1、索引的本质:索引是帮助MySQL高效获取数据的排好序的数据结构2、可以做索引结构:(1)数组,依赖下标。(2)链表(3)哈希(4)二叉树(5)B树(6)B+树3、MySQL的索引为啥是B+Tree? 答题线路:全部遍历→Hash→二叉树→平衡二叉树→B-Tree→B+Tree零、全部遍历(没有索引)从头到尾扫描,根据实践经验,如果数据规模在2千条以下,可以直接查找,时间也是很快的,毕竟数据规模小。但是随着规模的扩大,是一定要建立索引,提高查找效率。比如没有目录的牛津字典,那查找起
2020-08-10 13:16:33 1880 2
原创 [Leetcode 每日一题] 复原IP地址
Level: Medium题目:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]思路每个整数位于 0 到 255 之间组成,所以对于第一个片段的选取,有三种情况:(1)选 “2” 这一个数字(2)选 “25” 这两个数字(3)选 “255” 这三
2020-08-09 11:08:18 311
原创 [Leetcode 每日一题] 恢复二叉搜索树
Level:Hard题目:二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。示例 1:输入: 1 1 / \ / \ 2 3 2 3[1,2,3], [1,2,3] // 先序遍历顺序输出: true进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗?示例 2:输入: 1 1 / \ 2
2020-08-08 11:04:21 149
原创 [蓝桥杯][2013年第四届真题]错误票据
题目描述每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。你的任务是通过编程,找出断号的ID和重号的ID。输入:要求程序首先输入一个整数N(N< 100)表示后面数据行数。接着读入N行数据。 每行数据长度不等,是用空格分开的若干个(不大于100个)正整数(不大于100000),请注意行内和行末可能有多余的空格,你的程序需要能处理这些空格。每个整数代表一个ID号。输出:
2020-08-07 15:08:45 128
原创 [Leetcode 每日一题]:相同的树
Level:Easy题目:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1 / \ 2 3 [1,2], [1,null,3] /
2020-08-07 10:42:50 122
原创 [蓝桥杯][2013年第四届真题]买不到的数目
题目描述小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。输入:两个正整数,表示每种包装中糖的颗数(都不多于1000) 输出:一个正整数,表示最大不能买到的糖数 样例输入:4
2020-08-06 17:08:38 617
原创 Docker学习指南
♦ 初识docker一、基本概念开发过程中,会接触到三个环境:开发环境、测试环境以及生产环境。以java项目为例,开发中使用 jdk8,而在测试中环境是 jdk7,难免会遇到bug。这种由环境引起的问题非常常见,最好的做法是将项目的运行环境全部移植给测试工程师。docker容器能够实现这一功能。● docker 是一个开源的应用容器引擎;● 该容器是完全使用沙箱机制,相互隔离;● 该容器性能开销极低。小结:docker是一种容器技术,解决软件跨环境迁移的问题二、安装 docker开发环
2020-08-06 11:11:39 177
原创 Git使用指南
Git是目前世界上最先进的分布式版本控制系统一、Git 与 SVN 区别点SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器那得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。缺点:必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就尴尬了。Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己
2020-08-04 22:20:52 148
原创 Github骚操作你会么
如果你是一枚Coder,但是你不知道Github,那么我觉的你就不是一个菜鸟级别的Coder,因为你压根不是真正Coder。我们可以在Github上寻找优秀的源码+对前沿技术框架进行深度学习+学习其他高手的代码+共享自己的研究成果什么是GitHubGitHub是一个代码版本控制和协作的托管平台。它可以让你和你的伙伴在任何地方一起进行项目开发。初识Github之一些常用词的含义watch:会持续收到该项目的动态。fork:复制某个项目到自己的Github仓库中。star:可以理解为点赞操作
2020-08-03 20:56:29 233
原创 Leetcode:125-验证回文串
题目 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出:true示例 2:输入:"race a car"输出:false题目分析 本题难点在于如何仅仅提取字符串中的字母和数字。通过正则表达式,将字符串中的其他字符去除。然后利用双指针进行亮亮比较。比较时注意将字母的大小写统一即可。Java代码/** * 给定
2020-07-21 10:35:41 126
原创 保姆级教程系列(一)之MySQL基础教程
第一天数据库的基本概念MySQL数据软件安装卸载配置SQL数据库的基本概念1. 数据库的英文单词: Database 简称:DB2. 什么是数据库? * 用于存储和管理数据的仓库。3. 数据库的特点: 1. 持久化存储数据的。其实数据库就是一个文件系统。 2. 方便存储和管理数据。 3. 使用了统一的方式来操作数据库。 -- SQL4.常见的数据库软件MySQL数据库软件1. 安装 2. 卸载 1. 去mysql的安装目录找到my.ini文件 * 复
2020-06-30 11:32:07 436
原创 爬虫实战入门教程(二)
第二天ProxyHandler处理器(代理)很多网站会检测某一段时间某个IP的访问次数(通过流量统计,系统日志等),如果访问次数多的不像正常人,它会禁止这个IP的访问。所以我们可以设置一些代理服务器,每隔一段时间换一个代理,就算IP被禁止,依然可以换个IP继续爬取。代理的原理:在请求目的网站之前,先请求代理服务器,然后让代理服务器去请求目的网站,代理服务器拿到目的网站的数据后,再转发给我们的代码。http://httpbin.org: 这个网站可以方便的查看http请求的一些参数。在代码中使用代
2020-06-18 19:33:52 255
原创 [蓝桥杯][2013年第四届真题]核桃的数量
题目描述小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是:各组的核桃数量必须相同各组内必须能平分核桃(当然是不能打碎的)尽量提供满足1,2条件的最小数量(节约闹革命嘛)输入:输入包含三个正整数a, b, c,表示每个组正在加班的人数,用空格分开(a,b,c< 30) 输出:输出一个正整数,表示每袋核桃的数量。样例输入:2 4 5样例输出:20题目分析:此题说通俗一点,就是求三个
2020-06-15 08:48:47 336
原创 爬虫实战入门教程(一)
第一天什么是网络爬虫:通俗理解:爬虫是一个模拟人类请求网站行为的程序。可以自动请求网页、并将数据收集起来,然后利用一定的规则提取有价值的数据。专业介绍:百度百科为什么用Python写爬虫程序:PHP 语言对多线程、异步支持不是很好,并发处理能力弱。爬虫是工具性程序,对速度和效率要求比较高。Java 语言生态圈很完善,是 Python 爬虫最大的竞争对手。但是 Java 语言本身很笨重,代码量很大。重构成本比较高,任何修改会导致代码大量改动。爬虫经常要修改采集代码。C/C++ 运行效率高。
2020-06-14 16:06:08 1002
原创 Leetcode:896-单调数列
题目 如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。当给定的数组 A 是单调数组时返回 true,否则返回 false。示例 1:输入:[1,2,2,3]输出:true示例 2:输入:[6,5,4,4]输出:true示例 3:输入:[1,3,2]输出:false题目分析Java代码
2020-06-01 20:51:38 162
原创 手撸代码系列(十五)--乘积最大子数组
题目:给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。题目分析:动态规划 我们先定义一个数组 dpMaxdpMaxdpMax,用 dpMax[i]dpMax[i]dpMax[i] 表示以第 iii 个元素
2020-05-18 09:34:50 137
历年蓝桥杯竞赛初赛复赛真题.zip
2020-03-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人