当前位置: 首页 > article >正文

今天面试了一个2年Java经验的

今天去面试了一个26岁的程序员,看了简历,2年经验,本科,写得很牛叉。

Spring cloud alibaba全家桶、redis,分布式锁,服务调用,数据库事务,线程,Zookeeper、Dubbo 、RabbitMQ,Kafka 都懂。

做的项目也是这类微服务的内容有关。

我同事做算法的,算法工程师,他和我一起去面试,因为面试Java,他建议我问几个简单的加一个难的。我说他写得那么牛,我不问深一点,貌似对不起自己。他笑了,回我说也是。

以我过往的经验,把自己写得很牛×的人,大部分都是一知半解的人,所以凡事还是从细节来把握,看看真实水平如何。

1、简述HashMap的数据结构??

他基本就答不上来。

在JDK 7和以下,它是一个数组+链表结构。JDK8和以后,它是一个数组+链表or红黑树结构,当链表深度达到8以上之后,就会构建红黑树,而红黑树达到深度6后,就会进行重构。

首先先计算key的hashcode,然后确定在数组的位置,然后在把元素连接到链表或者红黑树中。

HashMap加载因子是0.75,默认容量是16,当满足16*0.75=12时,就进行重构HashMap结构,这个时候就会比较消耗时间了。所以我们应该尽可能避免这样的事情发生,尽可能第一次分配好空间,以避免重构。

2、HashMap和ConcurrentHashMap的区别是什么??

他也几乎没有反应,把他问蒙了。

HashMap不是线程安全的,而ConcurrentHashMap是线程安全的,只是它的加锁范围较小,适合在高并发下使用。

ConcurrentHashMap是一个线程安全的Map,JDK8之前它的内部在默认的情况下拆分为16个segment(类似HashMap结构),之后是红黑树,允许使用CAS乐观锁,针对某个区域(JDK8之前的segment)加锁,其他的不加锁,所以是一个局部加锁的机制,提高并发能力。

3、Feign进行服务调用,为什么给出服务名称,就能调用??Feign是如何获取服务清单的??

他回答:服务注册给服务治理中心,服务治理中心再告知服务实例。

我提示他说:你应该从服务治理的原理和服务获取的概念来谈。

他表示不太懂。

其实他基本又错了。首先服务在启动时,都注册给服务治理中心,服务治理中心会根据服务名称维护一份服务清单,每个服务节点都要定时续约(向服务治理中心请求告诉服务治理中心我还活着),不能按要求完成续约的就被服务治理中心剔除。而某个服务节点,每隔一段时间(一般是几秒钟)都会向服务治理中心拉去最新服务实例清单,这个过程叫做服务获取,然后缓存本地副本,提供给Feign客户端调用时使用。

ps:本来我还想问断路器的,我看他肯定又不知道,还是算了。

我想好吧,我觉得他写得东西,虚的比较多,那么我开始考虑问些比较基础的,毕竟人家也好歹2年工作经验。于是就稳点基础一点的吧。

4、数据库事务隔离级别有哪些??会产生哪些问题呢?

这个他比较好,能回答。

未提交读(脏读)

读写提交(不可重读)

可重复读(缓读)

串行化(克服所有的问题)

我在问:一般情况下,采用那个级别就够了??

他回答:可重复读。

我说:错了,一般来说,我们会采用读写提交。

5、Spring AOP是通过动态代理模式来完成的,你能告诉我有哪些通知?执行的顺序是怎么样的吗??

他只能告诉我有哪些通知,包括:前置通知、后置通知、环绕通知、事后通知,返回通知和异常通知。顺序他搞不清楚了。

AOP,执行顺序前置通知、目标方法(环绕通知),如果发生异常执行异常通知,如果没有发生异常执行返回通知,最后执行事后通知。

其实,和我的预测差不多,把简历进行包装,只要面试官认真问些细节的问题,就要露馅了。

我同事问的算法题,他也不太懂,估计要把他给PASS了。


http://www.kler.cn/a/2275.html

相关文章:

  • 陪诊问诊APP开发实战:基于互联网医院系统源码的搭建详解
  • docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled
  • uniCloud云对象调用第三方接口,根据IP获取用户归属地的免费API接口,亲测可用
  • CSS多列布局:打破传统布局的束缚
  • 《C++在金融领域的技术革命:高效、安全与创新的融合》
  • 力扣515:在每个树行中找最大值
  • Selenium基础篇之不打开浏览器运行
  • 136. 只出现一次的数字
  • 第十四届蓝桥杯三月真题刷题训练——第 19 天
  • 推荐 5 个好玩的 ChatGPT 开源应用
  • vue3自定义svg图标组件
  • 8个不能错过的程序员必备网站,惊艳到我了!!!
  • 【技巧】十大深度学习技巧和经验总结
  • 【进阶数据结构】平衡搜索二叉树 —— AVL树
  • DRAM功能介绍与基础概念
  • Android Navigation的四大要点你都知道吗?
  • 操作系统(2.4.5)--管程机制
  • String类为什么被设计成final,这样设计有什么好处
  • 【C语言】你真的了解结构体吗
  • linux系统运维面试题大全(137道题)
  • 博客项目
  • Python中的微型巨人-Flask
  • Spark - 继承 FileOutputFormat 实现向 HDFS 地址追加文件
  • Linux- 系统随你玩之--玩出花活的命令浏览器-双生姐妹花
  • 基于ssm大学生竞赛活动平台(包含万字文档)020
  • 【java】笔试强训Day1