最近,在面试第一轮抖音(字节跳动)的伦敦职位(Site Reliability Engineer),被问到了这个问题:TCP/IP协议是什么?这个是考基本功,是每个软件工程师都要会的。 TCP/IP(传输控制协议/互联网协议)是一组网络协议,管理数据如何通过互联网和其他网络传输。它是互联网的基本通信模型,由两个主要层组成: 互联网协议 (IP) IP 负责将数据包从源地址路由到目标地址。它工作在 OSI 模型的网络层。 IP 地址:互联网中的每个设备都被分配了一个唯一的 IP 地址,用于标识数据包的发送者和接收者。 数据包路由:IP 将数据分成多个包,并通过不同的网络将其路由到目标地址。 版本:IP 主要有两个版本:IPv4(32位地址)和 IPv6(128位地址)。 传输控制协议 (TCP) TCP 负责确保设备之间数据传输的可靠性。它工作在 OSI 模型的传输层。 面向连接:TCP 在传输数据之前会在发送方和接收方之间建立连接。 数据完整性:TCP 通过确认、序列号和错误检查等机制,确保数据包按顺序无误地到达。 …
最近面试的时候遇到这个问题。这个问题考你计算机的基本功。 在 C/C++ 中,内存管理是控制程序如何分配和管理其资源的关键方面。C/C++ 程序中的内存通常分为不同的区域:堆栈和堆是最主要的动态和自动内存分配区域。 ACM题解系列之 – 最小堆栈 (Min Stack) 堆栈内存 定义:堆栈内存用于静态(自动)内存分配。它是存储函数参数、本地变量和返回地址的地方。当调用一个函数时,一个新的内存块(称为堆栈帧)会被添加到堆栈的顶部。当函数返回时,该内存会被自动释放。 分配:内存由系统自动管理——在变量超出作用域时自动分配和释放。无需人工干预。 生命周期:受限于函数或代码块的作用域。一旦函数退出,内存将被释放。 大小限制:堆栈的大小通常较小并由系统预定义,意味着大的分配可能导致堆栈溢出。 访问速度:由于其后进先出(LIFO)的结构,堆栈内存访问速度更快。由于内存是连续的且可预测的,它允许快速访问。 使用场景:局部变量、函数调用信息和固定大小的对象(数组、结构体)。 堆内存 定义:堆内存用于动态内存分配,程序员使用 C 中的 malloc()、calloc()、free() 和 C++ 中的 new、delete 手动分配和释放内存。 分配:内存在运行时分配,并且分配的生命周期由程序员手动控制。它可以持续存在,直到显式释放。 生命周期:堆分配的对象的生命周期不受作用域的限制。内存将一直被使用,直到被释放为止。 …
我认为这无疑是最受欢迎的软件工程师的(Software Engineer) 面试问题 之一。最近有人说这个问题曾出现在 抖音Tiktok 的面试中。 要回答面试中的“当你在浏览器中输入 https://www.google.com 时会发生什么?”这个问题,可以按步骤详细说明整个过程,涉及 DNS 查找、TCP/SSL 握手、请求处理和页面渲染。以下是全面的解释: URL 解析 当你输入 URL https://www.google.com 并按下回车时: 协议:浏览器识别出协议是 https,意味着它将使用 HTTP 加密传输(TLS)。 主机:浏览器识别出 www.google.com 是域名。 路径:默认路径是 /,因为没有提供具体路径,表示请求主页。 DNS 查找 …
这个车是真的汽车,从2010/2011年开始学驾照,到2012年考过驾照(两次才过),到现在也有十几年的驾龄了,真的算老司机了。 现在开的是两辆车(第四和第五),分别是奥迪Q5和保时捷卡宴。目前每周加保时捷的油费大概是50英镑。 第一辆 Seat Ibiza 第一辆:在英国的第一辆小黄车 Seat Ibiza (西亚特·伊比飒) 离合很重,男人开的车,当时用来练手,最后面到谢菲而得/Sheffield因为住在市中心不太需要车,就给卖了。 第二辆 奥迪AUDI A6 这辆开了有近十年,当时从谢菲搬家到剑桥Cambourne大剑宝就是开得这车。开了近10年的奥迪A6卖给了车厂(内含开车成本) 我当时买的时候是7000左右,然后买来修了修又多花了1000多英镑, 换轮胎第一次没经验,买好的轮胎,结果没多久又在村里扎钉子了,后来发现国产便宜的胎也很好用。 第三辆 奔驰C小红轿跑 由于住在剑桥村里,所以一辆车不太够用,媳妇当时在TESCO超市上班,需要一辆车,由于媳妇是新手,所以搞了辆小破车给媳妇开开。给媳妇弄了辆小奔开开(媳妇是车模) 第四辆 奥迪Q5 SUV 有了娃,感觉还是SUV大车比较方便,所以在2017年年底的时候搞了奥迪Q5 SUV,当时把奔驰C小轿跑Part Exchange给车厂大概值500英镑。给媳妇最好的 – 给媳妇换了辆 AUDI Q5 …
我拥有一个8位数的腾讯QQ号,可能是从2002/2003年开始使用的。那时候还没有微信,记得初中时还申请过一个QQ号,但后来忘记了密码,最终也丢失了。这个QQ号(20328681)一直陪伴我,直到两年前车库里的HPZ800电脑主板坏了。换了新电脑后,我再也无法登录了。 由于需要进行身份验证,我尝试过使用身份证等信息,但依然无法通过。申诉了多次都失败了。还试过用我姐姐的手机进行验证,邀请了两个好友辅助认证,但依旧没有成功。现在我也不知道这个号码会不会因为长期无法登录而被回收。 幸运的是,我还有一个可以登录的QQ号,并且这两个QQ号互为好友。通过这个途径,我仍然可以访问原QQ号的QQ空间,看到以前的照片和日志。只不过,这QQ空间已经成了只读模式,只能看不能修改。 我妻子的QQ号也早已忘记了密码,无法登录了。也许我们这一代人中的大多数,都亲历了QQ的普及,成为了国内第一代网民,也见证了微信的崛起。 我的即将逝去的QZONE空间,还有那些我的过去和回忆。 本文一共 359 个汉字, 你数一下对不对. 8位的QQ号找不回来了-只有QZONE还可以访问. (AMP 移动加速版本) 赞赏我的几个理由. ¥ 打赏支持 扫描二维码,分享本文到微信朋友圈
当大多数人听到“区块链”这个词时,首先想到的是比特币、以太坊等加密货币。尽管加密货币获得了大部分的关注,但实际上它只是区块链技术的一个应用。试想一座漂浮在海洋中的冰山;加密货币是水面上可见的一角,而区块链的巨大潜力则深藏在水面之下。 区块链的基础 区块链本质上是一个去中心化的分布式账本,它在多个计算机上记录交易。交易被分组成“区块”,这些区块通过加密哈希连接在一起,形成“链条”——这就是“区块链”名称的由来。这个系统确保了透明性、不可篡改性和安全性,使得区块链在金融之外的许多领域也具有很高的适应性。 加密货币:冰山一角 比特币、以太坊等加密货币改变了我们对金钱的传统观念。它们提供了点对点交易、跨境支付和去中心化的特点,而无需依赖银行或中心化的金融机构。这些特性引起了公众的强烈兴趣,推动了一个市值数十亿美元的市场。 然而,尽管加密货币占据了头条新闻,但它只是区块链技术的最早期应用之一。区块链的真正潜力远远超出了金融领域。 水下的巨大冰山 以下是一些区块链在加密货币之外,正在悄然改变的行业: 供应链管理 区块链在供应链管理中的应用前景十分广阔。从产品生产的第一步到消费者手中,区块链可以记录每个环节,确保透明性和可追溯性,减少欺诈,提升效率,并为质量控制创建一个永久的审计跟踪。 IBM等公司已经在食品、药品和电子产品等行业部署了区块链解决方案来管理供应链。 智能合约 智能合约是一种自动执行的协议,当满足预定义条件时,合约会自动执行。智能合约存储在区块链上,不再需要中介机构如律师或公证人。 例如,房地产交易可以通过智能合约进行。当所有条件都满足时(如支付完成),房产会自动转移到新所有者名下,减少延误并降低成本。 医疗保健 在医疗领域,区块链可以在医生、医院和患者之间安全地存储和共享患者数据。这将革新医疗记录,确保数据完整性,并让患者拥有更多的健康信息控制权。 像Medicalchain这样的公司正在开发基于区块链的医疗记录解决方案,旨在提高数据共享效率,增强患者隐私。 去中心化金融(DeFi) 除了传统的加密货币,区块链还推动了一个全新的金融生态系统,称为去中心化金融(DeFi)。通过区块链,DeFi平台提供借贷、交易,甚至保险服务,而无需依赖传统的金融中介。 通过移除中间人,DeFi使金融服务更加易于获得,通常还提供更好的利率和更高的透明度。以太坊是一个支持众多DeFi应用的平台。 投票与治理 区块链可以使选举和投票更加安全、透明、难以篡改。通过验证每一张选票并确保只有合格的个人参与,基于区块链的投票系统可以减少欺诈并增加公众对民主过程的信任。比如STEEM区块链就采用了DPOS的投票机制。 像爱沙尼亚这样的国家已经在其电子治理中探索了区块链,展示了透明、安全的投票并非遥不可及,而是可以实现的现实。 知识产权和数字版权管理 内容创作者——无论是音乐、艺术还是文学——都可以使用区块链来保护其知识产权。区块链提供了可验证的所有权记录,允许创作者追踪其内容的使用方式,并确保他们获得相应的版权费用。 NFTs(非同质化代币)是这一潜力的一个体现,它们允许数字艺术家将其创作货币化。但超越NFTs,区块链未来可能在管理数字版权方面开辟全新模式。 身份管理 在数字平台上管理身份信息是一个日益严重的问题,个人数据经常在黑客攻击或泄露中被盗取。基于区块链的身份系统提供了一种去中心化的方式来验证身份,而无需中心化的机构控制数据。 通过区块链,用户可以掌控自己的个人信息,选择何时以及如何与服务提供者共享,从而增强隐私和安全性。 …