惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Commits to openclaw:main
Recent Commits to openclaw:main
Simon Willison's Weblog
Simon Willison's Weblog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Schneier on Security
Cyberwarzone
Cyberwarzone
NISL@THU
NISL@THU
The Last Watchdog
The Last Watchdog
Security Archives - TechRepublic
Security Archives - TechRepublic
The Hacker News
The Hacker News
Schneier on Security
Schneier on Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Help Net Security
Help Net Security
Scott Helme
Scott Helme
SecWiki News
SecWiki News
Security Latest
Security Latest
T
Threat Research - Cisco Blogs
L
LINUX DO - 最新话题
L
Lohrmann on Cybersecurity
TaoSecurity Blog
TaoSecurity Blog
K
Kaspersky official blog
Attack and Defense Labs
Attack and Defense Labs
P
Privacy & Cybersecurity Law Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
L
LINUX DO - 热门话题
N
News and Events Feed by Topic
Know Your Adversary
Know Your Adversary
Forbes - Security
Forbes - Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Google DeepMind News
Google DeepMind News
T
Tor Project blog
P
Palo Alto Networks Blog
Cisco Talos Blog
Cisco Talos Blog
A
Arctic Wolf
O
OpenAI News
T
The Exploit Database - CXSecurity.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
AI
AI
N
News and Events Feed by Topic
博客园 - Franky
T
Threatpost
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Engineering at Meta
Engineering at Meta
S
SegmentFault 最新的问题
C
Cyber Attacks, Cyber Crime and Cyber Security
N
Netflix TechBlog - Medium
V2EX - 技术
V2EX - 技术
B
Blog RSS Feed
Hacker News: Ask HN
Hacker News: Ask HN
D
Docker
博客园 - 三生石上(FineUI控件)

元视角

.NET 生态下的 Agent 框架选型:从 ReAct 到原生推理 - 元视角 从「能用」到「好用」:LLM 流式响应实现方式的探索之路 - 元视角 当我用 2000 条聊天记录,让 AI 为我画一幅自画像 - 元视角 基于 Supabase 的 AI 应用开发探索 - 元视角 微博 × MCP:社交媒体新玩法解锁 - 元视角 四点钟海棠花未眠 - 元视角 Semantic Kernel × MCP:智能体的上下文增强探索 - 元视角 基于 K-Means 聚类分析实现人脸照片的快速分类 - 元视角 容器技术驱动下的代码沙箱实践与思考 - 元视角 温故而知新:后端通用查询方案的再思考 - 元视角 浅议 CancellationToken 在前后端协同取消场景中的应用 - 元视角 Semantic Kernel 视角下的 Text2SQL 实践与思考 - 元视角 关于 ChatGPT 的流式传输,你需要知道的一切 - 元视角 RAG 的是与非、Rewrite 和 Rerank - 元视角 使用 EFCore 和 PostgreSQL 实现向量存储及检索 - 元视角 基于 LLaMA 和 LangChain 实践本地 AI 知识库 - 元视角 使用 llama.cpp 在本地部署 AI 大模型的一次尝试 - 元视角 如何为 Git 配置多个 SSH Key - 元视角 C# 使用 LibUsbDotNet 实现 USB 设备检测 - 元视角 基于 C# 实现样式与数据分离的打印方案 - 元视角 基于 SVG 的图形交互方案实践 - 元视角 前端视频播放技术概览 - 元视角 温故而知新,再话 Python 动态导入 - 元视角 后 GPT 时代,NLP 不存在了? - 元视角 视频是不能 P 的系列:使用 Milvus 实现海量人脸快速检索 - 元视角 GDI+下字体大小自适应方案初探 - 元视角 小爱音箱集成 ChatGPT 的不完全教程 - 元视角 程序员视角下的三体世界随想 - 元视角 关于 Docker 容器配置信息的渐进式思考 - 元视角 在 Docker 容器内集成 Crontab 定时任务 - 元视角 为你的服务器集成 LDAP 认证 - 元视角 似花还似非花 - 元视角 视频是不能 P 的系列:使用 Dlib 实现人脸识别 - 元视角 浅议分布式链路追踪与日志的整合 - 元视角 关于 Git 大文件上传这件小事 - 元视角 .NET 进程内队列 Channel 的入门与应用 - 元视角 使用 Fody 实现 .NET 的静态编织 - 元视角 .NET Core + ELK 搭建可视化日志分析平台(下) - 元视角 聊一聊前端图片懒加载背后的故事 - 元视角 支持外部链接跳转的 Vue Router 扩展实现 - 元视角 视频是不能 P 的系列:OpenCV 和 Dlib 实现表情包 - 元视角 不得不说的 ASP.NET Core 集成测试 - 元视角 再议 DDD 视角下的 EFCore 与 领域事件 - 元视角 Vue.js 前端项目容器化部署实践极简教程 - 元视角 再见,人间四月天 - 元视角 Python 图像风格化迁移助力画家梦想 - 元视角 利用 ASP.NET Core 中的标头传播实现分布式链路追踪 - 元视角 利用 gRPC 实现文件的上传与下载 - 元视角 七种武器:延迟队列的原理和实现总结 - 元视角 gRPC 流式传输极简入门指南 - 元视角 Envoy 集成 Jaeger 实现分布式链路追踪 - 元视角 浅议非典型 Web 应用场景下的身份认证 - 元视角 gRPC 借助 Any 类型实现接口的泛化调用 - 元视角 分布式丛林探险系列之 Redis 集群模式 - 元视角 分布式丛林探险系列之 Redis 主从复制模式 - 元视角 通过 Python 预测 2021 年双十一交易额 - 元视角 gRPC 搭配 Swagger 实现微服务文档化 - 元视角 SSL/TLS 加密传输与数字证书的前世今生 - 元视角 使用 Python 自动识别防疫健康码 - 元视角 你不可不知的容器编排进阶技巧 - 元视角 ASP.NET Core 搭载 Envoy 实现 gRPC 服务代理 - 元视角 再话 AOP,从简化缓存操作说起 - 元视角 ASP.NET Core 搭载 Envoy 实现微服务身份认证(JWT) - 元视角 ASP.NET Core 搭载 Envoy 实现微服务的监控预警 - 元视角 ASP.NET Core 搭载 Envoy 实现微服务的反向代理 - 元视角 ASP.NET Core gRPC 打通前端世界的尝试 - 元视角 EFCore 实体命名约定库:EFCore.NamingConventions - 元视角 ASP.NET Core gRPC 集成 Polly 实现优雅重试 - 元视角 ASP.NET Core gRPC 健康检查的探索与实现 - 元视角 ASP.NET Core gRPC 拦截器的使用技巧分享 - 元视角 SnowNLP 使用自定义语料进行模型训练 - 元视角 使用 HttpMessageHandler 实现 HttpClient 请求管道自定义 - 元视角 ABP vNext 的实体与服务扩展技巧分享 - 元视角 ABP vNext 对接 Ant Design Vue 实现分页查询 - 元视角 源代码探案系列之 .NET Core 跨域中间件 CORS - 元视角 源代码探案系列之 .NET Core 限流中间件 AspNetCoreRateLimit - 元视角 源代码探案系列之 .NET Core 并发限制中间件 ConcurrencyLimiter - 元视角 通过 EmbededFileProvider 实现 Blazor 的静态文件访问 - 元视角 低代码,想说爱你不容易 - 元视角 从 C# 1.0 到 C# 9.0,历代 C# 语言特性一览 - 元视角 通过 Python 分析 2020 年全年微博热搜数据 - 元视角 基于 Python 和 Selenium 实现 CSDN 一键三连自动化 - 元视角 使用多线程为你的 Python 爬虫提速的 N 种姿势,你会几种? - 元视角 实现网页长截图的常见思路总结 - 元视角 温故而知新,由 ADO.NET 与 Dapper 所联想到的 - 元视角 视频是不能 P 的系列:OpenCV 人脸检测 - 元视角 作为技术宅的我,是这样追鬼滅の刃的 - 元视角 使用 Python 抽取《半泽直树》原著小说人物关系 - 元视角 厉害了!打工人用 Python 分析西安市职位信息 - 元视角 使用 dotTrace 对 .NET 应用进行性能分析与优化 - 元视角 一道 HashSet 面试题引发的蝴蝶效应 - 元视角 基于选项模式实现.NET Core 的配置热更新 - 元视角 Dapper.Contrib 在 Oracle 环境下引发 ORA-00928 异常问题的解决 - 元视角 .NET Core 中对象池(Object Pool)的使用 - 元视角 利用 MySQL 的 Binlog 实现数据同步与订阅(下):EventBus 篇 - 元视角 利用 MySQL 的 Binlog 实现数据同步与订阅(中):RabbitMQ 篇 - 元视角 利用 MySQL 的 Binlog 实现数据同步与订阅(上):基础篇 - 元视角 记一次从已损坏的 Git 仓库中找回代码的经历 - 元视角 .NET Core 原生 DI 扩展之属性注入实现 - 元视角 .NET Core 原生 DI 扩展之基于名称的注入实现 - 元视角
记一次失败的 ThoughtWorks 面试经历 - 元视角
飞鸿踏雪 · 2021-02-10 · via 元视角

年前朋友问我,要不要试试 ThoughtWorks 澳洲线的岗位。对于这家号称“世界上面试最难”的公司,多少还是有一点畏惧,直到朋友安慰我说,它们这次有中级的岗位,还是可以试一试的,梦想还是要有的,万一实现了呢?自此,我凑齐了西安. NET圈子里的四大“天花板”公司的面试:葡萄城活跃网络奥博杰天ThoughtWorks ,而对于我来说,亦有幸见识到世界上最难的面试,虽然后来事实证明,这个世界上没有太多的逆袭,可我还是想分享一下我的这次面试经历,因为它让我知道,在过去的两年里,我在哪些方面取得进步,在哪些方面存在不足。当我写下这篇博客的时候,我即将在今年夏天迎来我的29岁,果然我还是希望自己能再努力一点,因为不想让平行世界里的某个人失望。

面试流程

关于ThoughtWorks 的社招流程,大体上由HomeWorkPair ProgrammingFace-to-face Interviews 3个部分组成,其中,HomeWork,即家庭作业,原则上给3天时间来完成,不过据说可以向 HR 申请更多的时间来完成。Pair ProgrammingFace-to-face Interviews 通常是安排到同一天来进行的,前者时间为1.5小时,即传说中的结对编程,面试时会有一左一右两名面试官看着你现场写代码。后者时间为1小时,即传说中的技术文化面试,考察技术的深度、广度以及对 Thought Works 敏捷文化的认同感。

HomeWork

2月18日,下班以后接到HR小姐姐的电话,在明确了我投简历的意向以后,我收到了HR小姐姐的邮件,基本上就是一个家庭作业,三选一提交,需要在三天内完成。我选择了Conference Track Management 这道题目,因为白天要上班,所以,我为此而连续肝了三个晚上。

坦白说,不同的阶段对这道题目的理解是不同的,在做家庭作业的阶段,你以为这道题考察的是职责分离和设计模式;而等到结对编程的阶段,你终于意识到,这其实是个背包问题。当然,这并不是说我会错了意,考虑到面试官有上帝视角,他们更容易看清楚问题的全貌。或许,面试官想最想看到的,恰恰就是你从冰山一角到目窥全牛这一瞬间的反应。

当我接到HR小姐姐的通知,这份作业Review通过时,我内心是非常激动的,因为这意味着我获得了去ThoughtWorks面试的“入场券”。可当我事后再以上帝视角去看待这个题目,我内心又变得非常难过,因为无论怎么看这份作业,都会觉得它设计得并不好,尤其是当它引入弹性时间这个因素以后,我一直深陷于如何从Part 1 到 Part 2,是不是按 Part 2 重新设计会更好一点?此时此刻,终于能理解面试官反馈的,关于扩展性方面的问题。

作业反馈01 作业反馈01

作业反馈02 作业反馈02

作业反馈03 作业反馈03

关于这部分,我个人建议多多关注:

  • 编程风格:编码规范、项目结构、代码坏味道等。
  • 语言特性:澳洲线岗位需要熟悉 .NET Core,所以,我使用 .NET Core 完成整个项目的编写。
  • 设计模式:选择合适的设计模式,遵循 SOLID 原则。
  • TDD:一定要有单元测试代码,这一点TW最为看中。如果写的好,一定是加分项。建议遵循AAA原则来编写用例。
  • 程序满足要求:程序一定满足题目要求,可执行,运行结果满足题意,这是最基本的要求。

Pair Programming

提交作业后,等了一周多的时间,1月29日,HR 小姐姐终于联系我了,正如我上文所述,当时听到这个消息非常激动,因为终于有机会去 ThoughtWorks 这家世界上面试最难的公司去看看,ThoughtWorks 西安办公室位于环普产业园,这个地方相信大家都非常熟悉啦!当时算上周末,我给了自己 5 天时间去准备面试,因为我觉得面对 ThoughtWorks 的面试还是要重视一点,虽然后来好多问题都没有被问到。

结对编程是基本上就是,两个面试官一左一右地坐在你旁边,采用聊天和探讨的方式一起写代码,刚开始本来是用电视投屏“直播”的方式,后来因为 HDMI 接口接触不良的缘故,两位面试官干脆就直接看我电脑屏幕啦!在这个环节,个人感觉解释编码思路花时间太多,重构完有一个用例没有通过。最重要的是,家庭作业阶段的设计不利于现场新需求的开展,所以,这些因素综合起来,导致我结对变成这个部分表现得不好,希望大家引以为戒啊。

整个结对编程时长为一个半小时(1.5h),在这段时间,你需要讲解编码思路完成代码重构完成现场作业,时间上还是非常紧凑的,回想起那天下午的两个半小时,有种像参加高考的感觉:你以为时间会很长,结果发现时间完全不够用。看起来轻松的氛围下,其实在不经意间考察你的沟通能力、工程能力和学习能力,ThoughtWorks 的面试,往往就是这样的朴实无华且“有趣”……

对于这部分,我个人建议多多关注:

  • 工程能力:语言特性、调试能力、设计能力等。像TW非常重视快捷键的使用,频繁使用鼠标会拉低印象分。
  • 沟通能力:善于倾听和表达、以及理解需求的能力,需要你在面试官的引导下完成需求确认,这个阶段一样可以展示你技术的深/广度,但建议最好长话短说。
  • 学习能力:要求你对TDD、敏捷开发等有一定的好奇心,面试官教给你的新东西/思路,能否举一反三、学以致用,我是在重构的过程中得到了面试官的指导,对此我表示感谢。
  • 适应能力:能否以开放的态度接受面试官的重构意见,当意见不一致时,能否有理有据地、自信地表达你的观点,我遇到的问题是,面试官认为我混淆了职责分离和组件依赖。

Face-to-face Interviews

结对编程环节结束以后,正当我还在关注那个失败用例的时候,两位新的面试官就走了进来,就这样,我迎来了那天下午的“技术文化面试”,考虑到天气的原因,我那天穿了一件鬼灭之刃的卫衣就去参加面试了,可那个小房间的闷热还是让人焦躁不安,一杯放凉的白开水,完全不足以缓解那种闷热的感觉。ThoughtWorks 的办公室和大多数外包公司的办公室没有什么区别,不同的是,它的办公室摆满了各种 O’Reilly 的动物书,至少在氛围上确实像它对外所展示的那样重视技术。

在这个环节,我遇到了很多的开放型问题,譬如你经历过的、印象最深刻的项目是什么你在项目中遇到问题以后都是怎么样去解决的你所在项目的人员配置、研发流程是什么样的……等等,虽然一开始还是经典的“自我介绍”,可我感觉我在回答这些开放型问题的时候,缺乏一种系统性思考或者某种方法论,它和回答技术问题不同,有时候我们需要层层展开、关注细节,可是在这样的问题上,它需要的是简洁而准确的答案。面试期间,面试官不止一次提示我听清楚她的问题,难道真的是我的沟通能力出了问题吗?

坦白来讲,这次我准备的很多面试题都没有被问到,我以为至少会问一下.NET Core、微服务 和 DDD 这些东西的。我同样不太明白的,是关于项目经历方面的,为什么面试官会认为,工作中主要负责的内容就是由我一个人单打独斗来的呢?我承认我这几年,性格上收敛了许多,没有了攻击性和对抗性,变成了一个非常随和的人,可我本质上并不是一个喜欢兜售或者推销的人,我并不觉得无法口若悬河是缺乏自信的表现。后来,面试官就考察了一下我的口语,本来就是口干舌燥,说到为什么选择 ThoughtWorks 的时候,大脑有一点卡壳,一边在组织中文,一边在想怎么翻译成英文,还有什么比结结巴巴地说完一段英语更让人难过的呢?

对于这个部分,我个人建议多多关注:

  • 系统思考:结合工作经验,不断去提炼类似架构方向、敏捷开发、项目管理方面的内容,不要永远局限在一个点上看待问题,不管是表达还是编程,都采用系统性、结构化的思路来梳理,要做到清晰、准确、完整。
  • 自信:ThoughtWorks 是一家咨询服务公司,所以,很多研发都是顶着咨询师的头衔,个人觉得还是自信一点,会就是会,正常交流,不会的话,就虚心接受,表现出后期愿意去学习的状态。
  • 协作能力:能否影响和带动团队中的人一起学习、成长,ThoughtWorks 盛行学习和分享的文化,你一定听说过它们的技术雷达、洞见。
  • 沟通能力:这体现在你能否和客户正常地沟通、能否和团队成员达成有效的协作,虽然程序员都不大喜欢说话,但你至少应该能传达出正确的声音、能理解来自别人的观点。
  • 动机:对 ThoughtWorks 的意愿性/认同度,为什么会考虑 ThoughtWorks 等这些问题。

面试心得

其实,当天面试一结束,我就知道这次面试大概率是凉了。回去的路上,我和老大哥说了我面试的过程,老大哥说,“让我冷静,要对自己有信心”。果然,第二天下午,收到HR小姐姐的回复,说面试没有通过,看了下面试官反馈的意见,主要是在结对编程过程中重构做得不好,对重构的意义不太明确;其次是面试官觉得我在沟通方面还不够大胆,希望我可以在发展他人方面做出改变

听到这话,怎么突然就有种传销的感觉呢?说到影响别人,从12年开始写博客至今,我自认为我的博客还是帮助到了很多人,可能面试官一直觉得我在单打独斗吧,都2021年了,早就不是求伯君、雷军这些前辈们单打独斗写软件的时代啦,所以,果然还是我的表达出现了问题吗?我的朋友们经常批评说我沉迷于技术无法自拔,可我同样见过30多岁怕别人问原理的“中年”程序员,原本这个行业因为门槛低而越来越内卷,而这个圈子里的人又不以技术为重,有太多单纯为了钱而进入这个行业的人。可当整个行业都越来越“体力”劳动的时候,有很多浮躁的人跑来你面前说,技术并不重要类似的话,这个世界到底怎么了呢?

我想说什么呢?我认为技术因素和非技术因素都很重要,其实写作一直是我练习表达的一种方式。也许,在那些能言善辩的人眼中,我们这些“闷葫芦”都是些内向的、不太会沟通的人吧!这次面试结束以后,我打算找点系统性思考方面的书来看看,继续背单词增加词汇量,利用空闲时间来练习口语我从来不认为,一个技术人员努力钻研技术有什么不对,因为这是一个技术人员的基本功。沟通能力能做到妙语生花是一种艺术,而我,追求的目标非常简单,即有条理的、清晰的、结构化的表达,我不追求所谓“高情商”的话术,人类时常因为这些模棱两可的字眼而相互误会,因为信息失真,因为信息冗余。当然,此刻我的首要目标是,完成那个家庭作业的重构,因为它写得实在是太糟糕啦!