Fork me on GitHub

关于大厂的工作方式的思考

0. 背景

作为一个非科班转码的开发岗实习生,由于在学校呆了太久,科研思维深度浸润入脑,很多时候并不能适应大厂的工作方式。好在有一位资深的同事跟我聊了一下,因此整理了一下我跟他的谈话内容,希望能掌握大厂的工作方式。

1. 文档优先的开发模式

在学校中,尤其是在做科研的时候,因为科研具有的极大不确定性,比如:

  • 需求不确定,你只要能解决一个前人没解决过的问题就能发文章,很多时候会有一些“无心插柳柳成荫”的情况出现,因此需求的变动性很大;
  • 代码是否能达成我们所需要的效果不确定,很多时候代码是达不到预期的目标的,需要经常迭代代码,更换各种处理环节的逻辑,甚至算法的主要逻辑。
  • 团队成员少,很多需求需要自己去提出、自己去实现,没有其他同事去辅助,项目相关的上下文只保留在少数人的脑子里,“船小好调头,也总是掉头”,基本不依赖团队协作。

这些原因导致在学校中往往采用代码优先的开发模式,项目相关的文档很多时候是被忽视的一环。但在vibe coding 十分发达的今天,“Code is cheap,show me your prompt”。一份完善的项目文档,显然能帮助我们更好地理解项目的功能、实现原理等,也能更好地与团队成员合作。

因此在大厂中,文档优先的开发模式是非常重要的。我们需要在正式开发之前,先写好项目相关的文档,包括设计文档、接口文档、技术评审文档等,这些文档能够帮助我们更好地理解项目的需求和设计,也能更好地与团队成员合作。

2. 拉通对齐

常见的需要拉通对齐的场景有:

  1. 需求不明确,需求方和开发方对需求的理解不一致;
  2. 设计不合理,设计方和开发方对设计的理解不一致;
  3. 调用其他模块的接口时,需要充分了解其他模块的功能,了解利用其他模块的功能解决,我们需求的时候存在哪些风险点,必要时需要与其他模块的开发人员沟通,确认是否有其他方案。

其实对于技术来说,技术评审会往往就是一个双向拉通对齐的过程,你依赖的其他模块的开发者会问你你开发的东西中关于他们的模块是怎么用的,而你也会问他们用他们的模块是否合适,是否存在风险点。

做项目其实也就是主要就关注需求和风险这两者,真正的技术细节和代码实现是次要的。

3. 开发前问自己的几个问题

以能获取 眼镜端各种能力 的 手机端sdk开发为例,在正式开发之前,我们需要问自己以下几个问题:

  1. 你做的sdk是给谁用的,是公司内部人员,还是公司外的客户?他们对于你sdk的需求和潜在的需求是什么?
  2. 手机端sdk能获取眼镜端的什么能力,能通过这些sdk实现什么功能?
  3. 眼镜端的能力作为一个服务,需要通过什么形式暴露给手机端sdk?
  4. 眼睛端服务需要提供哪些功能?在什么时候能被手机端拉起来,什么时候拉不起来去世了?如果拉不起来了,手机端sdk应该怎么处理,眼睛端服务如何能尽量复活?
  5. 眼镜端和手机端是如何交互的,他们的通信链路是怎么样的?走的什么协议?用的什么接口?双方的进程状态如何?
  6. sdk的接口如何设计?需要考虑哪些因素?比如接口的参数、返回值、错误码等?
  7. 如果存在一些特殊的要求,比如低功耗、性能要求等?你要怎么处理?

4. 结语

对于自己一知半解的问题,切勿自行理解,一定要和对应的成员及时沟通,避免和其他成员的理解出现偏差。

需求开发流程:需求方 -> 设计方(包括ui设计等) -> 开发方 -> 测试方 -> 需求方

(负慎)大厂landing一周感受

lz 作为 开发岗实习生 刚 landing 北京某大厂一周,目前工作强度早10:30 - 晚21:30(等打车),周五还能稍微早点下班且有双休。虽然感觉作为一个零基础的实习生目前也没有太多需求给我做、压力也不算太大,但感觉正职还是挺累的。

带我的一个正式工同事,基本上晚上得十一点多才能下班,并且周末基本上至少也要加半天班。由于有和美国同事合作,中午休息的时间有的时候也要开会啥的,本来规定的午休时间是两个小时,但实际休息时间也就半小时到一个小时。晚上忙的时候经常随便吃点东西半小时不到就回工位工作了,而且感觉开发的工作强度很大,基本没有摸鱼的时间,基本要么看代码、要么上会、要么写代码开发新功能。组里的领导有的时候还会半开玩笑的劝他加班啥的,感觉十分吓人。

我感觉我下午快两点就有些困了,基本上到了晚饭以后就没啥工作效率,而且我老是想着摸鱼,感觉上班不摸鱼自己就吃亏了(bushi)。这种工作节奏也不知道那些正职是怎么坚持下来的。这还只是一个偏预研的组,如果是大厂的核心组,那工作强度估计都很难想象。

我以前本来还觉得自己能忍受大厂的工作强度,能为了做一些高精尖的东西而燃烧自己。但当自己真的来到了一个不错的平台、做着一些fashion的东西的时候,我却犹豫了。搞不懂为啥技术(尤其是开发岗)就需要这么大的工作强度,为什么做技术不能wlb一点,为什么永远要被需求推着走,为什么不能在工作之余有一些自己个人的技术探索的时间。在本硕阶段,我一直都对多个领域保持着浓厚的兴趣,喜欢在不同的领域里探索一些有趣的东西,但现在感觉自己好像只能在一个领域里被动地做一些需求了,感觉挺压抑的。

现在也不知道作为一个有所追求技术人,适合自己的工作在何方。也许是我既要又要,太矫情了吧。这天底下可能真的就没有又有技术含量、能wlb、又能允许有个人技术探索空间的工作了吧。可能当自己某一天真的对技术没有追求了,也就真的释然了,放下了吧。

粤港澳大湾区数字经济实验室一面

感觉凉凉,跟岗位要求完全不一致。面试本来是45分钟,但是十分钟就面完了

1. 问题

  1. 自我介绍
  2. 简单介绍下你的项目
  3. 你这个迁移到 NPU 是怎么做的?
    A:支支吾吾,通过调用 pytorch-npu 接口,欺骗 pytorch 认为它在 GPU 上运行,实际上是在 NPU 上运行。
  4. 对 ONNX 和 TensorRT 有了解吗?
    A:在面试之前有做一些了解,ONNX 是一个开放的神经网络交换格式,可以让不同的深度学习框架之间进行模型的互操作。但是我没有实际使用过 ONNX 和 TensorRT,所以不太清楚它们的具体细节和应用场景。
    Q:那我感觉你不太适配这个岗位啊
    A:QAQ
  5. 你对cpp熟悉吗?写过cuda算子吗?
    A:熟悉,没有写过cuda算子
  6. 你这个模型是纯粹 CNN 的模型?为什么模型预测性能不会随着时间增长有下降呢?
    A:主要是因为我 input 的时间窗口足够大,能够捕捉到足够的上下文信息,所以模型的预测性能不会随着时间增长有下降。
  7. 你说你的模型只能预测 T+3 时刻的温盐流场?为什么能实现 10 天的预报呢?
    A:是的,我的模型只能预测 T+3 时刻的温盐流场,但是我可以通过递归的方式来实现 10 天的预报。具体来说,我可以将模型的输出作为下一次输入,依次进行预测,直到达到 T+10 时刻。
  8. 实习时间?
    A:年后开始,三个月,一周五天

2. 反问

  1. 公司目前卖的产品主要是针对客户的需求非标定做的?还是针对某个行业的通用产品?
    A:主要是通用的,不过也会根据客户的需求进行定制化开发。
  2. 目前系统主要部署在哪些平台上呢?
    A:主要是部署在Windows系统上。cpp代码也主要是针对Windows系统进行开发的。

惠每云科技二面

公司介绍

面试形式:电话面试

面试问题

面试偏八股,主要就是问问简历项目。面了半个小时。

1. 简历问题

1. Q: 自我介绍(点我展开) A: Q:问了一些个人情况,比如是否满足毕业要求之类的? A:满足毕业要求,我的导师也不怎么管我
2. Q: 你做的项目里有没有做的比较好的?介绍一下? A: 对简历里的一个项目(某海域背景场全水深预报)进行介绍
3. Q: 你的模型的架构是什么?亮点是什么? A: 架构略。亮点是能有效降低累计误差,并且是一个全水深预报
4. Q: 你的模型Encoder用的CNN我能理解,为什么Decoder也需要用CNN呢? A: 因为我模型的输出也是图像,并且我想让他和输入层的图像维度一样,我需要把Encoder压缩掉的空间特征上采样回去,类似U-Net
5. Q: 你的模型效果怎么样? A: (支支吾吾)跟那些大模型在前几天上差不多,(讲了一堆局部海域为什么需要小模型,小模型相对于大模型的优势)
6. Q: 你的模型输入数据的维度? A: 是五维的数据 维度是 (B,T,C,H,W) 分别代表批量大小、时间数、通道数、高度、宽度 Q:你这个模型的时间维度是把不同时刻的图像堆叠到一块处理的吗? A:是的,把 T-72 到 T 的数据堆叠到一块作为X,预测 T+3 A:C是各个变量,H是纬度,W是经度
7. Q: 那你是怎么实现T+3以后的预报的? A: 我就是把模型的输出再作为下一次的输入,循环迭代实现多步预报,相当于自回归
8. Q: 你模型的loss是什么? A: MSE
9. Q: 你的模型和其他模型相比效果怎么样? A: 跟22年之前的模型比是更优的,但还是比不过大模型
10. Q: 你的模型的loss和其他模型的loss比怎么样? A: 因为我们这种温盐海流数据,一般需要做个归一化再输入模型里面
11. Q: 你这个预报结果能的做的好的原因是什么? A: 我觉得可能是CNN本身具有关注局部特征的一个特征,海洋的温度盐度啥的一般都是有连续性的,CNN的这种特征更适合小区域连续变化的数据 A:还有就是对时间特征的这种处理上,我这里是把T-72到T的数据放在一块了,不会向RNN一样,把时间拆开来处理
12. Q: CNN和RNN的区别? A: RNN的话权重随着时间增长是不断传递的,随着时间传递的增加,前面的权重会越来越小,导致长时间的依赖关系会被弱化
13. Q: 模型预测的bad case有做分析吗? A:一方面可能是我没有对陆地的温度和盐度做mask,陆地的输入会对预测结果产生影响,会影响长时间预报的准确性 A:一方面是因为我用的是数值模拟的数据,这个数值模拟模型中途有换过模型版本,导致数据不连续,在有跳变的时间预测效果也会差
14. Q: 你用的是什么数值模拟的数据啊?是海洋的数值模拟模型,还是其他领域的模拟模型? A: 用的是一个叫HYCOM的数值模式数据,是海洋的数值模拟模型。
15. Q: 要训练多久?数据多少条? A:我笔记本3070一个epoch训练4小时,数据条数略
16. Q: 你还有什么项目做的比较好的吗? A:还有就是我本科的论文,但那个跟深度学习就没啥关系了,是一个传统的信号处理的项目,我之前看这个岗位叫声学前端还以为是一个偏声学信号处理的岗, 结果还需要深度学习相关的知识 Q:好的,确实咱们这个岗位是大模型相关的,需要深度学习基础

2. NLP相关八股

这块打得稀烂,还是准备不足

1. Q: 大模型你有了解吗? A:不太了解,但我最近有在看一些NLP的论文,加班加点的学习 Q:有了解什么模型吗 A:有看过transformer、BERT,GPT和llama还在看
2. Q: 这些模型的loss有了解吗? A:(支支吾吾)transformer的loss应该是一个Logistic loss(这里回答错了,应该是softmax),BERT的loss也是一个分类的loss,GPT和llama我就不清楚了。 Q:好的,那不问你这些技术上的问题了。

3. 杂项

1. Q: 你觉得你是一个偏科研的人还是一个动手能力比较强的人? A:我觉得我是一个偏科研的人,但在浙大这一年多做的这些写业务代码之类的事情,也培养了我的动手能力 Q:所以你算兼而有之了? A:算是吧
2. Q: 你平时用大模型用的多吗?有用大模型辅助编程吗 A:我一般用vscode里的copilot辅助编程,gemini我也用 Q:你用这些模型有没有什么心得? A:一般来说做一些简单的任务的时候,我会用一些带Fast的模型快速生成,写一些骨干代码的时候,我会用gemini pro
3. Q: 如何了解科研进展 A:略

反问环节

1. Q: 医患对话数据一般都是比较敏感的数据吧?公司内部有服务器吗? A:你是想问我们的服务是部署在公网上的?还是在医院里的吗? Q:这个我也想问? A:部署在医院的服务器上 Q:公司服务器的配置大概如何? A:公司有A800 和 4090卡,我们也会去外面租服务器。
2. Q: 这个业务目前有在医院实际使用吗? A:背景略,我们这个项目目前主要医生问诊的时候将医患对话转文本,提升问诊效率,并且还能将对话输入大模型自动生成病例
3. Q: 有浙大的同学来这里实习吗? A:有几个同学来过这边,有的已经回去读博了Q Q:这个180/天,是按每个月工作天数算,还是按30天算 A:这个你问HR

结果

面试过了,但要求转岗,转到病例生成部门(传统NLP),还要再面一次HR面,遂放弃。

惠每云科技一面凉经

惠每云科技 语音算法实习生 一面凉经

面试形式:腾讯会议,不需要开摄像头

因为对声学前端这一块基本上没啥了解,所以面试官闲聊比较多,估计凉了

  1. 自我介绍
  2. 有没有语音转文本方面的项目经验?
  3. 对llama有了解吗?
  4. transformer 模型从输入到输出是什么流程?(数据流向)
  5. transformer Encoder 和 Decoder 的区别?
  6. BERT 怎么预训练的?
  7. BERT 预训练做了那些任务?
  8. BERT 和 GPT 的预训练方式有区别吗?
  9. llama 的预训练有了解吗?
  10. 为什么你这个预报模型不选择transformer架构?而是选择一个纯CNN的架构?
    A:
  11. 你简历的这个 SimVP 模型相较于transformer的Encoder和Decoder有什么区别?
  12. 满足毕业要求了吗?导师能放你走吗?

反问环节:

  1. Q:公司工作时间是965吗?
    A:公司9:30上班,6:45下班,午休一小时十五分钟,不加班,人七点基本全走。
  2. Q:公司主要做什么业务?
    A:主要做语音转文本任务,医患对话转文本然后再输入到大模型里,我们主要做的是医患对话转文本这块,也就是声学前端。

结果

没想到过了

上海睿纵时面试

上海睿纵时机器人实习生 面试

公司介绍

一个初创公司,人数十分少,主要做机器人相关的业务。

面试问题

面试没啥硬核的问题,主要就是问问简历情况。想看八股的可以直接叉掉了。

1. Q: 自我介绍(点我展开) A:
2. Q: 你们浙大有一个博士后,也是做海洋方向的,姓戚,你认识吗? A: 不认识
3. Q: 介绍你做过的项目? A: 对简历里的一篇论文(SAR + LiDAR,物理参数反演)、一个项目(某海域背景场全水深预报)进行介绍
4. Q: 你这个模型的输入是什么,是纯图像输入还是激光雷达也有输入? A: 既有图像像素值输入也有激光雷达计算得到的粗糙度,某个位置的粗糙度相当于图像上对应样本点的一个label
5. Q: 你的模型效果怎么样? A: 给面试官展示论文的真实性检验图
6. Q: 你的模型效果怎么样? A: 给面试官展示论文的真实性检验图
7. Q: 你的某海域背景场全水深预报这个项目是你导师指导你做的吗,还是你自己做的? A: 这个项目是导师给我做的,但他不怎么管我,都是我自己做的 Q:你这个项目是语言用的是python吧? A:是的,主要用python
8. Q: 你这个项目的输入数据是什么? A: 主要是下载了20年的海洋学里一个叫HYCOM的数值模式数据,它有时间、深度、经纬度四个维度,通过20年的数据去训练一个 SimVPv2 模型。
9. Q: 你这个专业(海洋技术与工程)主要是什么方向? A: 浙大这个专业很杂,有做物理海洋的、机械的、控制的,我主要是做装备方向的。 Q:你是地球科学学院的吗? A:我是海洋学院的。 Q:那怪不得你不认识博士后,他是地科院的。
10. Q: 你cpp熟练吗(简历上有些会cpp)? A:cpp还可以,cpp11之前的都比较熟练 Q:后面的一些特性就不怎么用了是吧 A:是的
11. Q: 你了解transformer吗? A:transformer 我之前看过它的论文,但是没有实现过self-attention机制 Q:简单介绍一下transformer模型架构 A:八股
12. Q: 语义分割方面的模型你有了解吗? A:我之前有魔改过U-Net模型,主要是参照李晓峰的论文改的 Q:介绍一下你是怎么魔改的 A:我在U-Net的每一层增加了SE模块,这个SE模块具体干嘛过了太久有点忘了
13. Q: 目标检测这块的模型比如yolo这类你有了解吗? A:有看过yolo目标检测相关的论文,结果挺好的但是这块模型的原理没怎么了解
14. Q: 你目前有空来实习吗,你学校里没事了吗? A:我目前小论文已经录用了,学校里也没啥事,主要就是看导师愿不愿意放我出来实习,大论文我可以后面慢慢写,我工作量是做够了。

反问环节

15. Q: 你们公司这边的工作时间情况?需要加班吗? A:早上9点到9点半上班,晚上6点到6点半下班,周末双休,一般不加班,加班一般也都在7-8点就结束了。
16. Q: 公司业务? A:公司主要是做机器人业务的,辅助行人和自动驾驶方向。业务主要是有三块:一块是BEV感知,一块是语义分割(这个产品主要是出海),还有一块是目标识别。 Q:这个出海的产品主要是做国外业务? A:是的,国内目前没有这种产品,但是国外有竞品,我可以把图发给你看看。 Q:这个东西是一个实物啊? A:是的,是一个实物,重量大约5kg左右,用于给老人和残疾人提供避障服务。目前只有概念图,实物的话现在还没做。这块可能跟你的简历也不太相关了,因为这个东西纯视觉的一个东西,也没有激光雷达啥的。 Q:我没有什么问题了

结果

直接offer了。

  • Copyrights © 2022-2026 CPY
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信