个人情况介绍
楼主北京某理工类大学本硕,家在包邮区3+1的1,实验室摸鱼菜鸡,从大四开始一路使用Java语言到现在
2020年时间表
1-2月:放寒假回家快乐地玩耍
3月:发现实验室的小伙伴都在准备实习,开始焦虑中学习,慢慢的开始笔试面试
4月:感谢美团收留我给了我第一份实习offer,拒掉了OPPO的offer
5月:陆陆续续收到网易、华泰证券、趋势科技、邮储软开的实习offer;月底实习入职美团
6月:在阿里的系统里留下了第三个已回绝流程,咱也是经历过HR面后挂掉的人了
7月:快乐实习,发工资的时候是最快乐的;同时秋招提前批开启,准备面试
8月:美团转正答辩后离职,全力准备秋招;投递科研论文,月底收到录用通知
9月:写完论文初稿,中期答辩;陆续收到阿里、腾讯、猿辅导、美团的offer,面了快手和网易
10-11月:签约猿辅导三方,线下报考中央某部委某涉密单位,全力准备国考
12月:不要问!问就是室友、啤酒和烧烤!开始纠结秋招的选择是否正确,想回家工作
2021年1月:炒了半个月的股亏了1300,怒而退市;下定决心回家工作,开始投递简历和面试
2022年2月:哈哈哈还不知道呢
这里我扔一张我秋招的面试记录表吧,从6月开始,大概记到了8月底就没有记录了……
找实习经历
先说一下我的简历吧,刚开始我的简历上就俩项目,其实都是刚进实验室的时候的3个月技术培训做的东西,一个是类似于微博的web系统,一个是用Java原生NIO做的IM即时通讯系统,当然了我后来用Netty又写了一遍。
刚找实习那会其实还算是很快乐的,面试官问的基础的问题我还是接的很流畅的,特别是收到了美团的实习录用意向书以后,信心暴涨。
结果等到了4月底5月初就开始变噩梦了。首先是被阿里巴巴打击了,一开始投递的蚂蚁,催了无数次面了二面后拖了我半个月给我挂了,那会我没少跟朋友吐槽这件事。然后被某部门捞起来接着面,很顺利面到了Hr面结果等了半个月又给我挂了,我问hr为什么他说hc满了。后来部门tl加我微信,说我对分布式(降级、熔断等)的知识了解的不好,希望我去别的公司实习下秋招再来面他们,然后开始PUA我。这tmd不是死循环吗?阿里说好的实习只问基础呢?我当然忍不下这口气,在牛客发帖吐槽了一下。接着就是连续的京东挂、360挂、腾讯挂挂挂等等,还有好多连面试机会都没给。
后来想想算了,何必这么折腾自己呢,于是在5月底入职了美团。这里给大家安利下美团金服,新人培养做的是真的好。你一入职就会有一对一导师,制定详细的时间表告诉你每周要干什么,要掌握哪些中间件的使用。
实习的时候,我闲的没事就会去美团内网学城上扒拉东西,知道自己分布式差就要多学一点,慢慢的开始了解、熟悉分布式的一些知识。接的第一个需求也是偏架构的需求,涉及两个系统之间的信息交互。一开始真的是焦头烂额,乍看起来很简单,其实重难点是在高并发下的异步解耦、限流、高可用和保障数据一致性上。但是真的完成了需求以后,这反而成了我最强的一块。秋招面试的时候谈到实习经历,面试官着重问的也是这一块,真的感谢这段经历。
秋招找工作
秋招我放弃了广撒网的策略,算起来七七八八的也就投了10家左右的公司,最后拿到了5家公司的不错的offer,整体上真的比春招好太多了。
首先谈的还是阿里巴巴,我与阿里的不解之缘。一开始找了一个北邮的师兄内推,他在杭州工作,我就默认他给我推到杭州,就没有确认内推base。自然是很顺利的到了hr面,面试的时候hr小姐姐也是杭州,问我选择北京的部门还是杭州的部门,我义愤填膺地说:我打死不留北京一定要去杭州。结果刚面完hr面师兄就火急火燎的在微信找我,问我hr面怎么答的,这个时候才知道师兄给我推的是北京的岗位。结果自然是毫无悬念地挂掉了,因为他们认为我不会接。后来被某部门捞起来,闲着无聊也去面了面,结果就发意向书了。但是部门和工作内容不太喜欢吧,加上tl打电话给我谈薪的时候态度不怎么好,一直觉得自己高高在上,一直在PUA,所以我就干脆麻溜给拒绝了。
其次要说一下字节跳动,字节我一直以为流程块面试官好,结果我居然也碰到了少数的奇葩。杭州抖音挂掉之后,我是心服口服的,因为确实技术上太菜被面试官吊打了哈哈哈,不愧是核心部门。后来被某部门捞起来,顺利到三面但是答得不太好,所以有一轮加面。加面面试官我感觉就不缺人,一开始就在不了解业务场景下一直在说:你觉得你们这样设计不low吗?行,您流批,一下子把整个团队做的系统都否了。之后我说的用缓存做了防止新用户重复注册导致的薅羊毛问题,结果就一直在怼我你知道什么叫薅羊毛吗?你知道薅羊毛的定义吗?你这就叫薅羊毛的吗?我俩针对这个词什么意思友好探讨了半个小时,结果是我先败了,主动放弃了面试。
最后是签了意外之喜的猿辅导,给我评级也很好,除了工资还是期权、签字费什么的。
之后被室友洗脑,去参加了某部委涉密单位的线下宣讲,线下报名了国考,去部委实地取准考证的时候有幸进了配楼,感叹不愧是部委的大楼就是气派。10-11月努力学了俩月的行测和申论,按照多次粉笔模考的结果看我以为我稳进面的,结果国考的时候申论爆炸,只考了46分,差两分进面,一度心态爆炸。后来尝试过江浙的人才引进和选调政策,但是都比较晚了错过了很多,我又等不到2021年的4.5月,也就不了了之了。
最近也是下定决心要毁约猿辅导了吧,还是想回家工作。1月在家参加了一个上海国企和杭州阿里的面试,应该是都过了在等着通知,也有点犹豫要选哪个,目前暂定是始于阿里终于阿里了。
最后是干货时间
面试资料:
1、神器cyc20***佬的的csnote,基本覆盖Java基础、数据库、分布式、算法大部分的内容
2、Github上的Advanced-java,当然了牛客也有转载,涵盖高并发、分布式、高可用、微服务等领域知识
最重要的还是源码!!!关于Java基础真的多看源码,比如CAS的上锁过程、AQS。我记得我在看泛型的时候,百度搜出来的东西很抽象,然后我就跑去看了眼ArrayList的泛型源码,然后照葫芦画瓢自己也写了写。
计算机网络应该都学过吧,我一直用的是我本科的第五版,高数书都卖了却留下了《计算机网络》哈哈。当然了有些东西是没有的,比如使用RST防止TCP洪泛攻击、http3.0的quic协议(常问的问题就是http只能用tcp实现吗)等。
JVM建议去看《Java虚拟机》,看面经是绝对不够的,面试官稍微问得深一点就凉凉,建议重点看编译原理和运行原理。我大概全书来回翻了三遍,连class文件的编写格式都看了。
然后应该就是算法题了吧,如果不是面字节和外企的话,《剑指offer》应该就够了,但是必须要熟悉基本的递归回溯、BFS、DFS、动态规划这些,偷偷说一句并查集常有妙用,建议leetcode每日一题,坚持半年你也是大佬。
最后就是多逛牛客,我那会天天泡在牛客上,看招聘信息,看面经……
经验分享:
项目的话就实事求是地写就好了,千万!千万!千万!不要给自己挖坑!我秋招的简历就删掉了web的项目,因为发现有点忘了,把我研究生期间做的冬奥会的一个计算机视觉的项目的放上去了,纯粹装逼,投递国企的时候更显的高大上。
然后就是简历整得好看点,这里推荐用WonderCV,用过的都说好!注意写项目经历的时候不要一大段一大段的文字,多用些加粗的小标题分割一下,面试官没经历看你长篇大论的;最好把个人技术能力简介放在项目前,列一下自己的技术长处,比如redis、Spring什么的,有利于面试官快速了解你,按照我的面试经验,很多面试官直接看的都是这一块的东西。
然后呢就是早开始,找实习的时候我就是开始慢了,3月份才开始慢悠悠的。如果不是之前有Java基础的话,可能我实习都找不到。2021届校招普遍的都提前了半个月到一个月,所以更要提前准备。
然后有很加分的一项,搭建一个自己的个人博客网站,记录自己的学习。当然了CSDN或者Github也行,总之就是多记录。面试的时候面试官常会问你平时都逛什么网站,这个时候如果你说你自己搭建了一个网站的话会非常非常加分。如果你觉得租阿里云或者腾讯云的服务器太贵的话,可以用GithubIO + hexo搭一个简单的,虽然访问会慢一点,反正也能看,还有很多好看的模版可以选择使用,我就是这么干的。
还有很重要的一点,眼光不要只局限在互联网,外面的世界也是很好的。不要总以为只有互联网钱多,某些国企、江浙深的公务员、核心部委公务员(能接受出国)等等,福利待遇可能没你想象的那么低,还会有些特别的福利比如集体购房优惠等,具体的我就不说了怕被查水表。这里就要提到了,早点确定自己想去的是哪里,找准一个目标,同时如果有精力时间的话,再去尝试别的优质单位,比如参加个国考啊(狗头保命)。我一直觉得,秋招的时候多折腾,总比工作后再折腾要好得多。
然后没什么了,最重要的就是保持心态吧,最好有个小伙伴跟你一起备战,没事发发牢骚吐吐槽什么的。我和我的伙伴找实习的时候都快把阿里骂死了哈哈哈,我三个已回绝他两个,都是很奇葩的面试经历。结果他秋招拿个十几个offer,面啥过啥,都是sp以上,给我柠檬精坏了。
最后的最后
实习+秋招+春招是很漫长的过程,身体最重要。我坚持了大半年的5km跑步,夏天晚上跑,冬天下午跑。别问我为什么不去健身房,问就是不喜欢室内的环境,喜欢室外的感觉。从一开始50分钟上气不接下气,到后来30分钟轻松跑完,也算是见证了自己的进步吧。
昨天交给导师了论文终稿,安安心心修改论文准备毕业啦!希望回学校以后走毁约流程拿到新的三方协议签完,顺利度过盲审和答辩。
硬核地分享点面经吧,只有实习的,因为秋招的我没记录hhhh
4.24 10:30-10:40 某国企 腾讯视频面
- 自我介绍:包括学习成绩、竞赛获奖、项目经历、邮储认识、职业规划 1分钟之内
-
知道Java的序列化吗?什么时候用到序列化?
- 序列化用在持久化、深拷贝和网络传输
- 你的方向是图像处理和后台开发,是一直做这个吗?
- 你学校是北京的,为什么报的是苏州的软研?
-
说一下线程池的一些的概念和用法?
- 说了核心线程、堵塞队列、最大线程之间的执行关系
- 一不小心把数据库连接池c3p0、Druid说进去了
-
知道Netty吗?Netty怎么解决粘包拆包的问题?
- 惊呆了,我也就看了一点Netty的粘包、心跳、pipeline
- 4种 长度域 固定长度 分隔符 换行符
- 常用基于长度域LengthFieldBasedFrameDecoder 指定帧协议中的字段偏移和字段长度
- order by 和 group by 执行顺序?
总结
- 9点半进入待考间,等待着叫号、验证身份证和学生证、检查正装
- 两个人同时进入面试房间
- 面试房间一个主持人,一些记录人员和面试官
- 面试时间一组只有10分钟,所以要尽量的突出自我
- 面试官问什么,你就答什么,不要和互联网一样发散拓展
- 面试官基本不会太看你简历上的项目等内容,相关问题可以提一下
4.15 11:00-12:00 某互联网 二面 钉钉视频面
- 自我介绍
- 用过哪些框架?Spring相关的知道吗?
- Java语言中说一下ReetrantLock的底层实现
- 分布式的RPC知道吗?普通RPC知道吗?
- 说一下DNS的原理?
- 说一下Spring的IOC?如果让你实现你准备怎么写?
- Java的垃圾回收机制?(但是在复制算法,面试官说from到eden也有对象升级机制,多了解)
- 说一说CMS和G1?比较起来有什么优缺点?
- 算法:反转链表 判断是否有环 判断环的入口
- 分布式事务怎么实现?(2PC、3PC、TCC、最终一致性。说了下用redis的list好像也可以)
- 知道哪些分布式事务的业内框架?(RocketMQ)
- 事务的隔离级别?默认的隔离级别?可重复读解决不了什么问题?
- 如果让你实现一个秒杀,从前端到后端要解决哪些问题?
- 面对流量过多可能将服务器打挂的问题,怎么解决? (限流和分布式缓存)
- 如果一个分布式事务有一个子操作挂了,怎么解决?(心跳保活、设置做大错误数)
- 线程和进程的区别?
- Sprint的AOP的实现知道吗?动态代理知道吗?
4.16 10:30-11:30 某互联网 一面 视频面
- 自我介绍
- ArrayList和LinkedList的区别?优缺点?
- 栈和队列的区别?应用场景?
- 项目中用过队列吗?(开个阻塞队列存放消息,通过线程完成消息发送)
- 时间复杂度和空间复杂度的理解?
- 快排和冒泡排的时间复杂度和空间复杂度?最坏的时间复杂度?
- 二叉树查找的时间复杂度?(可以用二分查找 logN)
- 介绍下Java的垃圾收集机制. (我一个人疯狂输出,额外说JC Roots对象和OopMap)
- 知道Full GC是什么情况吗?
- 知道full GC的虚拟机调优吗?(空间大小 触发比例 不能太大因为无法处理浮动垃圾)
- 数据库的sql优化?
- 为什么索引能够加快速度?
- 聚簇索引和非聚簇索引?
- 联合索引的命中规则?
- 全文索引的命中规则?
- 知道Linux的IO复用的epoll吗?ET和LT知道吗?
- 手撕快排
- 说下互斥锁、共享锁、自旋锁.
- 线程和进程间的切换主要有什么? 上下文和虚拟内存页表映射。
- 用到的一些开源组件?FastJson、Hadoop、Hbase瞎扯了一点
- 列存储对比行存储的区别和优缺点
4.13 20:30-21:00 某互联网 一面 电话面
- 自我介绍
- 你为了这次面试做了哪些准备?(看书、源码、整理项目)
- 项目中做得不好的但是没写在简历上的?
- 怎么确定业务中的要开启的线程数?公式? (N * (1 + w/c ))
- 如果CPU飙高怎么排查?(额外说了下阿里的Arthas)
- 设计个程序,造成CPU飙高的情况?(死循环和死锁)还有吗?
- 如果Java里删除了异常体系,怎么解决异常?
- 你说你用过Git,当时多大的项目?
- 怎么解决提交冲突的问题?强制提交知道吗?
- 你说你用过Servlet,版本是多少?(2.5)
- 列举出Java里的三个类,对应三个设计模式?(DataSource、Filter、BufferReader)
- StringBuffer的append方法是什么设计模式?(我个人觉得是观察者模式)
- 设计模式的设计原则?(解耦)开闭原则、责任单一知道吗?(不清楚)
- 自己写代码的过程中做了哪些解耦的设计?
- 你说你用过MVC设计模式,除了MVC还有哪些?(ORM)
- 哪些框架用了ORM?(Hibernate)
- Hibernate一级缓存、二级缓存知道吗?
- 知道Hibernate的一些缺点吗?(不利于sql优化)
- 知道怎么做sql优化吗?
- 知道sql执行计划吗?
- 如果有一个一万张表的数据库,怎么知道哪些表加了索引?什么命令?
- 你说你用过JavaScript,你觉得他是个面向对象的语言吗?
- JS怎么实现继承封装和多态?
- 你还有什么问题吗?
- 说着说着突然又问了个问题:知道SDK和API的区别吗?
全部评论
(26) 回帖