阿里 新零售 后端开发 一面(暑期实习)
【技术】2021-0302-阿里一面-新零售-48min
一面 48min
面试官感觉非常友好,不会的会进行引导,就是太菜了,写的项目啥的被问到底了
上来先自我介绍一下,可能因为介绍里面提了一下项目,然后就开始问项目用到的框架和中间件了
项目
- 项目的用途是什么?
- 项目的主要使用人群有哪些?
- 项目中的登陆校验功能怎么实现的?
- 我说了前端用了MD5加密,后端也是MD5加密,然后就问MD5加密的好处
- 前面我说了防止抓包,从而信息泄露,然后就问我用哪些抓包工具?
- 前端是加密的,后端的是明文的,这种怎么实现?(我说是前端传递过来用户名,然后后端通过用户名比较,然后再加密后端的明文,跟前端传送过来的密文进行比较)
- 然后面试官说不用用户名怎么搞,后面发现说token怎么实现
- 最终才发现是在扯对称加密的问题 公钥私钥?
- 对称加密和MD5加密这种非对称加密的区别?
框架和中间件问题
SpringMVC、Nginx、Spring、Redis、Netty、HDFS
- 介绍一下SpringMVC(我说了比servlet容器更好,主要进行操作是从类级别改到了方法级别的方法处理请求,然后再讲了一下MVC架构。)
- Nginx有了解过吗?Apache呢?(Apache是什么年代的东西,没有了解过)
- Nginx为什么性能这么高?(我说了是异步IO框架,NIO,select.epoll原理,我嘴瓢说了等待函数回调,后面面试官纠正我了)
- 同步和异步的区别?
- 阻塞和非阻塞的区别?(后面发现自己在瞎BB,还好没纠着问)
- Spring框架的作用(我说的是SpringMVC的,然后面试官给我纠正说了一下是Spring使用到的依赖那些)
- IOC
- AOP
- 问我项目中的Redis用来干嘛?
- 其实我是把Redis当做数据库用的,后面说里面存储什么数据,有点尴尬
- 怎么处理Redis宕机的情况?(我说了持久化策略,RDB和AOF,这两个的介绍)
- Redis读写速度很快,这是怎么做到的?
- Redis中的事件处理机制,我说放到事件队列里面,这样有什么好处?
- Redis为什么不用多线程去处理?
- 多线程上下文切换的具体操作。(切换消耗CPU资源)
- Redis中的数据有没有设置过期时间。
- Redis中的数据要是内存空间不够会怎么样?(内存淘汰策略)
- 前面提到的LRU是怎么实现的?
- 为什么LRU是双向的链表(答不出来...)
- 为什么用Netty?(我说的是为了接受Socket请求,然后文档比较多,面试官笑了下)
- Netty为什么性能高?(Reactor模式忘记了。。)
- Hadoop项目的介绍,为什么会有这个项目?
- 为什么要搭建这个项目出来?
- HDFS怎么存储数据?
- HDFS怎么做容灾?
- DataNode机子坏掉了怎么办?(我说了心跳机制,好像解析得不清晰,后面又问了一遍心跳机制)
- NameNode数据比较多,然后机子暂停处理比较久,超过了心跳等待的时间,怎么办?(我也不知道怎么办呀,瞎说再等一会)
Java
- 介绍一下 ConcurrentHashMap
- 1.7之前的是 分段锁
- 1.7之后的是 synchronized
- 为什么HashMap是数组+链表的形式(我说了哈希冲突)
- 数组+链表中的链表我改成list可不可以?(我好像说成了直接用整个数组来存储行不行,瞎搞)
- synchronized了解过吗?(资源竞争,说了下单例模式)
- 怎么用来限制锁的范围?
- hashcode方法和equals方法
- 介绍一下Java的类加载机制
- 类加载机制的过程
- 怎么加载一个类?(双亲委派模型)
- 双亲委派模型解决了什么问题?(安全)
算法
- 假设有10亿条数据,从里面选出最小的10条数据,怎么操作?(一开始说了堆排序,后面引导说内存会爆,我说把这些切分成多个小块,然后选举10个最小的)
反问
- 这次面试有哪些需要改进的?
- 你们部门的工作?(有点搞笑,面试官说让我想想,然后开始背诵了)
- 我进一步学习的话,需要学习哪一方面的知识?(面试官说项目还好,需要深入了解对应的知识,害,都问透了)
- 说了应该还会再联系(希望会)
- 问了GPA
- 有投其他部门吗?
- 有刷题吗?