微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

BAT大厂三连挂,最后凭借阿里大佬分享的这本面经冲进大厂

前言

年中了,大多数的人(程序员)都在为今年的金九银十做准备,却又有那么一些人,还要冲刺一下,今天分享的就是这样一位朋友的面试经历

小刘,开发三年,刚开始在大厂外包工作,后来凭借大厂背景跳槽到一家还算不错的公司,薪资也不错,但对于他来说,还是有点不甘心,想进大厂;毕竟大厂意味着拥有更高的薪资、优质的人脉以及令人羡慕的工作环境和福利待遇。以及最重要的成长!

临近年底,他又去了,这次是百度,腾讯和阿里,虽然最后挂了,但是失败是成功之母,失败是会让一个快速成长的

下面分享一下他面试过程中被问到的面试题

百度(3轮技术面):

1.synchrnoized和reentrantlock的底层实现及重入的底层原理

monitorenter monitorexit AQS。 重入原理:entry count,state

2.锁的四种状态及升级过程

3.CMS和G1的异同

4.G1什么时候引发Full GC

5.除了CAS,原子类,syn,Lock还有什么线程安全的方式

final

6.HashMap和Hashtable的异同

7.允许null键的map你知道哪些

HashMap,LinkedHashMap,WeakHashMap

8.null键放在HashMap的哪里

底层数组的0号位置

9.为什么hashtable的扩容是2倍+1

从除留余数法,hashtable初始容量方面回答

10.红黑树的插入时间复杂度

11.解决哈希冲突的方式

12.现有1T的数据,内存只有1G,该怎么对他们排序

外部排序(多路归并)

13.Tomcat为什么要重写类加载器

14.tcp握手挥手过程及其状态转换

15.MysqL隔离级别

16.B树和B+树的区别

17.你知道哪些设计模式,它们在JDK源码中是怎么体现的

18.Java运行时数据区

19.说一个最熟悉的垃圾回收算法

20.吞吐量优先和响应时间优先的回收器是哪些

parallel scavenge和CMS

21.类加载全过程

22.线程池7个参数

23.CAS的ABA问题怎么解决

AtomicStampedReference,还可用带boolean版本戳的AtomicmarkableReference

24.Java内存模型

JMM共享内存模型以及8个原子操作指令

25.什么叫做阻塞队列的有界和无界

26.cookie和session介绍一下

27.说一下反射,反射会影响性能

28.谈一下AQS吧

29.为什么你说AQS的底层是CAS+volatile

state是volatile修饰的,并且设置state的方法除了有setState,还有compareAndSetState

30.JUC包里的同步组件主要实现了AQS的哪些主要方法

tryAcquire, tryRelease, tryAcquireShared, tryReleaseShared, isHeldExclusively

coding:leetcode+剑指offer原题共5题

腾讯(4轮技术面):

1、说说对JVM的理解?

2、treemap和HashMap的区别?

3、多线程的五大状态?

4、MysqL主键和索引的区别?

5、聊聊做的一些项目

6、如何实现session共享?用Redis该如何实现?

7、缓存击穿的概念和解决方案?

8、聊聊微服务,以及微服务之间是如何进行管理的

9、Java中nio和io的区别?常用的类有哪些?

10、Java里面的同步锁了解吗? CountDownLaunch和Cylicbarrior的区别,分别在什么场景下使用?

11、JVM的内存结构,哪些是共享的,哪些是线程私有的? Java虚拟机里堆栈分别存放什么?

12、如何实现一个线程池?

13、Java的类加载在哪些情况下会触发?

14、手写代码快速排序,单利模式, 画一个工厂模式和装饰者模式的UML类图

15、AOP的实现原理

16、怎么优化慢查询?

17、Java的锁有哪些?可重入锁和不可重入锁的区别?

18、Lock和Synchronized的区别?他们都是可重入锁吗?哪个效率更高?

19、手写SpringMVC dispatcherServlet的大致实现?

20、聊一聊平时的项目并发经验

21、Redis的数据结构? 线程模型? Redis的数据淘汰机制?

22、读过Redis的源码吗?

23、MysqL实现事务的原理

24、MQ底层原理的实现?

25、数据库事务acid,事务操作,怎么加锁?分布式系统锁?

26、什么情况下会发生雪崩?如何解决

27、介绍一些并发项目

28、技术含量较高的项目,从架构设计到部署问了一遍

29、高并发架构的设计思路

阿里(3轮技术面)

  1. 简短的自我介绍,项目一笔带过,没有问过多细节
  2. 讲一讲重载与重写区别
  3. 讲一下八种数据类型
  4. 知道integer缓冲机制么?说一下吧
  5. 数据库事务隔离级别
  6. MyBatis怎么防止 sql 注入?
  7. 什么是 Java 程序的主类?应用程序和小程序的主类有什么不同?
  8. 那Java 应用程序与小程序之间有那些差别?
  9. String StringBuffer 和 StringBuilder 的区别是什么?String 为什么是不可变的?
  10. 讲一下接口和抽象类的区别
  11. 介绍项目
  12. 什么是Spring?
  13. 解释一下Spring 中的 IoC
  14. Spring 有几种配置方式?具体说一下
  15. 解释一下Spring Bean 的生命周期
  16. 说一下Spring MVC 的流程
  17. Redis 有哪几种数据淘汰策略?
  18. 为什么Redis 需要把所有数据放到内存中?
  19. Redis 有哪些适合的场景?
  20. MyBatis 分页
  21. 项目中用到的算法(排序 查找), 设计模式
  22. innodb和 myisam的区别
  23. 如果让你实现一个MQ,怎么样保证消息不丢失?
  24. 绍项目(包括细节),针对细节提问
  25. 你有哪些数据库优化方面的经验?
  26. 从http请求发出到响应的整个流程
  27. 追问如何http请求发送过来之后如何拦截,怎样配置拦截,具体怎样拦截(只知道tomcat拦截,在web.xml中配置,感觉是在问tomcat底层)
  28. 讲一下常用的索引有哪些?
  29. MysqL 数据库中索引的工作机制是什么?
  30. 讲一下MysqL的复制原理以及流程
  31. 讲下你对dubbo框架的理解
  32. 内存模型以及分区,需要详细到每个区放什么?
  33. JVM 内存分哪几个区,每个区的作用是什么?
  34. 如和判断一个对象是否存活?
  35. Java 中垃圾收集的方法有哪些?
  36. 说一下Java 类加载过程
  37. 什么是类加载器,类加载器有哪些?

虽然一直在进步,但是离进大厂还有很大的差距,至少年底是不可能进大厂了,没过多久他联系我说,他进了网易 我:???

下面来看一下网易的面试题(整理)

网易:3轮技术面+HR面

Java基础:

  • 定义Integer x=20 Integer y=200 在内存里是个什么过程?
  • 讲一下HashMap与concurrentHashMap原理,它们有什么区别吗?
  • HashMap什么情况下会出现循环链表?
  • concurrentHashMap写的时候用什么锁?
  • RenteenLock底层是怎么保证线程安全的?
  • 描述下JVM内存模型,分别说一下每个区的作用。
  • 堆内存的工作原理
  • 描述下多线程原理
  • start和run的区别
  • 线程池
  • volite关键字的原理,AtomicInteger的底层实现
  • ThreadLocal关键字

开源框架:

  • 用过哪些开源框架,说一说你最熟悉的(围绕回答展开,我回答的Spring)
  • 描述下spring的ioc和aop。
  • 常用的注入方式
  • Spring bean的生命周期
  • AOP实现原理
  • Spring task的实现原理
  • Spring事务
  • Spring和Spring MVC的关系
  • SpringMVC中对整个请求的处理流程是怎样的?

数据库

  • MysqL索引的实现
  • b+树
  • 现在一个表有三列a b c,组合索引(a,b,c)查询的时候where a like ? and b=? and c=?能用到这个组合索引吗?为什么?
  • sql调优经验

Redis

  • redis的数据结构
  • redis淘汰策略
  • redis单节点和多节点
  • redis的数据储存

网络:

  • HTTP 1.1版本增加了哪些内容?有哪几种请求方式?
  • 描述下HTTP三次握手和四次挥手过程?为什么需要四次挥手?
  • 为什么TIME_WAIT状态需要经过两个最大报文段生存时间才能到close状态?
  • 浏览器发起一个请求到收到响应中间经历了哪些过程?

Nginx

  • Nginx模块,说说你最熟悉的
  • proxy_cache你是怎么配置的?缓存是存在哪里?具体是怎么命中缓存的?

Linux:

  • 怎么查看某个进程中的线程?
  • 怎么批量替换一个文件夹下所有文件中的一个字符?(sed命令)
  • 有没有用过jps jmap jstack jstat 命令,分别说下有哪些常用参数。

总结

不过学习的过程就是强大自身的过程,当你足够强大时,时间早晚有关系吗?

互联网的发展是非常快的,要想不被淘汰,只有不断的去学习,很多人都说做开发实际上就是CRUD,但是,都这么去想,哪里来的进步?凭什么拿高薪?

很多道理,大多数人都懂,只是不去想罢了

阿里大佬整理的面经

因为资料包含的内容实在是太多了 ,不能够很详细地给大家展示出来全部的内容。需要完整版资料的小伙伴,可以看向下面来获取

需要完整版资料的小伙伴,可以一键三连,下方获取免费领取方式!

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐