2022.11.17 阿里钉钉数据开发岗位一面

avatar
作者
猴君
阅读量:0

       今天晚上和阿里钉钉面试官聊了一面,整个过程持续45分钟,还是相当持久的。前面先让我自我介绍,包括自身背景、工作经历和项目经验,在介绍的时候面试官几次打断,让我停下来,然后他提问,我很纳闷还能这样,不让我连续地讲完么。不过我也能接受,因为也面过阿里很多次了,面试过程还是比较easy的。

       讲完自我介绍后就进入技术问答环境。面试官首先一问,了解Spring bean的声明周期吗?我心里一乐,这不就是一直以来有所准备的么。于是我从bean一开始从配置文件中解析到beanFactory,到中间填充属性等操作,最后到创建成功,一一列出来了。大概过程如下: 配置文件中定义->经过reader对象解析加载到beanfactory的beandefinitionmap->初始化->如果实现了aware接口就调用对应的set方法->如果实现了BeanPostProcessor接口就调用前置方法->如果实现了InitializingBean会调用afterPropertiesSet方法->调用自身init方法->调用beanpostprocessor的后置方法->创建完成->使用->调用destroy方法销毁。

       接着面试官二问,redis有使用过吧?有什么使用场景?我大概讲了一下几种场景,分别是作为缓存、轻量级消息队列、排行榜(使用sortedset)、分布式锁。

        面试官三问,缓存的三种常见问题缓存穿透、缓存击穿和缓存雪崩分别是什么以及怎么解决?这个也是常见的面试考点,我也不知道我背得怎样,大概是这样说的。缓存穿透是大量不存在的key落到了数据库上,解决的方式有两种,一种是预设空值也就是缓存中预设置不存在的key值为null,另一种是使用布隆过滤器,简单地介绍下布隆过滤器就是通过哈希计算存储合法的值到布隆过滤器中,这样可以过滤掉不合法的值。缓存击穿是热key失效,解决的方案可以是定时判断热key是否要过期是的话延长过期时间。缓存雪崩是大量key同时失效,解决的方案可以是给不同的key尽量设置不同的过期时间,使不同的key不至于同时失效。

      面试官四问,什么是星型模型,和传统数据库的ER模型有什么区别?我了解星型模型是一个事实表和多个维度表相关联的一种数据仓库表的设计方法,传统的ER模型应该是满足了数据库三范式的表设计原则。我这里没回答出来两者的具体区别。

    面试官五问,对哪个组件熟,有什么处理线上问题的经验?因为我过往项目经验中大数据相关经验比较多,所以我说了Hive。介绍完Hive的原理之后,我讲了之前做数据统计分析的时候使用Hive做离线分析的经验,以及线上处理配置不合理或服务器资源不足导致OOM问题的过程。每次面试需要讲到实际项目中遇到的问题时,我就有点不好意思和羞愧,因为确实没涉及到比较难的问题!

   最后本来面试要结束了,面试官又发一问,说一下桥接模式。我说桥接模式就是抽象和实现的分析,接口可以是一致的,然后通过方法可以改变内部的实现,例如java中的数据库连接JDBC,可以通过设置不同数据库的Driver来改变内部实现,但是接口还是一样的,程序中使用的时候还是一样调用的。

 

 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!