阿里健康一面面经(电话面)


1.前言开胃

原本风和日丽的一个下午

突然接到了阿里健康HR的电话问我什么时候有时间,莫名交流后拍定五分钟后见! 电话面试,时间半小时左右。
在这里插入图片描述
然后随便找了广场准备迎接洗礼!
下面进入正题。

2.正题来了

五分钟一到,面试官如约而至,我也怀着激动不安还有点手抖的接起了电话。

互相问候了一波紧接着就开始对线,首先迎来的是项目。在大学都做过什么项目?主要学习了什么?

这个问题可能就是我唯一一个好答得,我必须拖住时间好好说说我大学都做过什么。生怕后边就成他问我不了解的模式

然后说完之后紧接着就是框架?

第一个问题(框架开胃菜)

面试官:Mybatis中的mapper是接口对吧,它可以注入到Service层,那么为什么一个Mapper接口可以注入到Service层呢?

当从Spring中获取Mapper接口时,将会调用对应的MapperFactoryBean的getObjects方法,该方法返回值即为对应的MapperProxyFactory创建的MapperProxy动态代理

以上是标准答案,但是是我下来看完之后才知道的。因为第一个问题我不能说我不知道,要不印象分得拉多低呀!所以我打算放手一搏说出自己的想法

:我没有看过但是我可以谈谈我自己的理解,Mybatis 是ORM框架,其中会使用代理模式给我们生成代理类,其实我们拿到的是接口的代理类,所以说注入的也是代理类。

面试官:答到点子上了

这下算小小的放心一点了

第二个问题(顺藤摸瓜)

面试官:既然你谈到了动态代理,那你知道动态代理的有哪几种方式有什么区别吗?

: 动态代理的方式有两种,一个是基于JDK proxy的动态代理另一个Cglib两种方式。然后JDK动态代理是基于接口实现的动态代理,Cglib是基于继承的

面试官:好

此时我已经不是那么紧张了因为我自认为得到了面试官的肯定

第三个问题(继续框架)

面试官:Spring 的Scope你知道哪几种?
:1、singleton 2、prototype 主要是这两种还有Session那些不常用的记忆不是很深刻
面试官:好,那可以说一下Bean的生命周期吗?
: 八股文般的背了下来(具体的我就不说了 有想了解的伙伴可以看我这篇博客SpringBean生命周期
面试官:你是看过源码吧
:看过,但是看完容易忘,现在也就是反复看理解的一个过程,上述是我自己的理解

接下来面试官就转移阵地了

后来全是(JAVA基础)

  • 说一说重载和重写有什么区别?
    相信对一个学习过JAVA的人来说再没有比这个更简单的了(除了问8种基本数据类型)
    这里博主就不给出我是怎样回答的了

  • 用Runnable 和Thread实现线程有什么区别
    当然一个是基于接口一个是基于继承 这个大家也并不陌生,我也是这么回答的。

  • 调用start()方法线程进入什么状态
    就绪状态等待CPU的调度

  • 构造块知道吗?
    在我回答知道的时候我本以为是要问我静态代码块、构造块那些的执行顺序结果竟然和我想的不一样
  • 构造快是在什么时候被加载的 ?
    我的回答是在JVM类加载时候的初始化阶段被加载的

  • 顺藤摸瓜问我那你知道JAVA内存划分吗?
    这里捋清楚了思路 类加载器、运行时数据区、执行引擎、本地方法库 然后运行时数据区包含:虚拟机栈、本地方法栈、程序计数器、堆、方法区。

  • 那你说一下堆的细分
    这里回答的时候新生代、老年代然后 永久代/原空间做了区别去回答

  • 接下来面试官继续问 有个Person类,然后我们Person person=new Person()这个Person对象在哪呢?
    这里大部分人可能会回答堆区,但是我要想得到他的肯定我不能这样回答呀
    于是我的回答:如果这个对象经过逃逸分析,没有逃逸出方法那么会在栈上分配,如果逃逸出方法的话是在对上分配

  • 好的 那final static 这些关键字是存在哪呢 ?
    运行时数据区的运行时常量池中
    当时我对自己答案不是很肯定。幸好面试官没接着往下问,当然下来我查看了一下确实是在运行时常量池。只不过我没有细分开回答 。给了个笼统的 这里有点点小瑕疵。

转战集合源码

  • HashTable 和HashMap有什么区别知道吗?
    首先这个问题我知道是要问线程安全了 于是我把线程安全放在第一点,HashTable是线程安全的而HashMap是非线程安全的。还没说完面试官直接打断,这就说明我的问题到他的点子上想问的了

  • 那你说一下他是怎么实现线程安全的
    这里我说了通过给方法加synchronized关键字来实现的

  • 那其余的你还知道哪些线程安全的容器
    我说了ConcurrentHashMap、Vector

  • 追问 那ConcurrentHashMap 用的什么数据结构知道吗?
    JDK1.7:数组+链表+ReentrantLock
    JDK1.8:数组+链表+红黑树+Synchronized+CAS

  • 那ConcurrentHashMap和HashTable都是线程安全的他俩有什么区别或者应用场景吗?
    这里我主要从HashMap锁粒度细展开来讲HashMap支持的并发度高

  • ConcurrentHashMap初始化容量是多少? 怎样扩容的?
    16 扩容的话引出来个扩容因子 二倍扩容

  • 扩容因子为什么是0.75
    如果高了可以提高空间利用率,但是hash冲突高了
    低的话Hash冲突低但是空间利用率低,经过反复测试0.75效果最好所以是0.75

前方高能开始问多线程了

  • 进行和线程有什么区别能说一下吗?
    线程是操作系统调度的最小单位,一个进程可以拥有多个线程

  • 可以举个例子吗?一个QQ是一个什么?
    我就举例:一个QQ、一个微信都是一个进程,在QQ中可以同时和多个人聊天,开聊条窗口可以把这个看成一个一个的线程。

  • 什么是公平锁?什么是非公平锁

  • Synchronized 是公平的还是非公平的?
    这里我愣了一下然后面试官引了我一下答出来是非公平的

  • 问了ThreadLocal 是什么
    我就简单回答了ThreadLocal的作用,为每个线程提供变量副本,说了一下JMM工作模型

  • 线程池的工作原理能说多少?
    这里我大概简述了一下工作原理,和几个重要的参数。

基本到这里面试就结束了,其余的问我在学校的情况。拿没拿过奖学金这些问题。

这篇博客以对话的形式给大家展现我面试的过程,希望自己能顺利通过,顺便如果对你有用记得别忘了三连
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值