Tag: 面试题
最近,在面试第一轮抖音(字节跳动)的伦敦职位(Site Reliability Engineer),被问到了这个问题:TCP/IP协议是什么?这个是考基本功,是每个软件工程师都要会的。 TCP/IP(传输控制协议/互联网协议)是一组网络协议,管理数据如何通过互联网和其他网络传输。它是互联网的基本通信模型,由两个主要层组成: 互联网协议 (IP) IP 负责将数据包从源地址路由到目标地址。它工作在 OSI 模型的网络层。 IP 地址:互联网中的每个设备都被分配了一个唯一的 IP 地址,用于标识数据包的发送者和接收者。 数据包路由:IP 将数据分成多个包,并通过不同的网络将其路由到目标地址。 版本:IP 主要有两个版本:IPv4(32位地址)和 IPv6(128位地址)。 传输控制协议 (TCP) TCP 负责确保设备之间数据传输的可靠性。它工作在 OSI 模型的传输层。 面向连接:TCP 在传输数据之前会在发送方和接收方之间建立连接。 数据完整性:TCP 通过确认、序列号和错误检查等机制,确保数据包按顺序无误地到达。 …
我认为这无疑是最受欢迎的软件工程师的(Software Engineer) 面试问题 之一。最近有人说这个问题曾出现在 抖音Tiktok 的面试中。 要回答面试中的“当你在浏览器中输入 https://www.google.com 时会发生什么?”这个问题,可以按步骤详细说明整个过程,涉及 DNS 查找、TCP/SSL 握手、请求处理和页面渲染。以下是全面的解释: URL 解析 当你输入 URL https://www.google.com 并按下回车时: 协议:浏览器识别出协议是 https,意味着它将使用 HTTP 加密传输(TLS)。 主机:浏览器识别出 www.google.com 是域名。 路径:默认路径是 /,因为没有提供具体路径,表示请求主页。 DNS 查找 …
给定一个数独(Sudoku), 我们可以使用深度优先搜索算法(DFS), 迭代加深搜索算法(IDS)或广度优先搜索算法(BFS)来寻找可能的解. 反过来, 如果我们要设计一个算法来生成有效的数独, 我们需要澄清以下问题: 生成的数独(Sudoku)必须有可解状态吗? 是的 生成的数独(Sudoku)有多个解吗? 我们可以假设返回的Suduoku只有1个唯一解 生成的数独(Sudoku)的找解难度? 我们可以为此设置一个参数: 简单, 中等或困难 一共有6.671×10^21个有效的数独状态, 如果我们忽略旋转, 镜像状态等重复的状态, 这个数字就降到了5.4×10^9个状态. 我们可以随机生成一个由数字1-9填充的矩阵, 并检查它是否是有效的数独, 但这非常低效, 因为生成的矩阵极有可能不是有效的数独. 设计一个随机数独的算法 为了设计一个有效的算法, 生成一个随机的有效数独, 我们可以采用以下算法: 使用回溯(深度优先搜索)算法来生成一个具有随机性的有效完整数独. 例如, 我们可以随机选择数字, …
操作给定的二叉树, 将其变换为源二叉树的镜像. 反转给定的二叉树 输入描述: 二叉树的镜像定义: 源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ …
2018年7月19日
ACM题解, 学习笔记, 数学, 数据结构与算法, 有意思的, 程序员, 程序设计, 算法, 编程, 计算机, 软件工程, 面试
这题据说是 GOOGLE的面试题, 但是却真实的被一些软件公司拿来考应聘者. 比如我在前几年面试剑桥的博通公司/Broadcom, 在第二轮也被问到了这个问题. 题意是: 给你两个鸡蛋, 有个100层楼, 你可以把鸡蛋从任意一层楼扔下, 鸡蛋可能破, 也可能不破, 如果不破的话, 你可以继续用这个鸡蛋扔. 你需要用这两个鸡蛋来试出鸡蛋会破的最小楼层高度. 这两个鸡蛋一模一样. 问你采用什么策略可以使最坏情况下的尝试次数最少? 什么是最差情况? 如果你只有一个鸡蛋, 那么你最坏需要100次(需要从1层楼开始测试)才可以得到结论. 最直接的做法就是从第一层开始试, 然后第二层以此类推, 但是这种方法只需要用到1个鸡蛋即可. 如果第N层鸡蛋没碎但是第N+1层碎了, 答案就是N. 这种情况下最坏需要尝试100次. 如果我们在第50层扔呢? 如果鸡蛋碎了, 那么答案就在第1到第49层, 反之答案就在第51到第100. …
@justyy 的逻辑测试系列: 逻辑测试系列 – 一种只有4种语句的编程语言 – (1) 逻辑测试系列之二 – DECR 上次添加了 DECR 函数来把 一个变量减一, 我们这次来定义一个 SUBT 函数来实现 把 减法运算, 也就是 X-=Y 如果我们用 C++ 来实现, 大概是这样的: void subt(unsigned int &x, …
逻辑测试系列 – 一种只有4种语句的编程语言 – (1) 这种只有4条语句的语言能做什么呢? 今天我们来定义一个DECR函数, 该函数就是把 变量 X 减一. DECR(X) { } 要求填写函数体, 使用 INCR, LOOP, ZERO, 和 ASGN 仅有的4个语句. 我们不妨想一下, 已知变量 X 是非负整数, 那么我们只需要 循环 X-1次, …