(阿里云OC)春招找实习总结附面经阿里云腾讯美团京东
心路历程
今年一开年感觉时间过去的很快,我从三月开始准备面试一直持续到了五月初才拿到offer,倏忽之间现在马上就要入职阿里云了。这一路上经历了许多挫折,心态也发生了很多的变化,好在我最后还是稳住了,还是没有辜负过去的努力,还算比较顺利的拿到了十分理想的offer,总的来说现在回想起来还是比较庆幸的!
所以趁着入职前的闲暇时间,我在酒店总结了一下最近春招的一些经验和经历,也方便以后自己回顾,也算回馈其间我们一直彼此鼓励的牛友们。
春招经验
笔试部分
大厂春招一般是笔试+面试,笔试一般是选择题+算法,选择题部分基本就是靠平时积累和刷一些牛客的真题,所以我就只讲算法部分。拿华为100 + 200 + 300分的笔试分数构成来说,一般拿下个150分就可以进入面试,每道题是按通过用例计分,所以一般是AC第一题然后后面两道题过一些用例就可以达到要求。而且每道题难度不一定是一致的,有可能后面的题你会更加有思路一些,比如华为的笔试第一题描述太多,输入出处理比较复杂,我直接选择去完成后两道题,最后拿了475分,而有的同学死磕第一题甚至导致其150分都没达到。
关于算法是需要提前的系统学习和一定数量的刷题的,推荐先找一些比较系统的算法书籍或网站(这里推一下labuladong的算法小抄)来将经典的算法学习一遍,然后在学习的过程中按题目类别批量刷题,这样才能加深记忆,而且推荐在学习的过程中多做笔记这样会很方便自己复习。最后将********经典的剑指offer和hot100刷了就笔试会比较顺利了,而且面试手撕算法环节也经常出里面的原题。
然后在笔试环节有两个细节是需要注意的:
- 推荐算法解题上最好将公式或者结果计算方法写下来后确认无误后再进行实现,不然容易实现完了一跑发现WA了,这样是十分浪费时间的
- 还有的同学打字速度可能跟不上自己的大脑,这是需要锻炼的,这里有一些不一定所有人都知道的win上的一些快捷键,我也粘一下:
- Ctrl + Backspace / Del 快速删除光标前后的词语或单词。如果你只按 Backspace 或 Del 的话一次只能删除一个汉字或字母,而加上 Ctrl 可以一次删除一个词。
Shift + ↑↓← → 可以用键盘快速选中文字,如果在加入 Ctrl 还能快速选中光标前后的词。 Home / End 可以让光标瞬移到本行最前或最后,组合快捷键 Home-Shift-End-Backspace 就能直接删除当前行。 Ctrl + Home / End 则可以直接把光标瞬移到文档首尾。 Page Up / Page Down 是上下滚动一个屏幕,加入 Ctrl 间也能直接跳转到文档首尾。
- 快速选中当前单词:ctrl+←移动到单词头部,shift+ctrl+→从头到尾选中单词
面试部分
面试部分八股内容一般包括(按我面试岗位的问的频繁程度从上到下排列):
- 操作系统
- 编程语言
- 计算机网络
- 数据库
- linux
- 分布式
- 场景题
然后还有项目经历是必问的,这个一定要好好准备。
关于项目可以按照这样的思路去介绍项目: 介绍项目背景 -> 介绍项目的技术栈 -> 介绍项目自己负责的模块及功能。
我这里就直接引用别人的帖子了:https://www.cnblogs.com/JavaArchitect/p/7586949.html
- 项目背景:简单介绍
- 介绍项目中的技术栈:比如你使用的是什么框架,是ssm,还是springboot等,还有有没有用缓存框架redis,分布式是否有涉及,这些都需要介绍,最好简要的介绍一下用这些技术的原因,这样会让面试官感觉你对这个项目很熟悉,比如可以这样介绍。我这个项目使用的框架是ssm,其中用到了activiti工作流框架,这是因为项目中有很多的工作审批业务,同时用到了shiro框架,另外,为了实现单点登录功能,加入了redis框架。
上面只是一个示例,只要是介绍一下为什么要用这个技术,不会很生硬。
- 介绍你在这个项目中负责的模块:这一点还是要特别注意的,介绍这个的时候就能够看出你所负责的模块的难度,也就是你所做的工作的难度。在介绍自己负责的模块的时候,尽量是一些业务比较复杂的,工作量比较大的模块,整个模块的难度是比较大的,这样的话,面试官听了之后才会有兴趣继续往下问下去。
关于八股部分,经常被问到的课程最好系统跟着书籍或者网站教程学习一遍,尤其是操作系统必定是高频提问的。最后争取能做到面试官问一个问题,你可以给他讲出更多的实现、设计原因、扩展内容。
接下来是十分重要的部分:春招秋招准备一定要越早越好,不要春招提前批都开始了,才看开始看八股刷题。金3银4的3月是春招的高峰期,那个时候我才看到一半,笔试虽然凭着底子过了,但是八股要准备的实在太多,半生不熟的去面试导致好几家都是一面直接挂了。相信面试官也能看出来,这样可能留下不太好的面评。
但是也不能完全准备好了才去面试,那个时候HC都被占的差不多了,很可能最后选择余地很小。可以提前找一些面试简单一点的厂子面试着,积累面试经验。
面经
最后附上我经历的面试的面经吧。本人简历情况是双9,本科有过一段大厂实习经历,简历写了公司的一个项目以及学校的一个项目,从国际级到校级的奖项刚好基本各有一个,语言主写golang。牛友们可以根据我的情况参考一下~
京东一面 (30min 京东微服务中间件开发部门)
- 自我介绍
- 实习项目中确保结果准确性
- 实习项目上游数据有问题怎么办
- Golang new 和make的区别
- 为什么多协程优化,不使用协程呢?
- 实习项目过程中还有什么可以优化的地方
- 微服务的优势,为什么用微服务
- 怎么确保线程安全
- 信号量和锁的区别
- 你有什么问题吗?
腾讯一面(60min 腾讯IEG魔方 )
- 自我介绍
- 两道题,10-15min讲思路就可以
- 你知道哪些锁:互斥锁、读写锁、自旋锁(自旋锁用在什么地方)
- Epoll 边缘触发和水平触发
- 常用数据结构和算法
- 操作系统确保事务的安全
- 分布式系统中确保事务
- golang中的锁
- golang协程和线程的区别
- waitgroup的用法
- 常见的同步方式
- B+树和B树
- map哈希表的实现
- 项目中你觉得的难点和解决方式
美团一面(60min 美团数据库研发中心 )
- 自我介绍
- 进程的内核的存在形式(内核态用户态?)
- 内存对齐,给了个struct{int,short,char}类型的数组问其对齐大小
- 从文件中读数据到通过网络发出去进行了多少次的内存复制和上下文切换
- 虚函数:说用golang的,这个忘了
- 三次握手四次分手
- 临界区保护的方式
- 进程通信的方式
- 讲讲B+树
- 做题,树的序列化反序列化(剑指 Offer 37. 序列化二叉树)(一直有个null问题,下来发现是java ArrayDeque不能放空指针,面试官说没关系讲讲思路就可以,说BFS)
- 反问看重的技能和技术栈
阿里云一面(30min面试+30min做题)
- 介绍实习项目的架构:15min你们将什么注册为了服务数据储存在哪,为什么(hive冷数据,数据库热数据)剩下的记不清了
- 微服务的劣势
- 微服务的部署流程:应该是考微服务的容器化部署
- 竞赛经历,你负责了什么
- os优先级反转的实现:没了解过这个概念,讲了一下高响应比优先+多级反馈队列优先级提升,面试官说应该算
- 协程线程的区别
- 网络数据包到达目标机器后到对应进程的整个流程
- 反问经过这场面试,您认为我对于与你们部门匹配还欠缺的技术是什么(其实就是大概感受一下面试官对你的满意程度)
- 邮件发来一道题让做
n个人拉成一个圈,给出一个m,他们轮流叫号叫到m的出列,打印出出列的号数列表,约瑟夫环问题,二叉搜索树可以解决。O(nlogn)
阿里云二面(45min面试 + 15min聊天)
- 问了一下九乡河文理学院专硕学硕的问题:5min
- 学校项目:15min,你的设计,给我看一下你项目里你认为写的最好的代码(共享屏幕),剩下的记不清了
- Golang协程为什么快:核心是一种用户级协程绑定内核线程的实现,协助式调度,减少上下文切换的开销...
- Golang slice 扩容:讲了下golnag 1.18之前和之后的实现
- golang垃圾回收:初始版本标记清除法的劣势:全程STW,现在采用三色标记法+混合写屏障
- Go int和int32是同样的含义吗:不是,int根据系统位数定
- Golang chan实现:没看过源码,不过知道是buffer + mutex
- https的实现:TLS握手流程
- 证书链的验证过程:公钥私钥的证书链验证
- 反问经过这场面试,您认为我对于与你们部门匹配还欠缺的技术是什么
- 直接无手撕代码环节
阿里云hr面(30min)
- 自我介绍
- 在你上一段实习经历中你学到了什么
- 面对一个项目你更加趋向于在一开始明确分工还是边做边说,灵活搭配
- 面对一个项目讨论完,你会主动提出明确分工,还是默默接受安排,等做一段时间再说
- 讲讲通过前面两个面试官给你讲完业务的介绍后你对于我们部门的理解
- 你进入我们后对于技术和业务的追求或想法是什么样的
- 反问环节