春招总结
写在开头
本人是双非本科生,目前大三,大学期间主要学习java,了解一点python,主要是做java服务端开发。大学期间参加了学校的一些技术工作室。2020年2月我正式开始了自己的春招之旅,先后获得了cvte、腾讯、美团、阿里等公司的实习offer,也正是在这个过程中,我学到了很多东西。
面经
阿里
预面
- 项目简介
- HashMap
- CAS,锁
- 线程之间通信方式
- 某个线程占用CPU到100%以上如何修复(定位+解决)
- 如果用户量增多系统该如何设计
- 字符串压缩(aaabbaaaa变为a3b2a4)
一面
- 项目介绍
- 爬虫如何应对反爬(ip禁止等)
- MySQL架构
- 一个查询语句经历了哪些流程
- 什么时候索引可能失效
- 为什么要做并发控制(缓存一致性模型,JMM)
- volatile
- CAS
- 如何实现一个自旋锁,数据结构
- 10个文件,每个文件2G,每个文件的每行为时间戳+日志,有个2G的计算机,如何进行排序
- 一个文件中包含不重复的很大的数字集,进行排序
- @Autowired和@Resource的区别
- 了解什么新技术
- 说下手写数字识别的实现思路,状态转移方程
- CDN是如何实现的
- serverless大概实现思路
二面
- 项目最难的点在哪里
- 项目有哪些地方可以改进
- 创建线程的几种方式
- 什么是多态
- 普通异常和运行时异常的区别
- http和https的区别
- 说下原型模式,工厂模式,他们的区别
- ioc,aop。什么时候用自己的ioc框架
- 堆排序是如何实现的
- 说下JVM你了解最深的几点
- hashmap和conccurrenthashmap的区别
部门笔试
- 开三个线程,打印100次ABC,即ABC..ABC。
- 一个数组,找出前k大的元素。
- 实现一个堆。
官网笔试(突然被告知开系统就要笔试)
- 输入两个字符串A、B,把A里面的字符移动到最后,问移动多少次可以变为B,不能就输出-1。AC
- 题没看懂
三面
- 说下你的项目经验和学习经历
- 爬虫怎么做的
- 爬虫项目有什么优化的地方
- 网站有反爬怎么办
- 怎么做的推荐
- 上传excel文件过大怎么办(断点续传)
- 你工作室当后台组长是干嘛的
- 你学业成绩怎么样
- 你以后的职业规划
四面
- 说下项目
- 说下最熟悉的项目
- python和java的区别(我就说了下Django的功能)
- 线程状态
- wait和block有什么区别
- 怎么做的推荐和爬虫
- lru实现思路(不同场景不一样,如innodb的)
- Redis为什么快
- Redis单线程模型
- NIO实现原理
- Redis如何优化为多线程(master + N个worker。实际上我后面了解到有多主从reactor模型等等)
- TCP怎么保证可靠传输
- 滑动窗口说一下
- 了解过rpc远程调用吗
交叉面
- GeekHub论坛项目学到了哪些东西
- 爬虫有什么难点
- 推荐怎么做的
- 大学期间学了哪些课程
- 找出一个语句中出现次数最多的8个英文单词
- JVM内存结构,哪里会发生OOM
- 最近在学什么(说了下NIO和netty)
- 以后的职业规划
hr面
- 说下你的大学干了哪些事情
- 说下你参与的生涯规划部是干什么的
- 说下工作室是干嘛,你主要担任了什么角色
- 说下实习的收获
- 生命中对你影响最大的人
- 有什么爱好
- 过去两年最大的成就
美团
一面
- 隔离性
- MySQL主从复制
- MySQL索引
- innodb可重复读怎么解决的幻读
- binlog,redolog
- Redis如何做的压缩
- Redis集群
- 线程池,线程池线程执行完成后状态
- 阻塞和等待的区别
- hashmap、hashtable、concurrenthashmap
- volatile
- 笔试:
1.写sql:
至少有两门课成绩大于90分的学生
平均分大于60分的学生
table [student, score, course]
2.
归并排序
3.
有十箱黄金,每箱有100块金条,每条1两,有一个人,他把其中一箱的黄金中每一块金条都磨去一钱,你只能称一次(这个称是电子秤,可以看到是几两几钱)就判断是哪一箱少了黄金,你要怎么称?
(1,2,3,4,5,6,7,8,9,10)
4.
1024瓶药里只有一瓶有毒,一周后毒发。用10只老鼠试药,要怎样才能检测出有毒的那瓶药?(二进制)
二面
- 你想来北京吗
- 你以后的职业规划(架构)
- 你觉得当架构师要怎么设计系统(性能、高可用、高拓展、最重要的是故障预防与恢复)
- 系统架构怎样设计才能算好
- 如何提升系统性能
- 系统高可用性怎么保证
- 说下分布式框架
- 怎么做分布式发现
- equals和==
- Integer的大小
- Iterator和普通for循环的区别
- io,nio,aio
- synchronized和lock和volatile
- gc算法你知道哪些
- JVM内存
- 你了解的JVM调优
- AOP的实现
- 缓存穿透
- 你平时是怎么学习的(看视频,看书)
- 你读过哪些书
腾讯
一面
- 项目问题
- 哪些地方可以减少代码数量
- 项目如何定位OOM
- 项目如何解决cpu占用100%问题
- 项目记的最深的点在哪里
- 项目最难的地方在哪里
- 爬虫如何解决登陆才能访问的问题
- MySQL主从复制要如何配置
- MyBatis中#{}和{}而不能用#{}
二面(笔试)
- 设计一个月球车,输入起始地点和方向(x,y,position)和前进、后退、左转、右转
三面
- 找回密码怎么做的,怎么保证不被恶意访问
- MySQL冷备热备
- MySQL主从一致性如何解决
- 如何应对高并发
- 线程池
- java有哪几种字符串拼接
- 单元测试
hr面
- 自我介绍
- 介绍工作室
- 项目中最大的挑战
面试反思
实际上我认为大厂面试官问问题无非是想知道你是否有潜力,有驱动力,知道怎么学。那么如何才能面试官认可你呢。我觉得主要分为以下几点:
- 能够有自己的人生规划,人生规划就是自己对今后的学习规划、职业规划。例如相当架构师,那么需要怎么去成为,需要学习到哪些东西,需要哪些业务场景来达到架构师。
- 能够正常高效交流,因为到公司后都是团队开发,你至少需要正常理解公司的需求和你的问题
- 知道怎么去学习技术。技术上我觉得可以在技术上分为两个维度,分别是深度和广度。
- 深度:深度就是你对一个知识的掌握程度,比如一个hashmap知识点,你不仅要说他的数据结构,更好的情况是你要知道为什么会出现这个数据结构,他和其他数据结构相比更适合哪些场景,java里面又是怎样实现的,为什么要这样实现,甚至可以适当拓展一点可以说他可不可以序列化等等。
- 广度:广度就是你对整体技术发展的了解,比如说一个做后端的知道一些算法知识或者前端知识,或者了解后端开发的整体思想和常用中间件和他们的用处,这就是广度。
接下来说一下我认为一些比较重要的面试需要注意的点:
- 对于一些知识点的学习,首先要知道他有什么用、解决了什么问题,然后了解怎么用,最后了解他是怎么设计的、为什么要这样设计,拓展出去还可以了解相关知识点
- 对于项目的总结,要体现出自己的设计思路,描述自己的项目难点和优化时最好将数据量化出来,比如sql优化从多少秒优化到了多少秒
- 对于面试的回答,要知道面试官想听什么,尽量不要说废话。我之前就是经常说不到重点上,导致一句话可能重复很多遍,这种情况的话主要是因为紧张,我的解决办法是多练多反思总结。
最后祝自己实习顺利。
以上是 春招总结 的全部内容, 来源链接: utcz.com/a/20255.html