双非秋招上岸,揽下阿里云/爱奇艺/携程/滴滴offer(Java开发岗)

一通电话,打开了我的秋招之路…

8月27日,接到阿里电话offer,这是我第一次正经面试,没想到意外通过,可惜是阿里边缘部门,因此被我拒掉了!而这通电话,也正式拉开了我的秋招之路,拒掉offer之后,想了想为什么不再面试一次,争取到阿里云或蚂蚁金服去呢?就这样,开始准备了起来,面试了一些互联网公司,最后拿下了好几个offer,分别是阿里云、爱奇艺、携程和滴滴。

image

以下附上我这次面试的面试题以及我个人的复习方法和学习心得,包括了一些可以免费分享给大家的文档,需要这些文档的(点击我)免费领取!

阿里云面经分享(3面技术+HR面)

之前有参加过阿里某边缘部门的面试,至于哪个部门就不说了,给了offer,但我拒了没有去,一直想进蚂蚁金服或阿里云,有了上次的阿里面试经验,这次面试阿里就更得心应手了,顺利了许多,最终历经4面拿下了阿里云的offer。

阿里云一面:大概耗时近30分钟,比我想象中的要短,回答得比较顺

  • 首先按照惯例做了一个自我介绍
  • 问项目,项目中的难点,怎么解决难点,之后的反思等等。
  • 说一下Java的线程池,各个参数的作用是怎样的,如何进行的?
  • 讲一下Redis
  • 分布式系统的全局id是如何实现的?用zookeeper如何实现的呢?
  • 分布式锁的方案,redis和zookeeper哪个好?如果是集群部署,高并发情况下哪个性能更好?
  • kafka了解么?说一下
  • 编程题,现场出了一个两个字符串,String s1 = “abcdefg”,String s2=“defgabc”。这两个字符串有一定的规律,让我写方法,判断传入的两个字符串是否满足这样的规律。

阿里云二面:轻松过,面试官出来都挂着欣赏的笑容(希望不是我自作多情!)

  • 介绍项目吧,说说其中的难点
  • 上次面试官问了你哪些问题,你觉得最难答的是哪方面?或者说上次你觉得自己哪个题没回答好?
  • 那你再回答一次吧(说了一个自己知道答案的,差点掉坑里了)
  • 反射的作用是什么?
  • 数据仓库,多线程和并发工具等。
  • 了解哪些中间件?具体说一下吧
  • Dubbo中的rpc如何实现的?
  • 自己实现rpc应该怎么做?
  • Dubbo的服务注册与发现
  • 设计一个线程安全的HashMap
  • 快排的实现,时间复杂度和空间复杂度
  • 讲一下JVM内存模型
  • 讲一下垃圾回收机制
  • 项目中查看垃圾回收

阿里云三面:问得开始比较深入一点,还好我稳住了!

  • 项目中的权限管理
  • 登录状态如何储存
  • session和cookie的区别,session如何管理
  • HashMap底层结构
  • Synchronized关键字的用法
  • synchronized修饰类方法和普通方法的锁区别,获取类锁之后还能获取对象锁吗?
  • 类加载器的双亲委派模型的作用,能重复加载某个类吗?
  • 类加载器的类的缓存,key是什么?
  • 介绍一下Redis
  • 如何将数据分布在不同的Redis?
  • 有了解过取余算法?
  • Spring的apo实现
  • 字节码结构
  • 说一下浏览器输入网址过程,结合springmvc
  • HashMap在大量哈希冲突该怎么处理?
  • MySQL为什么使用B+树?

阿里云HR面:

  • 做项目的时候,你有什么收获,遇到问题你是怎么解决的?
  • 有参加过什么竞赛吗?有发过论文吗?有什么成果吗?
  • 参加过什么学生活动吗?担任过什么职务?
  • 分布式有了解吗?
  • 并发编程怎么样?线程池有了解吗?
  • 现在面了哪些公司?
  • 了解过互联网公司的文化吗?
  • 你了解阿里多少?
  • 你有什么问题吗?

image

爱奇艺安全云部门开发岗面经(2面技术+总监面,无正式HR面,电话回访问常规,然后给了offer)

爱奇艺一面:

  • 自我介绍
  • 线程中保持同步有哪些方法?
  • 白板手写单例
  • 堆和栈的区别
  • 说说快排的原理
  • 说一下Hashmap的put操作过程
  • redis的hash数据结构最多能存储多少个元素
  • 乐观锁与悲观锁的使用场景
  • 了解哪些排序算法,讲讲复杂度
  • 手撕归并排序

爱奇艺二面:

  • Springboot与spring的区别、优点
  • MySQL事务隔离级别
  • 什么是幻读,如何解决?
  • 写SQL,一张表三个字段,学生id,课程id,成绩,查询每一个学生得分最高的那门课
  • 并发了解哪些?说一说线程互斥与线程同步的区别?
  • 描述下登录模块怎么实现的?需要考虑哪些问题?
  • 如何解决某一时间段内的大量非法请求,答了验证码与接口限流,问接口限流如何设计?
  • 分布式session如何实现的?

爱奇艺三面:总监面

  • 自我介绍做过哪些项目
  • 项目中遇到的什么样的困难?怎么解决的?
  • 如果要提高并发度你会怎么重新设计你的项目?
  • 你在项目中用到的聚类算法,为什么选择它们,它们之间有何异同
  • 最后以一道智力题结束了面试 1,6,30,__,3031

总结

携程和滴滴印象不太深,就略了吧!

面试前,对于技术层面的知识一定要准备好,复习要到位,建议最好在面试前做做面试演练,因为语言表达能力和沟通能力是非常重要的,在面试场上的语言表现力往往能够给你加分不少!

我的复习方法

01 复习JAVA基础理论(概念)

因为工作有几年,基本上都是实操,所以在理论方面多少有些欠缺了,但我知道面试时,面试官会着重考察一个人的基础理论,所以刷了《Java从入门到精通》这本电子文档,这份文档囊括「基础知识-核心技术-高级应用-项目实战」4个篇章,非常系统且完整,刷了一遍之后对体系内容就有了完整清晰的思路了,后续的专题训练复习相对来说就容易多了。

image

02 面试核心知识点(面试问什么?)

在还未开始准备之前,面试对于我来说,似乎熟悉又陌生,这主要是因为我几乎不知道现在的面试会问到一些什么,所以对此心里没有底。那么在面试之前,刷题就非常重要了,所以我们需要摸清楚面试会问到哪些知识点。于是在面试前,刷了一遍这套「面试核心知识点」,每个架构知识点在这个文档里都有清晰的详解,让人茅塞顿开。(文档中的知识点解析包括JVM、Java基础、多线程并发、Spring原理、微服务、设计模式、数据库、分布式缓存、RabbitMQ、MongoDB、Kafka等等。)

image

03 准备算法题(不止是LeetCode)

大部分互联网公司还会面算法题,这部分题目主要是来过滤掉那些非计算机专业出身的人,所以算法题是非常重要的,需要提前学习和准备,但大部分人盲目地去刷LeetCode,要知道LeetCode的题实在太多,只刷LeetCode是远远不够的。我的做法是收集并整理各个大厂近5年来最常问的算法题,在学习这些算法题时,学会举一反三,在面试时基本就能自信应对了。(免费分享个人整理的算法题库)

image

我的学习心得

1.好记性不如烂笔头

这句谚语,几乎无人不知无人不晓,但是总被许多初学者抛在脑后。在学习的时候,总是看的代码多,而动手练习的代码少!身为一个程序员都应该很清楚,代码如果不多动手敲它,它永远不会自己跑进脑中,所以多动手才是成功的关键。

2.花更多的时间分析问题

花更多的时间理解和分析问题,然后再设计方案吧。你会发现剩下的事情很容易了。设计不是说要用建模语言和工具,可以是仅仅看看天空在脑子里构思。那些在遇到问题就开始敲代码的人往往会最终偏离需求。作为程序员,当你在编写代码之前,尽量把问题分析透彻一点,这不仅能提高你编码的效率,更重要的是能提高你的分析问题能力。

3.重思考,多总结

一个段好的代码并不是它们越复杂越好,简单的方法,实现复杂的功能,才是我们最需要的。要提高编码速度,更重要的是简化梳理程序流程,以最小的代码量完成功能实现。所以编程最重要的事情是思考和总结。

image

总结

最后,祝愿大家都能够拿到心仪的offer!

以上我个人的复习方法所提及到的文档资料,均可以免费分享,包括阿里面试题的答案也整理成了文档,需要打包带走这些资料的,直接(点击我)免费获取哦!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值