阅读 400

2020春招总结

写在开头

本人是双非本科生,目前大三,大学期间主要学习java,了解一点python,主要是做java服务端开发。大学期间参加了学校的一些技术工作室。2020年2月我正式开始了自己的春招之旅,先后获得了cvte、腾讯、美团、阿里等公司的实习offer,也正是在这个过程中,我学到了很多东西。

image
image
image

面经

阿里

预面

  • 项目简介
  • 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优化从多少秒优化到了多少秒
  • 对于面试的回答,要知道面试官想听什么,尽量不要说废话。我之前就是经常说不到重点上,导致一句话可能重复很多遍,这种情况的话主要是因为紧张,我的解决办法是多练多反思总结。

最后祝自己实习顺利。

关注下面的标签,发现更多相似文章
评论