初创公司软件工程师面试流程揭秘
这家初创公司采用了两步面试法:电话面试和为期两天的现场面试。电话面试主要考察求职者对初创公司和团队合作的兴趣,以及基本的Web编程能力和项目经验。现场面试则更深入地考察技术能力、产品思维和团队合作能力,特别注重求职者在沟通、自主性和责任感方面的表现,并通过一个小型项目进行评估。
这家初创公司采用了两步面试法:电话面试和为期两天的现场面试。电话面试主要考察求职者对初创公司和团队合作的兴趣,以及基本的Web编程能力和项目经验。现场面试则更深入地考察技术能力、产品思维和团队合作能力,特别注重求职者在沟通、自主性和责任感方面的表现,并通过一个小型项目进行评估。
JesseSort 是一种新颖的排序算法,它引入了一种名为“彩虹”的新型数据结构来高效地组织和合并元素,实现了 O(n log n) 的运行时间。该算法包含插入阶段(生成彩虹数据结构)和合并阶段(合并彩虹的各个波段直至剩下一个)。更多细节请参考 JesseSort.pdf 或 ResearchGate 上的预印本。
Mill构建系统选择Scala作为配置语言,而非YAML、XML等,引发了许多疑问。文章从三个方面解释了这一选择:使用通用编程语言的原因,选择Scala的原因以及选择Java虚拟机的原因。Scala虽然是小众语言,但其独特的特性使其特别适合用于配置大小项目的构建系统。
传统的验证码容易泄露用户信息且维护成本高。本文介绍了一种新型验证码MapTCHA,它利用AI计算机视觉在图像解读上的不确定性来对抗机器人和垃圾邮件。MapTCHA通过向用户展示包含AI预测对象的图像(包括已知正确、已知错误和未知情况的混合),让用户识别其中正确解读的建筑轮廓等对象。用户的投票结果决定未知图像中对象的真实性,并为OpenStreetMap提供新的地图数据来源。该系统利用开源AI辅助地图系统fAIr进行图像识别,未来计划扩展到更多对象和图像类型,并集成到各种登录系统中。
本文介绍了如何使用Node.js和Fly.io构建自定义SQLite边缘副本以提高Turso数据库的性能。通过在全球多个区域部署代理服务器,并利用Fly.io的Anycast网络,可以实现低延迟的数据访问。该方案通过本地SQLite文件缓存数据,并定期与主数据库同步,有效减少了网络延迟和数据复制成本,从而提升用户体验。教程涵盖了Dockerfile配置、Fly.io部署以及代理服务器的实现细节,并提供了安全认证机制。
LibreOffice,这个诞生于1985年的老牌开源办公套件,在FOSDEM 2025上展示了其令人印象深刻的新功能。通过Allotropia团队开发的基于CRDT技术的分布式实时协作功能,LibreOffice Writer实现了类似Google Docs的多人实时协同编辑,但更重要的是,它可以在本地运行,无需依赖网络连接。此外,ZetaOffice项目将LibreOffice编译成WebAssembly (Wasm) 版本,使其能够在任何操作系统和CPU架构的浏览器中运行,并可通过JavaScript进行脚本化控制和集成,为Web应用提供了强大的富文本编辑能力。这一举措有望打破微软的垄断,为LibreOffice带来新的生命力。
Asahi Linux 项目负责人宣布辞职。该项目成功地将 Linux 移植到 Apple Silicon 芯片上,但面临着社区的持续压力和上游 Linux 内核贡献的巨大挑战。开发者表示,尽管取得了令人瞩目的成就,但来自用户的无休止的需求、上游社区的不友好以及个人生活中的压力最终导致了他辞职的决定。他呼吁改进 Linux 内核的贡献流程,并对社区文化表达了担忧。
许多企业面临着云基础设施的挑战:可扩展性准备不足导致资源浪费和成本飙升;工作负载难以预测,导致冷启动时间过长;数百甚至数千个应用程序需要持续维护和更新,漏洞修复和依赖项管理成为难题;跨云供应商、多区域和边缘部署也增加了复杂性。这些问题导致基础设施效率低下,并增加了运营成本。
微软Edge浏览器在迁移到Chromium渲染引擎后,用户反馈文本显示“发白”且与Windows系统其他部分不一致。调查发现,Skia引擎的文本对比度和伽马值设置与之前的DirectWrite引擎不同,且未读取Windows ClearType Tuner设置。Edge团队与Google Chrome团队合作,通过用户研究,最终将默认文本对比度调整为1.0,解决了这个问题,使Chromium浏览器在Windows上的文本显示更佳一致自然。
arXivLabs是一个允许协作者直接在arXiv网站上开发和分享新功能的框架。参与arXivLabs的个人和组织都认同并接受了arXiv的开放、社区、卓越和用户数据隐私的价值观。arXiv致力于这些价值观,并且只与遵守这些价值观的合作伙伴合作。如果您有想法能够为arXiv社区增值,请了解更多关于arXivLabs的信息。
Google BigQuery推出了一种新的管道查询语法,它以线性结构简化了SQL查询的编写和维护。这种语法允许以任何顺序和次数应用各种操作符,例如选择、聚合、分组、连接和过滤,使得查询逻辑更清晰易懂。它解决了传统SQL语法中语句顺序限制、复杂查询需要CTE或嵌套子查询等问题,并引入了EXTEND、SET、DROP和RENAME等新的管道操作符,增强了数据处理的灵活性。
软件自由保护基金会(SFC)提交了参与者简报,支持在Neo4j诉PureThink案中下游被许可人根据Affero通用公共许可证版本3(AGPLv3)第7条移除“进一步限制”的权利。该案的核心在于Neo4j添加的“Commons Clause”是否可以被移除。SFC认为,下游被许可人有权根据AGPLv3第7条第4款移除此类限制,即使这些限制是由原始许可方设置的。SFC的简报详细分析了AGPLv3第7条和第10条的条款,认为下级法院错误地支持了Neo4j的解释,这可能会对开源社区理解“进一步限制”的添加和移除方式产生根本性影响。此案的判决结果将对软件自由和版权拥有者的权利产生深远影响。
三年前,一篇关于 Wayland 的批评文章引发热议。如今,作者回顾往昔,发现 Wayland 取得了令人瞩目的进步。许多当初的痛点,例如显式同步、渲染线程卡顿等问题,都得到了有效解决。Mesa 的改进、协议的完善以及社区的积极参与,共同推动了 Wayland 的发展。虽然仍有一些挑战,例如嵌入外部窗口和多窗口管理等,但 Wayland 的未来前景一片光明。
Wger是一个免费开源的健身管理WebApp,可以帮助你管理个人训练、体重和饮食计划,甚至可以用作简单的健身房管理工具。它还提供REST API,方便与其他项目和工具集成。你可以通过Docker轻松部署,官方也提供了简易的demo镜像。Wger的代码和内容都已开源,并支持多语言翻译。
Task Explorer 是一款功能强大的任务管理工具,它不仅能监控运行中的应用程序,还能深入了解这些应用程序的运行情况。其用户界面注重速度和效率,以最小的交互提供进程的实时数据。它采用面板式设计,选择进程后,详细信息会显示在屏幕下半部分,方便用户使用方向键浏览数据。实时数据刷新功能让用户可以观察到系统性能和行为的实时变化。
Task Explorer 提供了高级功能,例如线程面板显示选定线程的堆栈跟踪,内存面板允许查看和编辑进程内存,句柄面板显示所有打开的句柄,套接字面板显示所有打开的连接,模块面板列出所有加载的 DLL 和内存映射文件等等。它还包括系统监控功能,显示CPU、句柄、网络流量和磁盘访问的实时使用情况。
Task Explorer 基于 Qt 框架构建,计划移植到 Linux 平台,并支持 Windows 7 或更高版本(32 位和 64 位系统)。
本文介绍了一种通过位运算近似浮点数乘法的巧妙方法。该方法通过将浮点数转换为整数,然后进行加法运算,最后再调整指数,最终得到近似结果。虽然这种方法在指数溢出或下溢时会失效,但对于大多数情况,其精度令人惊讶地高,误差可控制在7.5%以内。作者分析了该方法的原理,并解释了为什么这种看似简单的加法运算能够近似模拟浮点数乘法。虽然在实际应用中可能不如直接使用浮点数乘法高效,但其简洁性以及在特定场景下节省算力的潜力仍使其具有研究价值。
作者分享了他十年来使用GVim的经验,总结了一系列提升效率的技巧和Vim配置。文章重点不在于具体的Vim配置,而是强调根据自身工作习惯优化工作流程的重要性。作者介绍了如何自定义映射快捷键来简化操作,例如用``代替``切换模式,自动保存所有缓冲区并处理错误,以及快速复制到系统剪贴板等。他还分享了如何创建目录以避免保存文件时的错误,以及在`:terminal`中运行Git命令的技巧。文章最后鼓励读者探索Vim的帮助文档,并持续优化自己的工作流。
厌倦了依赖Glitch的局限性,作者打造了自己的Web编程环境。后端采用Django,项目文件保存在本地目录,域名通过Let's Encrypt的通配符证书实现。它支持模板复用、实时预览、自动保存、Makefile构建,甚至集成了Elm包安装和shell命令执行功能。作者还添加了Git集成,使用Jujutsu简化了版本控制流程,并利用Forgejo的create-on-push特性实现无缝推送。目前已拥有80个项目,涵盖实验性作品和日常工具。
NESFab 是一款为创建 NES 游戏而设计的新编程语言。它针对 8 位机的限制进行了优化,比 C 语言更易于使用,同时生成更快的汇编代码。NESFab 提供易用的库,方便开发者快速上手,无论是制作第一个还是第 N 个 NES 游戏都游刃有余。它还具有自动银行切换、简易资源加载和集成地图编辑器 MapFab 等特性,极大地提高了开发效率。尽管目前仍处于 Beta 阶段,但 NESFab 在性能方面已超越了 GCC 和 LLVM 等编译器,有望成为性能最佳的 6502 编译器。
一个名为“如何专业地说”的静态网站项目上线了,旨在提供一些更专业的沟通表达方式,避免日常工作中出现不必要的误解。该项目的数据来源于Instagram博主@loewhaley的内容,目前还处于早期阶段,作者希望通过社区贡献不断改进,使其更实用、更贴近大众需求。项目采用开源方式,欢迎用户提交反馈和改进建议。
大型项目开发中,长分支合并冲突频发,延缓发布速度。本文介绍了主干开发模式,团队成员直接在主分支上工作,通过特性开关(feature flags)在代码中管理未完成的功能。静态特性开关使用简单的if语句,动态特性开关则通过外部系统实时控制,允许在生产环境中测试和回滚功能,加快发布速度,降低风险。主干开发结合持续交付,实现快速迭代和可靠的软件交付。
本文解释了为什么密码学不依赖NP完全问题。虽然NP完全问题很难快速求解,但密码学需要的是平均情况下难以解决的问题,即随机选择的实例都难以破解。RSA算法就是一个例子,它依赖于大数分解的困难性,而大数分解在平均情况下是困难的。NP完全问题只保证最坏情况下难以求解,并不能保证平均情况下的难度,因此不适合用于密码学。
现代软件开发严重依赖第三方库,这带来了巨大的安全风险。文章深入探讨了软件依赖的类型、包管理器的作用以及由此产生的供应链攻击、恶意软件、后门等问题。作者强调了定期审核依赖项、使用签名和验证来源、制定安全策略以及采用最小权限原则的重要性,并提出了最小化依赖、使用良好维护的标准库等策略,最终指出隔离和限制不受信任的软件对于降低风险至关重要。
本文探讨了如何通过即时编译(JIT)技术提升 Ruby 的 FFI (Foreign Function Interface) 性能。作者通过基准测试展示了 FFI 相比原生扩展的性能劣势,并提出了一种名为 FJIT 的解决方案。FJIT 利用 RJIT 和自定义的机器码生成工具,在运行时生成机器码来调用外部函数,从而绕过 FFI 的开销。测试结果显示,FJIT 的性能甚至优于原生扩展,为追求高性能的 Ruby 开发者提供了一种新的选择。目前 FJIT 仍处于原型阶段,仅支持 ARM64 架构,但作者相信未来可以扩展到其他架构和更复杂的函数调用。
长期以来,NixOS 的构建可重复性一直备受争议。有人认为其功能性包管理器模型虽然有助于构建可重复性,但无法保证所有构建都实现位级可重复性。一篇新的研究论文对 Nixpkgs(NixOS 的软件包集合)进行了为期六年的研究,结果显示其可重复性比率稳步提高,从 2017 年的 69% 增长到 2023 年 4 月的 91%。研究还识别出导致不可重复性的主要原因,例如嵌入日期、uname 输出、环境变量和构建 ID 等。这些发现表明,即使 Nixpkgs 已经实现了很高的可重复性率,但仍然存在一些改进的空间,例如通过解决这些低垂的果实来进一步提高可重复性。这项研究对于增强对 Nix 替换协议的信任,并推动基于构建可重复性的分布式缓存解决方案至关重要。
yknotify 是一款 macOS 命令行工具,通过监控系统日志,检测 YubiKey 等待触控的事件,并提示用户进行触控操作。它支持 FIDO2 和 OpenPGP,通过识别特定日志消息来判断 YubiKey 是否需要触控,并发出通知。虽然可能存在极少数误报,但尚未发现漏报。用户可自行安装并运行,如有问题可提交 issue。
Imapsync 是一款命令行工具,用于在互联网或本地网络上的邮箱之间进行增量和递归的 IMAP 迁移或备份。它支持 Windows、Linux 和 Mac OS X,并能高效地处理中断和恢复。Imapsync 不支持通讯录和日历迁移,但提供多种替代方案和强大的专业支持,售价 60 欧元起,并提供 30 天退款保证。其 2024 年处理了超过 2 亿次邮箱传输,展现了强大的性能和用户基础。
arXivLabs是一个实验性平台,允许合作者直接在arXiv网站上开发和分享新功能。参与者都认同arXiv的开放、社区、卓越和用户数据隐私的价值观。你有提升arXiv社区价值的想法吗?来了解arXivLabs吧!
本文探讨了软件效率和横向扩展之间的矛盾。作者指出,为扩展性优化的软件通常在单机环境下效率较低,反之亦然。这源于Amdahl定律、协调开销以及共享资源的限制。高效的算法往往依赖于对系统和问题的特定假设,而这些假设在横向扩展后可能不再成立。作者还探讨了文化因素和任务类型对选择的影响,并以Tigerbeetle数据库和CPython的GIL为例进行说明,最终指出,对问题和环境的深入理解是提升效率和扩展性的关键。
这是一个基于大型语言模型(LLM)的命令行插件,用于根据语义对文本行进行排序。它类似于GNU sort命令,但使用LLM根据查询进行语义排名,而非简单的字母排序。支持从文件或标准输入读取文本行,并允许自定义排序方法、输出数量、模型和提示模板。插件提供了默认提示模板,但用户也可以自定义。安装简单,只需克隆代码,创建虚拟环境并安装依赖项即可。