VIVO一面竟然翻车,阿里Java社招面试

熬夜布秃头啊 2021-08-06 06:13:13 阅读数:292

本文一共[544]字,预计阅读时长:1分钟~
java 后端 程序员

======

**1.**JDK JRE

2.?Java异常了解吗?说说平时遇到的异常?说出6种常见的java异常。写程序遇到过哪些异常 运行时异常有哪些

3.?面向对象 面对对象的几大特性 多态怎么

4.?修饰符:public;protect;default;private优先级

5.?对string类的理解。stringbuffer 和 stringbuilder

6.?反射机制介绍一下

7.?bio,nio,aio分别介绍一下,nio的实现方式

8.?问了public等变量定义修饰词的时间域

9.?问了反射机制,还有问了动态代理的好处和坏处,好处答不上来

10.?接口和抽象类的区别。

11.?有一个public static final的HashMap,里边对象的属性能不能修改?

12.?为什么java 平台无关性 机器码和字节码区别 JVM加载代码的一个流程

13.?java数据类型以及自己的应用 自动拆箱和自动装箱以及自己的应用即什么时候用到的,列举几种情况

14.?什么是值传递和引用传递,区别及应用

15.?重载和重写

16.?static方法是否能重写,接口和抽象类的区别

17.?你觉得java是一种什么样的语言以及java特性

18.?lamda表达式了解吗?1.8新特性有什么?(面试宝典对接口抽象这个问题是错的,过时了)

19.?内存泄露怎么造成的,怎么排查

20.?讲讲final修饰符。

**21.**一个对象占多少内存。

22.?最短路径问题

23.?java浅拷贝和深拷贝

24.?内存泄露的原因和处理

25.?java反射机制,优点缺点

26.?说说静态变量和非静态变量的区别,用类名调用静态变量和用实例对象调用静态变量有区别吗?非静态方法里可以有静态变量吗?

27.?static能不能被重写?

  • 重写方法的目的是为了多态,或者说:重写是实现多态的前提,即重写是发生在继承中且是针对非static方法的。

    语法上子类允许出现和父类只有方法体不一样其他都一模一样的static方法,但是在父类引用指向子类对象时,通过父类引用调用的依然是父类的static方法,而不是子类的static方法。即:语法上static支持重写,但是运行效果上达不到多态目的

**28.**序列化,反序列化,什么时候用? 如何对一个对象序列化

Java集合类

=======

1.?Hashmap底层(数组+链表+红黑树)hashmap为什么线程不安全,如何保证线程安全,就扯到concurrenthashmap hashmap底层实现 多线程会出现什么情况 扩容机制是什么为什么会死锁 如何解决碰撞 Jdk 1.8的优化。为什么使用红黑树,它是如何做到效率优化的? hashmap了解不,原理是什么,位图了解不,跳跃表了解不,红黑树了解不,红黑树插入过程,B+树了解不,B+树特点和插入过程,邻接表和邻接矩阵区别,分别在什么地方用到,插入和查询的流程。

2.?concurrenthashmap1.7和1.8的区别;concurrenthashmap说说,它是如何保证线程安全的?jdk1.7的hashentry和segment锁。具体说说segment锁?能讲下ConcurrentHashMap的实现原理么 JDK7或者8都行

3.?常用集合类 实现类

4.?list和set区别(重复/不重复)

5.?set,list,map(线程安全的map,map怎么实现之类的)

6.?红黑树介绍一下,跟平衡二叉树比较一下,红黑树有哪些应用场景

7.?你常用的数据结构有哪些?

8.?红黑树的特点,AVL树

9.?一致性哈希函数以及hashmap的put方法

10.?数组、二叉搜索树、B树、B+树

11.?堆和栈。堆、栈

12.?二叉树的最大节点个数;2^n-1;

Java并发

======

1.?java创建线程的方式,runnable和callable区别(参数不同)1. java线程的状态有哪些;线程的几种状态

2.?wait和sleep的区别;wait和notify的使用场景;

3.?介绍一下volatile以及原理;volatile介绍一下Volatile底层是如何实现的? 说了内存可见性和内存屏障,Volatile是绝对线2程安全的吗?不是,没有保证原子性。volatile关键字在线程通信的问题

4.?介绍一下synchornized以及原理; lock和synchornized的区别;synchronized锁的升级过程?Synchronized,底层是如何实现的?说了monitor对象头,以及两个monitorenter和monitorexit运用于代码块。对象头是存储了哪些信息?说说synchronized的锁优化过程?说了偏向,自旋,轻量和重量。

5.?介绍一下AQS;

6.?说一下公平锁和非公平锁的原理;

7.?cas操作是什么,以及可能出现的问题;

8.?线程池,然后你再平时怎么用的,工作原理,有哪些重要参数,饱和策略有哪些;线程池了解吧,说说如何实现线程池?核心参数哪些?有哪些阻塞队列呢?如何优雅的关闭线程池 线程池(线程大小,阻塞队列)线程创建,线程池参数,说说你常用的线程池?说了new ***d 和newFixed。以及介绍各个参数

9.?说说你理解的悲观锁和乐观锁?乐观锁有哪些?乐观锁有什么缺点?

10.?阻塞队列 线程间通信方式 创建线程方式 创建线程池方式 线程池常用参数

11.?锁有哪些

12.?说说你常用的并发包JUI?

13.?问了如何保证多线程通信

14.?你用过Java的J.U.C并发包吧,给我讲一下AQS的原理

15.?CAS的原理给我讲一下,他是怎么保证内存的可见性的。CAS会产生什么问题

16.?知道Java中的内存模型吧,它有8个指令你给我说一下

17.?多线程如何保持同步?

18.?java可见性的关键字及其原理。

19.?cpu密集型多线程和io密集型多线程的比较。cpu密集型里如何管理多线程? 用什么样的线程池和阻塞队列?

20.?cpu线程特别多会产生什么问题?io密集型里怎么减少需要的线程数?

21.?io多路复用的原理和实现。怎么减少处理io(和磁盘io交互)所需要的线程?

22.?线程实现方式。有什么区别。线程之间的通讯,进程之间的通讯。

JVM

===

1.?JVM运行时内存区域划分?哪些线程私有?运行时数据区,私有共享都是哪些?堆区内存如何分配?

2.?对象的生命周期?

3.?JVM垃圾回收器,cms和g1的特点,两者的区别是什么,比g1更加先进的垃圾回收器有了解么,ZGC原理,能够管理多大的内存,CMS能管理多大的内存,G1呢

4.?JVM内存模型 类的生命周期 类加载过程 双亲委派机制了解吗 进入老年代过程 什么情况下直接进入老年代

5.?JVM内存分布(堆栈等,程序计数器+jvm栈+本地方法栈线程不共享,堆和方法区线程共享)

6.?类加载机制,过程,类加载机制?如何自定义实现类加载器?双亲委派模型、类加载器类别,双亲委派模型本质是解决了什么问题?安全性,有哪几种类加载器?类加载的流程。知道哪些类加载器。类加载器之间的关系?双亲委派模型。为什么使用双亲委派模型?

7.?垃圾回收算法,常见的垃圾回收器及他们之间区别,垃圾回收发生在哪里,怎么判断对象存活、GC Roots具体有哪些、讲讲对象分配与回收,什么可以作为垃圾回收的对象,垃圾回收算法和流程。

8.?栈什么情况下会溢出?

9.?静态变量存放在内存哪个区域?

10.?怎么查看java虚拟机内存占用?

11.?如何减少full gc的次数?方法区是否需要gc

12.?4个引用类型

计算机网络

=====

1.?输入一个url后的过程;浏览器从发送请求的全部过程

2.?OSI七层和TCP四层协议,OSI七层模型/五层模型,每一层有哪些协议,http,tcp,ip位于哪一层

3.?TCP三次握手四次分手,tcp四次挥手为什么要四次,为什么TCP是安全的,TCP,UDP的区别

4.?TCP报文结构,HTTP结构, TCP,UDP,HTTP的报文格式(我懵了)

5.?设计一个应用层协议(没有答出来

6.?HTTP协议连接过程,HTTPS连接过程,HTTP的长连接是怎么做的HTTP2和HTTP1区别,HTTP请求过程http的几种方法,HTTP跟HTTPS的区别,https加密过程

操作系统

====

1.?程序,进程和线程的区别

2.?什么时候情况下要用多线程?

3.?进程之间怎么通信的?

4.?一个手机应用程序里面的进程和线程分别是怎么进行的?

5.?死锁,怎么解死锁,死锁条件,怎么预防

6.?进程的状态:阻塞+就绪+执行

7.?手机内存8g,是32位的,一个进程能申请多少内存?

8.?线程的应用,举例,线程的阻塞

9.?主线程和子线程的区别

Linux :

=======

1.?linux中如何查看CPU负载 top

2.?linux用过嘛(扯到了我训练过深度模型,小哥哥直接来了个场景题)场景题:推荐算法中如何控制广告推送频率(结合强化学习说了一些

3.?Linux了解不,df dh区别,如何格式化磁盘,磁盘挂载过程,tcp丢包如何排查,docker是用什么实现的

4.?怎么查找特定后缀名或前缀名的文件

Mysql

=====

1.?数据库引擎事务隔离级别,串行化如何实现,数据库的隔离级别?四个。你平常使用的是哪个隔离级别。数据库隔离级别以及分别解决了什么问题

2.?MySQL的存储引擎有哪些?它们之间的区别?你用的mysql存储引擎?为什么选择它?实现原理?

3.?怎么判断一个SQL语句有没有走索引?紧接着问explain知道哪些字段吗

4.?mysql存储模型 区别 怎么看用没用索引 怎么判断sql语句好坏

5.?数据库中索引B+树

6.?一个手机应用要更改数据库,它的底层是怎么实现的?

7.?sql查询过程

8.?MySQL InnoDB存储引擎中的MVCC解决了什么问题,能说下MVCC的实现原理么

9.?SQL语句经常写吧,那我给你出一道SQL题(分组求和排序)

10.?你认为什么情况下不应该建立索引

11.?mysql有几种锁?怎么实现?

12.?innodb事物的级别

13.?b 树的结构?与二叉树的区别?与b树的区别?

14.?写过最复杂的sql, 手写代码: 统计各个科目考试最高分:最复杂的包括了sum、case、left join、group by,追问左连接和内联区别,没答上来

15.?聚簇索引跟红黑树

16.?sql :给一个日期范围,统计每天入库的数据总量

17.?sql语句里like和in关键字

18.?sql语句,求平均分超过60分的学生学号

19.?数据库sql怎么优化20.?什么情况不能用索引?

21.?SELECT column_name(s)FROM table_nameWHERE column_nameBETWEEN value1 AND value2 什么时候会发生死锁;怎么解决死锁;N个资源怎么办?

redis

=====

1.?你知道redis的什么东西

2.?redis中zset,说了一下跳跃表的插入,删除过程;

3.?位图知道原理嘛(操作系统中的位示图还是bitmap?不太了解)

4.?redis数据类型,redis的应用场景,为什么redis快

5.?Redis的key的写入和删除的原理

6.?怎么保证Redis的高可用

7.?redis数据结构?单线程还是多线程?

8.?用什么样的队列?你是怎么实现?我回答的redis的list实现的)这种队列有什么缺点?

9.?分布式锁;

mq

==

1.?你还用过rabbitMQ呀,它能够做什么?

2.?rabbitMQ是怎么保证消息不丢的,从客户端—消息队列, 消息队列—服务器端的角度考虑

spring

======

1.?开源框架有哪些了解的 为什么用spring 为什么不用new就可以自动生产 能不能自己实现一个

2.?spring security是干嘛的,原理是啥,jwt干啥的3.?后台用什么框架?ioc,aop,其他还有什么框架也可以做到ioc,aop(2333~不就spring?)4.?Spring IOC,AOP,注解

设计模式

====

1.?双重检索单例

2.?设计模式分为哪三类,各有什么?设计模式,用过哪些设计模式,讲几个,设计模式和原则

3.?代理模式属于哪一类

4.?生产者消费者模式,生产消费者的,以及多生产者同步

5.?描述适配器,写单例

6.?单例模式,装饰模式,

分布式

===

1.?负载均衡的算法有哪些;

2.?rpc dubbo的组件有哪些

3.?分布式事务,CAP定理,有没有使用过相关的产品

4.?zookeeper了解吗

5.?hbase索引的结构,kafka存储的结构,二进制文件的组织方式,kafka如何避免消息**丢失,zookeeper在kafka中是干啥的,kafka在zookeeper中存储的数据,zookeeper了解不,zookeeper的共识算法,分区后如何解决。

6.?protobuf了解不,grpc了解不,用的什么协议,HTTP2和HTTP1区别,websocket建立连接过程

7.?RPC你了解过吗?

8.?如何分布式存储?

算法

==

1.?排序算法有哪些,简述冒泡和归并排序,冒泡算法的优化,讲讲归并排序,冒泡的优化知道吗;回答相等不交换,还有flag做已排序标志的优化;直接插入排序,写一下伪代码或者说一下思路,插入排序,时间复杂度

2.?堆排序原理

3.?快排,快排是什么思想,快排的优化是啥,为啥这么做;

4.?字母排序

5.?100个数中找出想要的数

6.?一个数组分成2个相等或接近的子数组

7.?派单的最短路径问题

8.?很大的数据,内存放不下,如何快速找到中间值

9.?手撕栈

10.?链表找环 链表找环入口,不用双指针怎么做

11.?双向链表实现 ,写了个add()和add(index)的

12.?求数组的全排列

13.?中序遍历,递归非递归

14.?求四个数绝对值的最小值

15.?黑猫白猫,混在一起,如何把他们区分开? 黑白灰三种猫混在一起,如何按照黑白灰排好序? 还有两个小问题忘记了。

16.?如何用一个int值,表示三种状态?

其他

==

最后总结我的面试经验

2021年的金三银四一眨眼就到了,对于很多人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。

另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。

资料领取方式:点击这里免费获取

BAT面试经验

实战系列:Spring全家桶+Redis等

其他相关的电子书:源码+调优

面试真题:

版权声明:本文为[熬夜布秃头啊]所创,转载请带上原文链接,感谢。 https://blog.51cto.com/u_15300828/3289770