字节跳动+微软实习经验分享(方法论)

下面按照牛客推荐的创作主题逐项说明,全文只讲方法论哈。

1. 暑期实习or日常实习如何准备

首先说明一下小标题中的两个概念,暑期实习和日常实习并不是以时间维度划分的,算是某些公司的两类岗位:

  • 暑期实习:一般在暑假及前后的时间(但一般也可以主动调整到更靠前的时间),为明年毕业的准应届生设置的为期三个月左右及以上的实习,与秋招会存在一定的时间冲突。公司发起暑期实习一般会对实习生有较高的要求,会考察实习生是否有能力胜任该岗位的正式工作。暑期实习一般都有转正机会,实习生完成比较拿得出手的项目并参与公司的转正答辩,通过后可以拿到转正offer
  • 日常实习:相比暑期实习,没有严格的时间界定,往往是组里缺人手时候就会流出hc,并且不一定有转正机会(可以在电话里询问hr,例如我曾面过的Unity彼时明确说明没有转正机会),日常实习生在团队中一般是指哪打哪,可能打杂也可能做重要的工作

目前,很多大厂不再区分暑期实习与日常实习,这两个概念也没有那么重要,但会对实习的最短时间有一定的要求,可以与hr聊清楚。

在准备实习时,请

  • 准备一份完善的简历,需要明确点名自己擅长的技能,在参与过的项目中明确说明自己负责哪一块工作,并取得了具体的哪些成果,简历从远处看需要做到内容充实,不要有大块留白
  • 从相关平台(如牛客网)大量参考其它人的面经,对于不确切如何回答的地方逐条搜索,但一定不要背答案,将内容理解做到融会贯通
  • 大量且快速地刷LeetCode,不要花过多时间思考,把正确的思路记下来,面试时思路比实现更重要
  • 最好准备一块数位板,用于和面试官沟通算法思路
  • 尽早投递,除内推外,可以考虑使用boss直聘投递
  • 保持自信、兴奋和持续沟通,良好的沟通能力远比背诵能力更重要

2. 实习公司

  • 字节跳动
  • Microsoft

3. 实习主要工作内容

在字节跳动负责审核链路的维护,如开发A/B实验逻辑,开发新的审核链路等。

在微软主要负责新的性能优化方向的探索,用带RDMA的SMB代替RPC进行数据传输。
(这里因为隐私所以写的比较简略,在简历上务必要具体地写清楚做了什么、得到怎样的效果,取得的性能提升或者是业务指标的提升,一定要让人看到你做的事情的价值)

4. 自己所学的知识在实习工作中的运用

在字节跳动时,实习前便花一周时间自学了golang,实习时主要写的也是golang和python。还有就是一些微服务的知识,RPC、服务调用、扩容等。另外还出过一点事故,数据回扫时候用到了SQL的知识。

在微软用到了之前自学过的C#和C++的知识,还有就是一些非常底层和偏架构的知识,例如Data Consistency、Crash Consistency、Distributed Transaction怎么考虑和设计之类的。另外还有一些操作系统多进程、网络传输、和磁盘存储的知识(因为做的事情是存储服务相关的)。

5. 岗位发展前景+实习体会

我实习的这两个组其实正好是两个极端:

  • 互联网+极其偏业务的岗位
  • 外企+极其偏基础架构技术的岗位

前者会比较赚钱,许多同学都会有个误区就是过分高估了技术的力量,其实做互联网就是在做业务,业务是给公司赚钱的,而技术只是给公司省钱的。在字节有了很多的业务理解,明白这个事情为什么要这样做,哪些能做哪些不能做,提升也很快。
(大家在实习的时候也一定要重视培养自己的业务理解,这些东西才是出了公司到学校里学不来的财富)

后者是偏底层技术的岗位,而且因为是toB所以不和客户沟通的时候其实对他们的诉求也没有那么多了解。但是是能很好的提升自己的技术能力的,这种技术能力不是“讲讲Spring的事务隔离机制”这种背出来的东西,在微软能体会到深耕多年的工程师看技术问题的角度和全面性,在这个岗位技术发展决定了不容易被淘汰。
(如果去了很infra的组,可以多向组里的前辈学习他们思考技术问题的角度,会有很不一样的感受)

6. 校招建议

这个板块不在牛客推荐的创作主题里,额外加上哈。

  • 尽早投递。可以看到在校招建议这一块里我把这一项放到了第一位,因为这才是校招里最重要的,甚至比你会什么更重要。很多小伙伴没有意识到这一点,总是觉得自己准备不够,投晚了然后hc少竞争大越挂越没有信心,一定要尽早投递,能走提前批就走提前批,如果实习过稍微再捡一下实习时候准备的内容投提前批完全没问题。
  • 如果有实习,一定要在实习时候就刻意搞清楚几个问题,并在简历上写清楚自己做的事情(如果有小伙伴不确定自己的简历有没有问题可以私我帮忙看下
    1. 你所在的大组是做什么的,从整个公司的产品来看,到底处在什么样的定位,其价值在哪里
    2. 你所在的小组是做什么的,平时组里的人都是如何协作/各司其职的,你平时的工作又是如何与整个小组协同的
    3. 你所做的工作在项目中处在什么样的位置,其深层意义在哪里,解决的是什么业务问题
    4. 团队的短期目标和中长期目标
    5. 你从这份工作中获得了什么,又有什么自己的体会和见解,无论是技术上还是业务上的
  • 提前思考好如何回答为什么投递这家公司/岗位,特别是pdd
  • 沟通问题,同上

总的来说,招聘工作不是一个比谁会的多的过程,很多软技能其实很容易被候选人在长时间的准备面试中忽略了,我个人认为以下几个能力就很重要

  • 沟通顺畅,条理清晰,落落大方
  • 如何表现出你重视团队协作,特别是,不要在面试中自负地抨击曾合作过的任何人
  • 如何表现出你对技术的热情,对技术热情的人一定是有比较广的知识面的,而且能和面试官聊起来,而不是背诵标准答案
  • 在hr面时,最好透露出你是一个既然喜欢这份工作又有生活的人,并对未来有自己的规划,而不是一个工作狂或是单纯为了钱而来的打工仔

给个三连吧~有什么问题欢迎在下面评论区留言哈

全部评论
大佬
1 回复 分享
发布于 2021-12-02 21:43
请问大佬,微软SE需要哪些技术栈呢
1 回复 分享
发布于 2021-12-20 20:51
文章质量很高,干货满满,可以看到很多楼主的思考,不愧是大佬,收获很多,感谢。
点赞 回复 分享
发布于 2022-01-14 11:03
大佬,我准备找日常实习,六月份入职,啥时找何时呢
点赞 回复 分享
发布于 2022-01-12 20:33
请问大佬,提前批这些时间信息一般在哪里找呢,刚错过了微软提前批😭
点赞 回复 分享
发布于 2022-01-10 20:48
大佬最后去微软了吗
点赞 回复 分享
发布于 2021-12-17 11:39
太强啦
点赞 回复 分享
发布于 2021-12-14 02:11
大佬写的好棒啊
点赞 回复 分享
发布于 2021-12-08 09:46
🎉恭喜牛友成功参与 【创作激励计划】实习经验分享专场! 前50位用户可直接获得牛可乐抱枕1个哦~ ------------------- 创作激励计划5大主题专场等你来写,最高可领取500元京东卡和500元实物奖品! 👉快来参加吧:https://www.nowcoder.com/discuss/804743
点赞 回复 分享
发布于 2021-12-02 21:47

相关推荐

总结:面了十几分钟,问的八股我准备的不是很好,有点尴尬通用问题1.有了解我们宁银消金吗2.你父母的职业3.你未来的打算4.你是网络安全专业,以后会从事这个方向吗5.问了去单位实习的内容6.你gap一年是在备考吗7.你有做过后端开发项目吗,为什么要来后端开发呢八股1.Spring前后端的参数传递方式有哪些一共有五种方式。第一种是路径传参,可以直接通过url传参@GETMapping("/users/{id})public User getUser(PathVaraiable("id") Long userId)将id绑定到userId上用途:标识唯一资源(用户ID,订单号等等)第二种是查询参数QueryParameters通过URL的?key=value传入,用于筛选数据可以传递附加条件(筛选,排序,分页等等)public String getUsers(RequestParam("name") String name,RequestParam (age) int age)第三种是请求体传参(@RequestBody)@RequestBody可以将JSON格式绑定到JSON对象上第四种是表单参数(Form Parameters)使用Request Param支持url编码和form-data(可以文件上传)主要用于POST/PUT请求会隐藏在请求体中,是不可见的第五种是请求头参数,通过HTTP请求传递信息(如认证令牌)实现方式:使用@RequestHeader注解来绑定信息)@GetMapping("/auth")public String checkAuth(@RequestHeader("Authorization") String token) {// 验证token}2.抽象类和抽象接口有了解吗抽象类定义 多个相关类有共同属性和部分共享逻辑,就可以抽象出一个抽象类抽象接口定义 声明一组无关类需实现的能力(例如Comparable定义比较规则)它可以实现多继承效果面试官​:抽象类和接口的区别是什么?​回答​:​核心目的不同​:抽象类为相关类提供通用模板(is-a),接口定义行为规范(can-do)。​代码灵活性​:抽象类支持部分方法实现,接口通过默认方法向后兼容。​继承机制​:抽象类单继承,接口多实现,适用不同扩展需求。​选择依据​:用抽象类:多个类共享状态和部分行为(如动物类族)。用接口:定义跨类能力(如序列化、比较)或实现多态3.面向对象的五大原则面向对象的五大设计原则(SOLID)是构建可维护、可扩展软件的核心准则,以下是具体解析及实践要点:📌 一、单一职责原则(SRP, Single Responsibility Principle)核心思想 :一个类只应有一个引起变化的原因。● 作用 :避免职责扩散导致的高耦合。例如,职员类若同时处理工程师、销售、经理的职责,会导致方法内充斥条件判断,任何需求变更都可能影响整体。● 实践建议 :按功能拆分模块。如图片加载框架中,将图片加载与缓存分离为两个独立类。🔄 二、开放封闭原则(OCP, Open-Closed Principle)核心思想 :对扩展开放,对修改封闭。● 作用 :通过抽象隔离变化。例如银行业务中,通过IBankProcess接口定义流程,新增基金业务只需扩展FundProcess类,无需修改原有代码。● 实现方式 : 使用策略模式(Strategy)或模板方法模式(Template Method)。○依赖抽象接口而非具体实现。🔁 三、里氏替换原则(LSP, Liskov Substitution Principle)核心思想 :子类必须能替换父类且不影响程序正确性。● 作用 :确保继承关系的合理性。反例:正方形继承长方形时,若修改setWidth()会同时改变高度,破坏行为一致性。● 关键点 : 子类方法的前置条件不能比父类更严格,后置条件不能更宽松。○避免重写父类非抽象方法。🧩 四、接口隔离原则(ISP, Interface Segregation Principle)核心思想 :客户端不应依赖其不需要的接口。● 作用 :避免“臃肿接口”。例如电商订单系统,为门户(查询)、外部系统(插入)、后台(全功能)分别定义专用接口。● 实践建议 : 按角色拆分接口,如IOrderForPortal仅含getOrder()。○避免强制实现无关方法,减少依赖污染。⬇️ 五、依赖倒置原则(DIP, Dependency Inversion Principle)核心思想 :1.高层模块不依赖低层模块,二者依赖抽象;2.抽象不依赖细节,细节依赖抽象。● 作用 :解耦模块关系。如图片框架中,业务逻辑依赖ImageCache抽象接口,而非具体的内存或本地缓存实现类。● 实现方式 : 依赖注入(DI)或工厂模式。
点赞 评论 收藏
分享
评论
66
232
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务