05 2020 档案
摘要:删除排序数组中的重复项 给定一个排序数组,你需要在** 原地** 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回
阅读全文
摘要:二叉树的层序遍历 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例: 二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] 广度优先搜索
阅读全文
摘要:有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "
阅读全文
摘要:基本计算器 实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。 示例 1: 输入: "1 + 1" 输出: 2 示例 2: 输入: " 2-1 + 2 " 输出: 3 示例 3: 输入: "(1+(4+5+2
阅读全文
摘要:[toc] "滑动窗口最大值" 给定一个数组 ,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动窗口中的最大值。 进阶: 你能在线性时间复杂度内解决此题吗? 示例: 提示: `1 = k 1,说明窗口大小正好
阅读全文
摘要:[toc] 谈谈你对Java平台的理解? 典型回答 Java 本身是一种面向对象的语言,最显著的特性有两个方面, 一是所谓的“ 书写一次,到处运行 ”(Write once, run anywhere),能够非常容易地获得跨平台能力; 另外就是 垃圾收集 (GC, Garbage Collectio
阅读全文
摘要:[toc] "用队列实现栈" 使用队列实现栈的下列操作: push(x) 元素 x 入栈 pop() 移除栈顶元素 top() 获取栈顶元素 empty() 返回栈是否为空 注意: 你只能使用队列的基本操作 也就是 , , , 和 这些操作是合法的。 你所使用的语言也许不支持队列。 你可以使用 li
阅读全文
摘要:[toc] 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统, 如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。 给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下, 能够偷窃
阅读全文
摘要:[toc] 0 1 背包问题 给你一个可装载重量为 的背包和 个物品,每个物品有重量和价值两个属性。其中第 个物品的重量为 ,价值为 ,现在让你用这个背包装物品,最多能装的价值是多少? 举个简单的例子,输入如下: 算法返回 6,选择前两件物品装进背包,总重量 3 小于 ,可以获得最大价值 6。 递归
阅读全文
摘要:[toc] 数据中心 数据中心是一个大杂烩,几乎要用到前面学过的所有知识。 前面讲办公室网络的时候,我们知道办公室里面有很多台电脑。如果要访问外网,需要经过一个叫 网关 的东西,而网关往往是一个路由器。 数据中心里面也有一大堆的电脑,但是它和咱们办公室里面的笔记本或者台式机不一样。数据中心里面是服务
阅读全文
摘要:[toc] DNS DNS服务器 在网络世界,也是这样的。你肯定记得住网站的名称,但是很难记住网站的IP地址,因而也需要一个地址簿,就是 DNS服务器 。 由此可见,DNS在日常生活中多么重要。每个人上网,都需要访问它,但是同时,这对它来讲也是非常大的挑战。一旦它出了故障,整个互联网都将瘫痪。另外,
阅读全文
摘要:[toc] URI URI, 统一资源标识符 ( U niform R esource I dentifier)。因为它经常出现在浏览器的地址栏里,所以俗称为“网络地址”,简称“网址”。 严格地说,URI 不完全等同于网址,它包含有 URL 和 URN 两个部分,在 HTTP 世界里用的网址实际上是
阅读全文
摘要:[toc] HTTP传输过程 HTTP 协议是运行在 TCP/IP 基础上的,依靠 TCP/IP 协议来实现数据的可靠传输。所以浏览器要用 HTTP 协议收发数据,首先要做的就是建立 TCP 连接。 经过 SYN、SYN/ACK、ACK 的三个包之后,浏览器与服务器的 TCP 连接就建立起来了。 浏
阅读全文
摘要:[toc] UDP协议 TCP和UDP有哪些区别? 一般面试的时候我问这两个协议的区别,大部分人会回答,TCP是面向连接的,UDP是面向无连接的。 什么叫面向连接,什么叫无连接呢?在互通之前,面向连接的协议会先建立连接。例如,TCP会三次握手,而UDP不会。为什么要建立连接呢?你TCP三次握手,我U
阅读全文
摘要:[toc] 从物理层到MAC层 第一层(物理层) 电脑连电脑要配置这两台电脑的IP地址、子网掩码和默认网关。要想两台电脑能够通信,这三项必须配置成为一个网络,可以一个是192.168.0.1/24,另一个是192.168.0.2/24,否则是不通的。 两台电脑之间的网络包,包含MAC层吗? 当然包含
阅读全文
摘要:[toc] ifconfig 查看IP地址,在Windows上是 ,在Linux上是 。Linux上还有ip addr可以查看IP地址 想象一下,你登录进入一个被裁剪过的非常小的Linux系统中,发现既没有ifconfig命令,也没有ip addr命令,你是不是感觉这个系统压根儿没法用?这个时候,你
阅读全文
摘要:[toc] 网络为什么要分层? 这里我们先探讨第一个问题,网络为什么要分层?因为,是个复杂的程序都要分层。 理解计算机网络中的概念,一个很好的角度是,想象网络包就是一段Buffer,或者一块内存,是有格式的。同时,想象自己是一个处理网络包的程序,而且这个程序可以跑在电脑上,可以跑在服务器上,可以跑在
阅读全文
摘要:[toc] 单例模式 为什么要使用单例? 单例设计模式(Singleton Design Pattern)理解起来非常简单。一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。 对于单例的概念,没必要解释太多,你一看就能明白。我们重点看一下,为
阅读全文
摘要:[toc] 总线 降低复杂性:总线的设计思路来源 计算机里其实有很多不同的硬件设备,除了 CPU 和内存之外,我们还有大量的输入输出设备。可以说,你计算机上的每一个接口,键盘、鼠标、显示器、硬盘,乃至通过 USB 接口连接的各种外部设备,都对应了一个设备或者模块。 如果各个设备间的通信,都是互相之间
阅读全文
摘要:[toc] 存储器层次结构全景 理解存储器的层次结构 在有计算机之前,我们通常把信息和数据存储在书、文件这样的物理介质里面。有了计算机之后,我们通常把数据存储在计算机的存储器里面。而存储器系统是一个通过各种不同的方法和设备,一层一层组合起来的系统。下面,我们把计算机的存储器层次结构和我们日常生活里处
阅读全文
摘要:[TOC] CISC和RISC CPU 的指令集里的机器码是固定长度还是可变长度,也就是 复杂指令集 (Complex Instruction Set Computing,简称 CISC)和 精简指令集 (Reduced Instruction Set Computing,简称 RISC)这两种风格
阅读全文
摘要:[TOC] 冒险和预测 流水线设计需要解决的三大冒险,分别是 结构冒险 (Structural Hazard)、 数据冒险 (Data Hazard)以及 控制冒险 (Control Hazard)。 在 CPU 的流水线设计里,固然我们会遇到各种“危险”情况,使得流水线里的下一条指令不能正常运行。
阅读全文
摘要:[toc] 建立数据通路 指令周期(Instruction Cycle) 前面讲计算机机器码的时候,向你介绍过 PC 寄存器、指令寄存器,还介绍过 MIPS 体系结构的计算机所用到的 R、I、J 类指令。如果我们仔细看一看,可以发现,计算机每执行一条指令的过程,可以分解成这样几个步骤。 1. Fet
阅读全文
摘要:之前我们讲了如何对一个性能计数器框架进行分析、设计与实现,并且实践了之前学过的一些设计原则和设计思想。当时我们提到,小步快跑、逐步迭代是一种非常实用的开发模式。所以,针对这个框架的开发,我们分多个版本来逐步完善。 我们实现了框架的第一个版本,它只包含最基本的一些功能,在设计与实现上还有很多不足。所以
阅读全文
摘要:把Linux内核当成一家软件外包公司的老板 操作系统其实就像一个软件外包公司,其内核就相当于这家外包公司的老板。所以接下来的内容中,请你将自己的角色切换成这家软件外包公司的老板,设身处地地去理解操作系统是如何协调各种资源,帮客户做成事情的。 “双击 QQ”这个过程,都需要用到哪些硬件? 用户开始对着
阅读全文
摘要:[toc] 二进制编码 理解二进制的“逢二进一” 二进制和我们平时用的十进制,其实并没有什么本质区别,只是平时我们是“逢十进一”,这里变成了“逢二进一”而已。每一位,相比于十进制下的 0~9 这十个数字,我们只能用 0 和 1 这两个数字。 任何一个十进制的整数,都能通过二进制表示出来。把一个二进制
阅读全文

浙公网安备 33010602011771号