2019 有赞面经,已拿 offer(附答案和思路)

一面:(36min)

面试官人很好,问的比较细,但是我不会的地方会慢慢引导。

1、自我介绍

自我介绍可分为三层,第一层介绍基本信息;第二层介绍实习经历和项目经理及自己擅长的技术栈;第三层简单说下你的性格兴趣爱好等。自我介绍时间把握在 1-2 分钟,把自己的优势和擅长点讲出来。平时可以对着镜子多练练,讲的清楚比什么都重要。

2、java 基础

java 的集合看过源码么?HashMap? 自己说了下 jdk1.7 和 1.8 的区别(说了头插和尾插,然后面试官问这个是基于什么考虑的?还有什么?答了链表数量大于 8 的时候会转成红黑数,然后问我了解红黑树么?为什么红黑树只有红色和黑色?)HashMap 在多线程的情况下线程安全么?(答得扩容时出现,为什么?多线程已经出现了环,也就是死循环,去查找会出现什么情况?HashMap 在扩容的时候允许其他线程去查找么【一个线程在扩容,另一个线程在查找】?)

3、数据结构

链表常用的数据结构?ArrayList 和 LinkedList 的区别?

Hashmap 面试的信息量很大,面试官抛出一个点,往往希望面试者能较全面的去拓展回答。另一方面,数据结构的直接应用场景就是集合框架,所以集合框架的底层往往离不开数据结构。

针对数据结构和集合框架,可以看看以下两篇文章:

10 个数据结构高频知识点 (建议收藏)
精心整理 20 道高频 Java 集合面试题 (建议收藏)

4、TCP/IP

介绍下计算机网络常见的 7 层模型或者 TCP/IP 模型?

参考:
https://blog.csdn.net/Yansky58685/article/details/98118124

5、HTTPS/HTTP

HTTPS 属于哪一层协议?和 HTTP 的区别?

应用层。区别参考:
https://blog.csdn.net/qq_38289815/article/details/80969419

6、进程通信

进程之间的通信方式?

五种通信方式的介绍:
https://www.cnblogs.com/zgq0/p/8780893.html

7、Spring

使用 Spring 主要实现什么特性?Ioc 和 AOP?AOP 怎么去实现的?为什么我写了个注解或者 Spring 的配置文件配置了就可以识别?延伸到代理模式(代理类和被代理类有什么关系)?适配器模式的区别?装饰器模式?

Spring 知识点总结:
https://blog.csdn.net/lz1170063911/article/details/79772474

23 种设计模式:
http://c.biancheng.net/design_pattern/

8、有什么想了解的么?

可以从公司情况出发。比如,您所在的组是做什么业务,用了哪些技术栈,接下去架构会怎么样去演变等等。

二面:(56min)

1、自我介绍

2、项目

讲一下第一个项目?第一个项目里边涉及到数据加密和解密的过程,你们是怎么处理的?

项目中主要对用户的登陆密码和支付密码进行加密,把用户明文密码 + 用户 ID 作为 MD5 函数的参数,进行加密,确保唯一性。

3、电商业务

电商平台的项目的架构图画一下?

业务架构

技术架构

4、Spring

Spring 中 AOP 的动态代理?流程?

一面的第 7 题。

5、大数据

storm 中怎么确保 spout 正确的传给下一个 bolt 即下一个 bolt 已经接收到?

从 Storm 如何保证可靠性传输的角度进行回答:
https://blog.csdn.net/echosilly/article/details/51674558

6、Dubbo

说一下 Dubbo 的架构?

Dubbo 是一个分布式服务框架,以及 SOA 治理方案。其功能主要包括:高性能 NIO 通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。

它有 5 个节点,分别是 Provider, Consumer, Registry, Monitor, Container。其中 Provider 是服务提供者, Consumer 是服务消费者,Registry 是服务进行注册和被发现的注册中心,Monitor 是统计服务的调用次数和调用时间的监控中心,Container 是服务运行容器。

他们之间调用的关系是:Container 负责启动,加载然后运行 Provider。Provider 在启动时会向注册中心注册自己提供的服务,Consumer 在启动时会向 Registry 订阅自己所需服务,此时 Registry 会返回 Provider 地址列表给 Consumer。如果地址有变更,Registry 会基于长连接推送变更数据给 Consumer。Consumer 会基于软负载均衡算法选一台提供者进行调用,如果调用失败,则再选一台。Provider 和 Consumer 在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到 Monitor。

7、zookeeper

说一下 zookeeper 的 leader 选举算法?

参考:
https://blog.csdn.net/zuochao_2013/article/details/82558592

8、redis

redis 作为缓存如何保证和数据库的一致性?

参考:
https://blog.csdn.net/qq_28740207/article/details/80877079

9、工作经历

讲一下你实习的时候做的工作?通过我说的内容问了很多问题

这边别讲太多无关琐事,针对项目讲几点熟悉的点,把面试官往里面带。别让面试觉得你做了东西很多,但又很浅,但也别为了所谓的高大上,给自己挖坑。

10、索引

了解辅助索引么?(说了聚簇和非聚簇)聚簇索引和非聚簇索引的区别?

参考:
https://www.cnblogs.com/qlqwjy/p/7770580.html

11、mybatis

mybatis?

mybatis 知识点:
https://blog.csdn.net/q957967519/article/details/82414366

12、springmvc

springmvc 的流程?

参考:
https://www.cnblogs.com/leskang/p/6101368.html

13、死锁

进程或者线程什么情况下发生死锁?

关于死锁:
https://blog.csdn.net/wljliujuan/article/details/79614019

14、锁

说说可重入锁和读锁?读锁的底层原理是什么?(当时引申到了乐观锁和悲观锁)

参考:
精心整理了 100 个 Java 多线程知识点
精心整理了 20 道常见数据库面试题 (建议收藏)
40 道高频 Javase 面试题及详细答案 (建议收藏)

三面:(38min)

1、自我介绍

2、学历

我看你本科是一个普通的二本,研究生是 985,你觉得你是怎么考上的?

3、专业

当时选专业是自己选的么?为什么选计算机?你们班女生学计算机的有多少?

4、耐心

会不会觉得写代码很枯燥?

5、你觉得实习过程中的最大收获有哪些?

6、人际关系

说下你的优点和缺点?你的老师是怎么评价你的?你周围的同学是怎么评价你的?从哪些事情上边可以体现出来?能举个例子么?

7、兴趣爱好

家是哪里的?有什么兴趣爱好?

8、有赞是你的第几志愿?为什么不选杭州的其他公司?

9、说一个最近做的项目?以后的职业规划是什么?

10、期望薪资是多少?现在手上有 offer 么?

11、有什么想问我的么?问了一下面试官对我的评价。

---end---