春招总结
现在个人的春招已经基本结束了,已经通过了字节、蚂蚁、B站、携程等公司的面试。
面试进度汇总
字节跳动:已通过
蚂蚁金服:已通过
美团:HR面一个月后,面试官联系,但已去别的公司,无后续。
B站:已通过
京东:技术面已通过,已放弃参加HR面
携程:已通过
百度:已参加笔试,未约面
网易:放弃参加笔试
腾讯音乐:放弃参加笔试
快手:已挂
自我介绍
首先介绍下个人的情况:
学历:双非一本,软件工程专业,大三
方向:后端开发
技术栈:JAVA(以后转go了)
实习经历:两段小厂实习经历
比赛经历:参加了很多开发类比赛也拿了奖(这个企业不太看),无ACM
项目经历:有写过10个左右的项目(无分布式、无微服务的单机项目)
力扣:200左右
面试经历
以下仅仅是对个人面试情况的总结,不代表公司的实际情况。。
字节跳动
1.24 视频架构一面(日常)
1.25 视频架构二面(日常)
3.13 tiktok直播笔试(暑期)
3.22 tiktok直播一面(暑期)
3.28 tiktok直播二面(暑期)
4.1 tiktok直播三面(暑期)
4.2 tiktok直播HR面(暑期)
4.7 offer
字节是我面的第一家公司,第一次面是被捞的(很久之前投过),当时还没怎么准备,挂在数据结构上了。
第二次面为了求稳,每面间隔都比较长。
字节现在基本都是golang,但是不会限制你会什么语言。
字节主要考察的是操作系统、计算机网络、数据结构、mysql、redis和算法(排序一定要看)。算法真的是所有大厂里里最重视的了,不仅仅要求你要做出来,会让你考虑有没有最优的解法,然后要会求时间复杂度,语言相关的问的比较少(可能因为我学的是java,他们技术栈是GO),不过有被问到java集合和spring。项目经历感觉不是特别看重(二面介绍了下,还没讲完面试官就打断了,说我讲的太啰嗦,也没继续问,三面的时候聊了挺久项目)
阿里巴巴(含蚂蚁金服)
3.3 钉钉一面(暑期)
4.1 蚂蚁国际事业群一面(暑期)
4.7 笔试
4.9 蚂蚁国际事业群二面(暑期)
4.9 蚂蚁国际事业群HR面(暑期)
4.10 蚂蚁国际事业群OC
首先吐槽下一些蚂蚁招人时候的操作,,之前boss上联系了一个人(他联系的我),让我把简历转到他们那(当时钉钉已经挂了),然后我就写了封转部门的邮件到他们那了,然后简历给我挂了。。。(挂了之后我才知道转部门申请只能发一次,然后本来和一个学长联系好了去他们那部门也去不成了)。emm离谱。
首先阿里钉钉,阿里系的只有第一志愿简历不会挂(因为是内推),其它因为是双非,会被卡学历。不过我钉钉一面应该是简历面?面的时间很短,没问几个问题,算法做出来了,面完就给挂了,然后流程显示挂在了简历上。。
后面就是面蚂蚁了,没有任何面试通知,那天晚上来了一个电话直接开始面试。。二面和HR面因为要加快流程所以约的都比较快。
蚂蚁的面试,无八股无算法,基本都是在聊项目和一些经历,当然有被问到几个常见的Java问题和场景类问题,没有考察操作系统,计网,数据结构。
另外阿里笔试30分即可通过(单选+多选+3道算法)。
美团
3.5 笔试
3.11 美团平台一面(暑期)
3.15 美团平台二面(暑期)
3.18 美团平台三面(暑期)
3.29 美团平台HR面(暑期)
美团笔试做出来1道,然后另外有3道0.5左右。
前两面都比较顺,第一面面完当前约面,第二面面试过程中面试官直接说通过了。然后本来美团是只有两轮技术面的,然后这个部门的leader给每个人加了一面。
美团前两面更多考察的还是Java方面的知识(Java集合、Java并发、JVM、框架),当然还有数据库、Linux,没有对操作系统、计网、数据结构的考察,但是三面的时候,问了好多实际的命令(git、JVM、linux),基本命令我都记不住,没想到给过了。面试中没有对算法的考察,一面写了个线程交替打印。二面有问思考题烧绳子。然后美团项目每面都有问。
美团HR面时说要横向对比,到现在也没有结果,我也没去问,有看到说美团已经锁HC了,大概率是被养鱼了。。
Bilibili
3.8 T2开发实习生一面(日常)
3.16 T2开发实习生二面(日常)
3.16 T2开发实习生OC
B站是直接投到的这个部门,流程走的很慢,一面完一周后我打电话问才知道一面通过了,因为二面的时候面试官(是部门leader)已经给口头offer了,所以后续没有HR面。
B站面试体验绝对是最好的了。一面问到了Linux、数据库等一些基础课程的东西,如果你不会或者说的不全面试官都会告诉正确答案(目前只有b站有这待遇),二面1小时全程深挖项目。无算法(二面让写了个10进制转2进制,思考题引出来的)。B站的技术栈是golang,没有被问到java、golang的问题。
面试官真的都好好。。。
京东
4.2 笔试
4.13 零售一面
4.19 零售二面(已通过,尚未约HR面)
京东只有两轮技术面,感觉问的深度相对来说会比较深一点(各种锁、cas、JVM等),二面也有问一些一些高并发、高数据量的解决方案。京东面试没有代码编辑的地方,一面让我共享屏幕写的(写完发现断网了,然后面试官给打的电话,让我讲思路,麻了),二面出了两个算法让讲思路,还有手写sql。京东出结果出的比较快,官网很快就能看到,约面都是直接发邮件自己选时间。
以及更新了京东两次面试的面经,感兴趣可以看下。
快手
3.2 资源管理平台一面(日常)
3.4 资源管理平台二面(日常)
3.7 资源管理平台HR面(日常)
3.13 研发效能一面(暑期)
快手emm
第一次是在Boss上投的,一面面试体验比较好,二面就只介绍了项目,问了下我职业规划就结束了。。然后HR面给我挂了(个人感觉是时间问题,我当时说每周实习3-4天,实习3个月,当然也可能是因为我菜)。
第二次面试体验emm,感觉面试官对我要求可能有点高了(是我不配了,最后被评价基础薄弱、项目简单)。。
快手考察的点感觉和美团类似,主要是Java,项目每面也都有问到。算法可能会考察,这个要看面试官。
快手说是暑期实习可以投很多次,但是挂了一次后简历不可能再给过了。。
携程
3.10 笔试
3.16 酒旅一面(暑期)
3.21 酒旅二面(暑期)
3.25 酒旅HR面(暑期)
已OC
面试很简单,,就不介绍了。
当然也还面了一些其它公司,但是感觉算不上大厂了,没有太多参考价值,就不介绍了。其它的大厂目前还没到面试流程,也不打算继续面了。
常考知识点
Java
- Java集合:ArrayList、LinkedList(两者比较、为什么他们是线程不安全的、扩容机制),hashMap(扩容机制、put流程、为什么线程不安全、构造函数)、currentHashMap。这里推荐一个视频https://www.bilibili.com/video/BV15b4y117RJ?spm_id_from=333.337.search-card.all.click
- Java并发:sychornized、cas(ABA问题)、aqs、reetrankLock、线程池(线程池被问好多好多次了,一定要会,像sychornized底层实现不一定要会,但一定要了解,对一些比如自旋锁、偏向锁之类的名词一定要知道,面试一般不会问太深,因为太深可能得说十几分钟,可以只说说名词),同样推荐一个视频https://www.bilibili.com/video/BV16J411h7Rd?spm_id_from=333.337.search-card.all.click
- JVM:内存分区、垃圾回收、类加载过程、类加载器、JVM命令、字符串常量池(问的不多,但尽量要知道),同样推荐一个视频https://www.bilibili.com/video/BV1yE411Z7AP?spm_id_from=333.337.search-card.all.click
- Spring:IOC、AOP(主要就是这两个了,框架一直是我比较薄弱的,实在不想背八股,不看源码也真的不好理解)推荐视频https://www.bilibili.com/video/BV1rb4y147F2?spm_id_from=333.337.search-card.all.click
- 其它:其它比如面向对象、接口和抽象类、equals和hascode、jdk8新特性、内部类等也最好都了解下,不过问的不多。(这里如果面试官问你用什么jdk,最好说8,因为紧接着就会让你说他的新特性)
Mysql
- 索引:聚簇索引和非聚簇索引、B+树和哈希、覆盖索引和回表、最左匹配原则、索引下推、索引失效、explain
- 事务:四个特性(原理也要会)、事务隔离级别及可能产生的问题、MVCC。
- 锁:悲观锁和乐观锁、读锁和写锁、表锁和行锁、意向锁、死锁。
- 存储引擎区别。
- 三大日志:undolog、redolog、binlog
- select、update执行流程
- Sql优化经历
Redis
推荐一个大佬的博客 https://www.laoyu.site/categories/
- 5种基本数据类型(介绍、使用场景、底层实现)
- 备份策略
- 缓存、mysql数据一致性
- 击穿、穿透、雪崩及其解决方案
- 过期键删除策略
- 内存淘汰机制
- redis为什么这么快?
操作系统
- 用户态、内核态、系统调用
- 进程管理:进程和线程的区别、进程通信方式、PCB、进程状态切换、进程调度、死锁
- 内存管理:分页分段、虚拟内存、页面置换算法、快表机制(局部性原理)
计算机网络
- 网络模型
- 应用层:http(http各版本区别、https加密过程、http方法、状态码、cookie和session)、dns(迭代查询和递归查询)
- socket:是什么?UDP和TCP在socket上的区别、socket四元组
- 传输层:TCP(可靠传输、流量控制、拥塞控制、面向字节流、三次握手四次挥手)、UDP
- 网络层:IP协议、ICMP协议
- 数据链路层:ARP协议
Linux
- 部署java项目时会用到什么命令?
- top
- ps
- netstate
- find
- jps
- 日志相关
IO
- IO网络模型:NIO、BIO
- IO多路复用:select、poll、epoll
个人建议
语言的选择
现在后端用的语言一般就是go或java,那么我们应该准备什么语言?
个人觉得应该准备java,首先一点java目前岗位还是更多的,另外最重要的一点是,java岗位一定问你java,go岗位不强求你会go。。
简历
简历一定要好好的写,建议当不知道自己简历写的怎么样的时候,可以再投递简历之前,问一下内推的人,让他们看看你的简历有没有什么不足的地方。
个人觉得简历里最重要的还是专业技能和项目经历。给大家对比下我同一个项目最开始的介绍和最新的介绍。
最开始:
最新:
可以很明显的看到,最开始的时候,我仅仅是介绍了我在项目中的角色和完成了那些模块,那其实这样写是完全体现不出来你的水平和能力的。并且结构化也不行。
个人觉得项目最重要的就是介绍自己完成的一些核心模块,以及自己是怎样设计和优化的,这里可以只写核心实现,对于一些简单的CRUD就没有必要网上写了。
最终这份简历我也是找很多人帮我看了之后才最终确定的。
另外就是简历中尽量不要造假,就算造假你也要保证你写上的东西是你掌握的。
如何投递
可能会有很多人觉得自己准备的不好,不太敢投,包括我很多朋友也会想等准备的差不多了再投,其实这种想法个人觉得是错误的,
首先就是,当我们以及约了面试时,这个时候我们学习的动力是会比我们单纯准备大很多的,因为会有那种紧迫感。。就像我个人来说,每次面试的前几天或者当天,学习效率和取得的进步都是最高的。 另外就是,我们可以通过面试来找到自身很多的问题,然后来不断的完善,因为面试不仅仅会考察你的技术情况,还可能会考察你的表达能力、沟通能力等。
个人建议先从小厂开始投,其实大厂和小厂的面试模式没有太多不同,只是说技术的深度和广度考察的不太一样。从小厂开始面的好处,一是熟悉面试流程,增加的面试经验然后找找自信,让自己面大厂的时候不至于太紧张。(记得我第一次面试是面的字节,当时真的紧张的不行,不过面过一次之后就会好很多了)
然后一定要多投多面,其实面多了就会发现问的东西也就那些。
技术面
首先前置的准备肯定要做好:基础的掌握(基本的东西一定要会,准备一个月其实就能达到一个不错的水平)、项目的准备(一定要打磨一到两个比较好的项目,这个尽可能还是早做准备,因为其实比如蚂蚁,就特别重视你的项目经历)
另外就是一些面试技巧上的东西:
首先肯定是要尽可能克服紧张的情绪吧,最好的能达到一种和面试官就是聊天的模式,这样就非常舒服,然后语速尽量不要太快(我就容易快,太快了反而表达不清楚,而且会显得很紧张)。
然后遇到不会的点的时候,如果说这块知识你真的是没怎么了解过,那就直接和面试官说就好了(当然还是那句话,基础的必须会),面试官也不会太在意,如果问一些你不太确定或者会一点的东西,你可以适当把自己会的东西说一点,但不要完全不沾边,然后补充一句你对这一块了解的也不是很多。但是不要瞎说,那样不如不说。。我曾被评价“说的基本都是错的。。”
然后面试可能会考察场景题和思考题,这个可以做一些针对性训练。
另外做算法的时候,包括一些场景题、思考题,不会不要完全放弃,首先要有思考的过程,然后可以问下面试官有没有什么提示(当然你不能一直让他提示)
还有就是在表达的时候,尽可能的表的的有条理、简洁一点,说的太乱的话也会减分的,所以对于一些表达能力弱的同学,可以加强一些训练,比如找其它同学给你做个模拟面试,或者对着面经自己组织语言表达出来。。像我之前就想把所有东西都讲出来,想讲的很详细,然后东西就会表达的很乱。。。没有必要面试官问一个知识点你就刻意的往深了讲,你可以暗示一下面试官你会一些更深的东西,或者问他需不需要深入的讲。
HR面
HR面提前想想那些问题就可以了- 对公司的看法?
- 对前几轮面试的评价?
- 个人评价?(提交想几个优点和缺点)
- 项目经历(非技术方向介绍)、社团经历、组织管理经历
- 对互联网公司的认识
- 实习时间 (不要太短)
- 考不考研(这个当然是回答emmm,毕竟公司不想培养完你,你马上溜了)
- 已有offer
个人觉得大学理想的学习过程
大一:学习基础、web、框架等
大二:写项目、打比赛、刷算法
大三:准备面试