“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。
md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。
要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。
在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。
要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。
工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。
写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。
适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。
你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。
全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
谷歌工程总监面试:一场关于理论派与实践派的较量
谷歌面试官用教科书式标准答案筛选候选人,而一位拥有37年编程经验的实践者用真实世界经验给出了更准确的回答,却因此落选,引发了关于招聘标准的大讨论。
最近,一位匿名开发者在博客上分享了他与谷歌招聘人员的一次电话面试经历,引起热议。这位开发者自称11岁开始编程,至今已37年;24岁被任命为研发总监,领导过多个商业项目,包括TWD公司的Global-WAN(C/VHDL实现的分布式二层VPN,使用自定义内核旁路IP栈和后量子加密)、G-WAN(仅200KB,支持17种脚本语言的轻量级应用服务器)以及Remote-Anything(专利企业网络管理方案,在138个国家部署了2.8亿许可证)。谷歌在1998年成立,这家公司也同年创立。
面试官明确表示,该岗位要求管理能力与最新编程技能兼备,但谈话开始后,提问内容却出人意料。以下是面试题和面试官的“标准答案”,直到面试因“技能不匹配”被终止:
1. C 语言中 malloc() 的反函数是什么?
- 我的回答:
free() - 面试官: 正确。
- 内心: 35年C语言经验,换来的居然是这样一道题。
2. 哪个Unix函数让socket接受连接?
- 我的回答:
listen() - 面试官: 正确。
- 内心: 这就能让我成为网络专家?
3. MAC地址需要多少字节?
- 我的回答: 6个字节。
- 面试官: 正确。
- 内心: 算是拿到了以太网的牌子。
4. 将下列操作耗时从快到慢排序:CPU寄存器读取、磁盘寻道、上下文切换、内存读取。
- 我的回答: CPU寄存器读取 < 内存读取 < 上下文切换 < 磁盘寻道。
- 面试官: 正确。
- 内心: 这是CS大一课堂练习题的水平。
5. 什么是Linux inode?
- 我的回答: 它是一个文件系统上的唯一文件标识符。
- 面试官: 不对,inode是文件元数据。
- 我解释: inode是索引节点,在某个文件系统上唯一标识一个文件。通过这个索引可以获取文件大小、时间戳、属主和权限,在某些文件系统上你还可以自定义扩展属性。
- 面试官: 不对,你应该说“元数据”,而不是“属性”。
- 内心: “元数据”比“文件属性”更能说明问题吗?
(技术注:inode 本质上是文件系统中的一个索引节点,它包含了文件的元数据,并用唯一编号标识文件。面试官的简短表述并不比候选人的解释更准确。)
6. 哪个Linux函数接受路径并返回inode?
- 我的回答: 我为G-WAN写过自定义libc,但我不记得有哪个syscall直接返回inode。
- 面试官:
stat()。 - 我的反驳:
stat(),fstat(),lstat(),fstatat()返回的是错误码,不是inode;它们填充一个包含文件元数据的struct stat,而不是只返回inode编号。 - 面试官: 不对,inode就是包含了所有元数据的东西。
- 内心: 谷歌是不是偷偷把微软的Tay机器人招进来了?
7. KILL信号的名字是什么?
- 我的回答:
SIGKILL,其宏定义值为9。 - 面试官: 不对,应该是“TERMINATE”。
- 我解释:
SIGTERM(15)和SIGKILL(9)是不同的信号,前者可被捕获,后者不可。 - 面试官: 这不是我手上的答案。
- 内心: 当AI发现娱乐性药物后大概就这样吧。
8. 为什么快排是最佳排序法?
- 我的回答: 并非总是,甚至不一定适合。
- 面试官: 快排有最好的big-O。
- 我的解释: big-O忽略了数据存储延迟、拓扑、数据量、可用内存,甚至具体实现的CPU指令成本,它只统计算法操作的数量。它用于算法设计时是很有价值的参考,但最终性能取决于具体问题和环境的约束。比如Linux内核就选择了堆排序而非快排,因为堆排序内存占用更低且执行时间更可预测。
- 面试官: 错,你应该说快排的big-O复杂度。
- 内心: 学术界造成的公共精神健康损害,何时才能像烟草一样被WHO重视?
9. 如何最有效地统计一个10,000个16位值数组中的置位位数?
- 我的回答: 将数值视为64位,用Brian Kernighan的方法逐位清除最低置位。
- 面试官: 不对。
- 我解释: 还有使用掩码但更快的方法,但需要写代码,电话里说不清。
- 面试官: 正确做法是用查找表,然后把结果加起来。
- 我的质疑: 在什么CPU上?为什么不能让我写代码和你的方法做一下基准对比?
- 面试官: 这不是这个测试的重点。
- 我问: 那重点是什么?
- 面试官: 我需要确认你懂得正确答案。
- 内心: 这个测试何时结束?
(技术注:8位查找表一次处理一个字节,而64位掩码法一次处理8字节,现代CPU甚至支持128位指令,若允许非可移植代码,可轻易获得10倍速度提升。现实世界性能与理论复杂度的差异就是这样被面试官忽略。)
10. 建立TCP连接时交换的是什么类型的包?
- 我的回答: 用十六进制表示:0x02, 0x12, 0x10,即“同步”和“确认”标志位。
- 面试官: 不对,应该是“SYN, SYN-ACK, ACK”。如果谷歌宕机,你需要知道这些才能诊断问题。
- 面试结束语: “我们到此为止,很明显你没有编写或审查网络应用的必要技能。你应该多学Linux函数调用、TCP/IP协议栈和big-O概念,才能通过以后的面试。好运,再见。”
深度分析:理论 vs 实践,谷歌的招聘到底在测什么?
这位开发者只得了4/10分,但他反驳说:“嗯,比我最好的谷歌PageRank高。”言语间充满讽刺。他还点评道,团队真正需要的是录用比你懂更多的人,而不是只懂皮毛的“人手”。
这次面试折射出几个关键问题:
- 面试问题的设计缺陷: 全是事实性知识,而非工程能力。真正的网络诊断,要看实际报文、可能用tcpdump阅读二进制流量,此时十六进制标志位比简拼音节更有用。
- 僵化的“标准答案”文化: 比如第7题,面试官坚持错误答案“TERMINATE”,这暴露了考官本身的知识缺陷。
- 学术理论 vs 工业生产: big-O在实时系统、缓存、并发场景中的解释力有限,而实际项目要平衡内存、功耗、延迟等因素。Linux内核的取舍就是明证。
更大的问题是,面试官要求的岗位是“Director of Engineering”,这种级别的角色需要的是系统思维、架构判断及复杂决策能力,而不是背诵API。一个能领导复杂系统、写出低层网络代码的工程师,被一套非黑即白的问答否定,这是谷歌招聘流程的错位。
反过来看,谷歌的初衷可能是筛选有扎实基础知识的候选者。但基础的衡量方式不止一种。正如作者所说:“理论不是终点,而是实践的起点。”面试流程若是绕开真实工程场景,只求标准口诀,最终只会筛出“背书机器”,而错过能真正解决复杂问题的人。