Tag: Software Engineer

Meta的Enterprise Engineer企业工程师是什么? 和软件工程师的区别

我最近收到了一封来自 Meta 招聘人员的邀请邮件,关于 Meta 伦敦的员工企业工程师职位(Staff Enterprise Engineer): Meta 的企业工程师是什么? Meta 的企业工程师专注于设计、开发和维护内部工具和系统,以帮助公司员工提高生产力和效率。与传统的软件工程师角色相比,这一角色更偏向于内部,主要专注于为企业级需求构建基础设施、应用程序和自动化解决方案。以下是该职位的职责概述: 主要职责 内部工具和基础设施开发:企业工程师构建支持 Meta 内部业务运营的工具,例如 HR 系统、财务工具和协作平台。他们确保内部团队拥有高效运营所需的技术和系统。 自动化:该职位的一个重要方面是通过自动化工作流来减少人工操作并提高可扩展性。这可能包括自动化入职/离职流程、创建提高内部生产力的系统,或自动化数据工作流。 系统设计与集成:他们负责集成各种内部系统,确保 HR 工具、财务系统和公司使用的其他运营平台之间的数据流畅无阻。 与跨职能团队合作:企业工程师与 HR、财务、法律等业务团队紧密合作,了解他们的需求并将其转化为可扩展的技术解决方案。 解决问题:他们处理企业内的复杂运营问题,并提出技术解决方案,如改进内部流程或解决现有瓶颈。 所需技能 全栈开发:具备后端、前端和基础设施工具的经验。 系统设计:对系统架构和可扩展性有深入的理解。 企业 IT …

软件工程师面试: TCP/IP协议是什么?

最近,在面试第一轮抖音(字节跳动)的伦敦职位(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++ 中,内存管理是控制程序如何分配和管理其资源的关键方面。C/C++ 程序中的内存通常分为不同的区域:堆栈和堆是最主要的动态和自动内存分配区域。 ACM题解系列之 – 最小堆栈 (Min Stack) 堆栈内存 定义:堆栈内存用于静态(自动)内存分配。它是存储函数参数、本地变量和返回地址的地方。当调用一个函数时,一个新的内存块(称为堆栈帧)会被添加到堆栈的顶部。当函数返回时,该内存会被自动释放。 分配:内存由系统自动管理——在变量超出作用域时自动分配和释放。无需人工干预。 生命周期:受限于函数或代码块的作用域。一旦函数退出,内存将被释放。 大小限制:堆栈的大小通常较小并由系统预定义,意味着大的分配可能导致堆栈溢出。 访问速度:由于其后进先出(LIFO)的结构,堆栈内存访问速度更快。由于内存是连续的且可预测的,它允许快速访问。 使用场景:局部变量、函数调用信息和固定大小的对象(数组、结构体)。 堆内存 定义:堆内存用于动态内存分配,程序员使用 C 中的 malloc()、calloc()、free() 和 C++ 中的 new、delete 手动分配和释放内存。 分配:内存在运行时分配,并且分配的生命周期由程序员手动控制。它可以持续存在,直到显式释放。 生命周期:堆分配的对象的生命周期不受作用域的限制。内存将一直被使用,直到被释放为止。 …

软件工程师经典面试题: 当你在浏览器的地址栏敲入google.com并按回车后发生了什么?

我认为这无疑是最受欢迎的软件工程师的(Software Engineer) 面试问题 之一。最近有人说这个问题曾出现在 抖音Tiktok 的面试中。 要回答面试中的“当你在浏览器中输入 https://www.google.com 时会发生什么?”这个问题,可以按步骤详细说明整个过程,涉及 DNS 查找、TCP/SSL 握手、请求处理和页面渲染。以下是全面的解释: URL 解析 当你输入 URL https://www.google.com 并按下回车时: 协议:浏览器识别出协议是 https,意味着它将使用 HTTP 加密传输(TLS)。 主机:浏览器识别出 www.google.com 是域名。 路径:默认路径是 /,因为没有提供具体路径,表示请求主页。 DNS 查找 …

45 分钟模拟面试(编程、系统设计)+职业发展建议

许多大型科技公司(如 FANG:Facebook/Meta、Apple、Netflix、Google)以及微软等,在发出工作邀请之前,通常会进行多轮面试。这些面试通常包括编程/Coding、系统设计/System Design和行为评估/Behaviour,以考察文化契合度。 我提供 45 分钟的模拟面试,帮助您准备编码和系统设计环节。作为曾在亚马逊(AWS,S3 Object Lambda)担任面试官的我,将通过真实的练习环节为您提供指导。在编码模拟面试中,您将解决一到两个编程问题;而在系统设计模拟面试中,您需要在白板上设计一个可扩展的产品。 此外,我还提供 45 分钟的聊天时间,可以讨论任何话题,包括职业发展和建议。 我目前定价 60 英镑一小时,会员价是 55 英镑,毕竟时间就是金钱。而这也大概和我的时薪差不多。 如果您有兴趣,请点击此处。 PS:我发现 Buy Me a Coffee 这个创业点子很好,赞赏+集成了网上商店,很是方便,界面也很友好,感兴趣的可以通过这个链接来创建一个专属于你的页面,在为用户创作内容的同时也能很快捷的收到赞赏! 英文:45 Minute Mock Interview (Coding, System …

C++的 map 当键(Key)不存在的时候会发生什么?

在面试流程(例如筛选)的早期阶段,一位 Google 招聘人员曾向我问过这个问题。 在C++中,当你使用std::map访问一个不存在的键时,行为取决于你是如何访问它的。 使用下标操作符 访问时 如果键不存在,std::map 会默认插入一个该键的元素,并为其赋值为类型的默认值。比如,如果 map 的值类型是 int,那么它会插入该键并赋值为 0。 例子: std::map<int, int> myMap; int value = myMap; // 如果键10不存在,会插入myMap = 0 使用 at() 方法访问时 如果键不存在,at() 会抛出 …

谷歌面试题: 迷宫随机生成算法

据说这个是谷歌 Google 的第一轮面试题. 一般这种题目就是: 设计一个迷宫算法 (Design a Maze). 面试中应该先问清楚需求 (Ask Clarifying Questions): 迷宫需要有几条出路? (假定至少1条), 多大的迷宫? 多复杂的迷宫等等. 最容易想到的就是随机生成1和0的地图, 其中1是墙, 0是空路, 不过这种方法生成随机的效率实在是太低, 你可以跑了半天也无法生成一个有效的迷宫, 我们假定有效的迷宫是至少含一条路径. def maze(width, height): m = None while …