首页 > 从双非到拿到batm offer
头像
用月光取暖
发布于 2020-05-12 22:38
+ 关注

从双非到拿到batm offer

### 背景简述
楼主是一名双非大三本科生(其实一本还是学校这两年刚刚升上去的)。。本身技术栈涉及前端,Native,后端。目前找的offer均为后端开发。春招一路走来很感谢帮助过我的很多学长,加上自身也比较幸运。最终有拿到一些offer,比较知名的公司有:
- 阿里巴巴
- 头条
- 腾讯 
- 美团 
 
### 项目经历
1. 参与开发一款校园应用,部分功能类似超级课程表,现用户3w+
2. 自身开源项目
https://gitee.com/clear1ove/serverlite
(现在放到了gitee上,求star)

### 比赛经历
和朋友参与开发过一款旅游类app,排名全国前3%(其实只参与开发过程,未参与相关比赛流程)

###  个人心得
1. 关于学历。个人觉得学历还是很重要的,毕竟这是我们作为学生的硬实力的体现,也是一个人能力的一部分,无论从哪个角度我们都不能用”互联网学历对相对宽松“来安慰自己。学历这个硬实力上我们占了劣势,那么我们就在其他领域建立自身的优势。可以通过 项目/参加比赛/算法能力(最好打过acm)/实习 等等领域打造我们自身的绝对优势。
2. 延迟满足感。即使拿到了想要的成绩,也要再问问自己能不能做到更好。
3. 保持平常心。很多事可能很努力,但是还是不一定会有结果,每每这个时候我就会想起”尽吾志也而不能至者,可以无悔矣,其孰能讥之乎?“
4. 对于自身的不足进行有针对性的训练。失败了及时反思,这其实是一种”强者哲学“。

### 个人觉得比较重要的Java后端知识点
1. 算法/数据结构
2. 计算机基础知识(计算机网络,操作系统,数据库原理)
3. Redis/MySQL
4. 消息队列如Kafka
5. 系统架构设计,分布式原理
6. Java基础、Java并发、JavaIO、JVM
7. 网络编程
8. 设计模式 
 

### 面经
#### 头条
**一面**
1. 面试题(面了一个小时,只记得一小部分了,不分先后)
2. 讲讲项目
3. 在浏览器的url栏里输入一个https的请求会发生什么?balabala.
4. 三次握手,close_wait, time_wait原理
5. 内存泄露原因,举例子,怎么排查,OOM异常
6. 静态内部类会被编译成几个class?为什么内部类可以访问外部类的private的方法?
7. 多线程安全,线程池相关问题
8. 集合框架源码,concurrenthashmap,hashmap,linkedhashmap实现LRU
9. 为什么需要锁,你知道几种锁,说说AQS,说说CAS
10. synchronized原理,jdk6对他的优化,(偏向锁等),JNI,逃逸分析,对象的markword
11. 知道几个设计模式,怎么用,手写双重检查锁单例模式
12. 以下代码题输出什么?(巨坑,输出100,从泛型+向上转型+map+equals原理上想)
```
Map<Short, String> map = new HashMap<>();
        for(short i = 0; i <100; i++) {
            map.put(i, String.valueOf(i));
            map.remove(i-1);
}
System.out.println(map.size());
```

13. 算法:手写jdk中的优先级队列 PriorityQueue(最大堆)

**二面**
 
1. 介绍自己
2. 说说项目,说说你的开源项目
3. 剑指offer62:圆圈剩下的数字
4. 写一个快排
5. 给出一个数组nums,一个值k,找出数组中的两个下标 i,j 使得 nums[i]  + nums[j] = k.
    2种解法,排序数组+双指针o(n)遍历或使用HashMap额外存储空间。
6. 泛型 List<Integer> 与 List<String> 这两个的getClass是否相对?(泛型擦除,中间还有一个小插曲,面试官问我<? extends String> 有什么作用?我说:String不是不可继承的嘛,被final修饰的。相视而笑)
7. 说说你知道的设计模式,说说项目里用到的设计模式,说说策略模式,设计一个下棋的场景问如何结合设计模式使用,设计模式什么时候继承,什么时候委托?
8. 说说MySQL Innodb 索引底层实现,说说join,说说GroupBy 
9. 说说抽象类与接口区别?说说从设计模式层面的理解,为什么要有这么2个东西?
10. 说说操作系统内存模型不连续空间分配,说说分段,分页,虚拟内存,页淘汰算法....,
11.说说Redis底层实现,说说他和MySQL的区别
12. 说说volatile,说说线程同步,说说JVM线程模型
13. 说说动态代理,说说你知道的AOP,项目中是怎样使用AOP的?
14. 有没有使用过责任链模式?如果有...个场景,如何选择使用设计模式
15. 你还有什么问题?



**三面**
1. 自我介绍
2. 项目用户量3w+,怎么做到的?如何协调团队?
3. 说说项目中如何使用的Redis,如果有10w请求插入Redis,如何优化?
4. 说说你理解的线程池
5. 说说操作系统组成
3. 手撕一个阻塞队列,生产者生产0~100的随机数,消费者消费后将其存储到一个list,需要保持list中元素保持递增。(信号量+线程安全)
4. 说说hashmap的resize死循环
5. 说说hashtable和hahsmap区别,说说copyOnwriteArrayList以及他们分别采用的并发修改当然(fast-fail,fast-safe)
6. 说说你的优缺点。
7. 说说你对字节的了解?

**hr**
1. 介绍下自己
2. 这个项目3w的用户量如何统计的?如何处理团队问题?
3. 为什么想来字节?(喜欢张一鸣)
4. 什么时候来?
5. 口头offer




#### 腾讯

**1面**

1. 说说项目经历,印象最深的地方
2. 项目重构了是吧,说说如何重构一个项目? 
3. 重构项目如何处理与之间老接口的切换? 
4. 说说你的web框架,你如何实现一个get post的表单 
5. 如果多人访问一个写的接口,如何保证数据的一致性?(事务,乐观锁,redis,MQ)
6. redis的特点,为什么选择redis而不是mongo 或者 memcahced(丰富数据结构,持久化)
7. 分布式架构中,如何确保多个节点数据一致性。
8. 项目使用了nginx,如何确保ngnix高可用?(集群化)
9. 如何把一个项目进行微服务拆分?
10. 说说项目权限控制模块。为什么不用shiro而使用aop?
11. 问他问题(q:为什么不问基础知识? a:之前你1面虽然挂了但是你上次面试评价是基础还不错所以这次不问基础)


**2面**

1. 说说自己最满意的项目
2. 项目中的图片上传如何实现的,如何优化的,底层协议如何设计分片分包?
3. 知道百度云/迅雷如何实现稳定的文件上传而不丢失数据?
4. 如何实现断点续传?
5. 项目接口基于什么原则设计的?为什么这么设计?优劣势?自己的思考是什么?
6. 项目架构?微服务如何拆分的?
7. 在项目中如何定位自身,扮演什么位置?
8. 简单算法(秒了)
,小朋友围成圈,如果序号整除3或者序号任何位置包含3,输出“fuzz”,如果序号整除5或者序号任何位置包含5,输出“buzz”。
9. 有啥想问我的?



**3面**
1. 深挖项目
2. 说说线程池,如何对线程池进行优化
3. 说说Exception异常处理
4. 说说快速排序时间复杂度,何时o(n2),有什么方法可以优化快速排序?
5. 说说希尔排序
6. 说说数据库事务实现与原理
7. 说说innodb的锁,说说间隙锁的使用场景
8. 说说如何防止sql注入式攻击,说说mybatis底层源码实现
7. 手撕算法:数组中前k小的数,分别使用快速排序与堆解。然后提问平时如何确保代码的鲁棒性。


**hr面**
1. 自我介绍
2. 为什么选择腾讯?
3. 你在学校的经历?
4. 你的爱好?
5. 上一份实习经历带给你的东西
6. 你能给这个团队做什么
7. 你相比较其他人,你的优势
8. 你相比较其他人,你的劣势
9. 投其他几个公司,相比腾讯你觉得之间的不同 
11. 你的实习时间多久?
12. 说一下你面试过程中最深的一个技术点,你回答的很好的一个
13. 你选择的工作城市
14. 是否单身
15. 用一句话评价你可以得到这份岗位的原因

#### 美团
**1面**
1. 讲讲实习,实习做了什么
2. 讲讲项目,讲讲项目中使用的设计模式,讲讲redis在项目中的使用(没回答好,如zset的使用)
3. 讲讲synchronized,ReetreentLock,aqs
4. 讲讲Java集合框架
5. 讲讲gc算法
6. 讲讲cms
7. 讲讲一个对象从创建到死亡经历过程
8. 讲讲MySQL事务,事务隔离级别,讲讲可重复读的实现原理(临键锁+快照读)
9. 算法:
通过一个序列构造一颗不完全的二叉树,并任选2个节点输出他们的最近公共祖先。

**2面**
1. 说说项目亮点,运营一个3w+项目的技术挑战,难点,如何解决的
2. 说说开源项目,高性能,轻量级的数据指标
3. 说说分布式一致性算法(raft,paxos)
4. Redis知道哪些数据结构?如果有10w个值同时插入set会有什么问题?如何避免这种问题
5. Redis集群,实现原理
6. Reids怎么解决缓存穿透的问题?说说你对布隆过滤器的了解
7. TCP三次握手四次挥手?为什么要4次?? 
8. 数据库索引有哪些类型?为什么b+tree而不是hash tree
9. 说说springcloud,说说微服务架构方面
10. 说说你知道的nginx负载均衡算法 
11. 了解docker嘛  
12. 写个堆排序


#### 阿里巴巴
> 最喜欢的公司,最喜欢的部门。可能由于运气比较好,问的都是知道的,所以很顺利就通过了。

**4.31笔试面**

**1面**
1. 网络192.168.1.0,现有50台A服务器,80台B服务器,108台C服务器,如何划分网络?
2. 手写死锁,说说死锁防止,死锁预防,死锁消除
3. 手写hashmap,全部实现,各种细节.....
4. 进程间通讯方法
5. 说说项目,亮点
6. 说说实习经历
7. 说说接口,抽象类本质区别
8. 说说kafka原理
9. 说说你的Netty开源项目,说说使用场景,说说Netty源码
10. **智力题**,一群人在一个黑暗环境下戴黑帽子或者白帽子,至少有一个人黑帽子,开灯时一个人只能看别人的帽子,关灯时如果他发现自己是黑帽子就打自己耳光。
第一次关灯,没任何人打耳光,第二次关灯没任何人打耳光,第三次关灯耳光啪啪啪,问有多少人是黑帽子?

**二面**
1. **手撕算法** Given a string, determine if it is a palindrome(回文,如果不清楚,按字面意思脑补下), considering only alphanumeric characters and ignoring cases.  
For example,  
"A man, a plan, a canal: Panama" is a palindrome.  
"race a car" is not a palindrome.  
Note:  ====
Have you consider that the string might be empty? This is a good question to ask during an interview.  
For the purpose of this problem, we define empty string as valid palindrome.
2. **手撕算法**
假如允许你对字符串进行如下操作,每次花费“1”的代价把任意字符挪到字符串末端
现在给定两个长度相等的字符串 S1 和 S2,问至少需要多少开销将S1变为S2
```
   参考输入:
   S1:acdk
   S2:ckad
   output:2
```


3. **智力题**
烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子(但均匀程度不一,都是独一无二的,唯一相同点即从头烧到尾需1个小时),问如何用烧绳的方法来计时一个小时十五分钟呢; 

**钉钉交叉面**
1. 有这样一个数列,11223344,要使得两个1之间隔一个数,两个2之间隔两个数,两个3之间隔三个数,两个4之间隔四个数,如何实现?


2. 把文件加载到文本编辑器中有哪些步骤?为什么idea/eclipse打开一个超大的日志文件会比windows的文本编辑器快?
(从缓存/异步、协程/懒加载处思考)

**hr面**
1. 大学最自豪的事
2. 说说自己3w用户量的项目
3. 说说实习
4. 说说自己的开源项目,说说开源的想法
5. 说说自己的缺点
6. 你已经有腾讯头条美团offer为什么还来投?为啥不给其他人留几个hc?
7. 你的学历,测评不占优势,你如何看待?



全部评论

(0) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐