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

本文为Java面试者提供了全面的准备指南,涵盖自我介绍技巧、Java集合深入解析、计算机网络、HTTPS、进程通信、Spring框架、设计模式、分布式服务、数据库一致性、锁机制等核心知识点,附带实际项目经验分享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一面:(36min)

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

1、自我介绍

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

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

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

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

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



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

参考:
https://blog.youkuaiyun.com/Yansky58685/article/details/98118124

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

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

6、进程之间的通信方式?

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

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

Spring知识点总结:
https://blog.youkuaiyun.com/lz1170063911/article/details/79772474

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

8、有什么想了解的么?

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

二面:(56min)

1、自我介绍

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

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

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

640?wx_fmt=png
业务架构

640?wx_fmt=png
技术架构

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

一面的第7题。

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

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

6、说一下Dubbo的架构?

640?wx_fmt=jpeg

640?wx_fmt=jpeg

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的leader选举算法?

参考:
https://blog.youkuaiyun.com/zuochao_2013/article/details/82558592

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

参考:
https://blog.youkuaiyun.com/qq_28740207/article/details/80877079

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

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

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

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

11、mybatis?

mybatis知识点:
https://blog.youkuaiyun.com/q957967519/article/details/82414366

12、springmvc的流程?

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

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

关于死锁:
https://blog.youkuaiyun.com/wljliujuan/article/details/79614019

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

参考:


三面:(38min)
1、自我介绍

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

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

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

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

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

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

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

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

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

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

---end---

640?wx_fmt=png


### 关于美团软件测试试的经验 #### 软件测试流程 在软件测试领域,通常按照四个主要步骤进行测试活动。这包括单元测试(Unit Testing),用于验证单个模块的功能;集成测试(Integrated Testing),确保多个模块协同工作无误;确认测试(Validation Testing),验证最终产品是否满足需求规格说明书的要求;以及系统测试(System Testing)发布前的版本测试,全评估整个系统的性能稳定性[^2]。 #### 编写有效的软件测试计划 为了提高软件质量并有效管理测试资源,在制定软件测试计划时需注意以下几点:测试范围应尽可能广泛地覆盖所有的功能性需求;选用的方法要实际可操作性强;推荐使用的工具不仅要高效实用而且容易上手,同时生成的结果应当清晰明了、精确可靠[^3]。 #### 提早参与的重要性 值得注意的是,软件测试不应仅仅局限于代码完成之后才开始执行。实际上,从项目的最初阶段——即需求分析期起就应该让测试人员参与到其中去。这是因为除了对最后编写的程序本身做检测外,还需要审查在整个开发周期里形成的各种文档资料等内容是否存在错误或者不足之处。另外考虑到成本因素的话,则更应该尽早发现问题所在,因为在后期修正这些问题将会耗费更多的人力物力财力等资源[^4]。 #### 回归测试定义 回归测试指的是当修改了一个应用程序后重新运行以前的一系列测试案例来保证新改动没有引入新的bug或者是破坏已有功能的一种做法[^4]。 --- 以下是几个可能涉及的具体技术性问题及其解答: 1. **Q:** 描述一下TCP三次握手的过程? - A: TCP协议建立连接之前会经历所谓的“三步握手”。第一次由客户端发送SYN包给服务器请求建立链接;第二次收到该消息后的服务端回应一个带有自己序列号syn_ack的数据报文同时也把acknowledgement number设置成client初始序号加一表示接受到对方发起建链意图;第三次Client再次回复Server含有ACK标志位置为true的消息至此双方都认为可以正常通信了[^5]。 2. **Q:** DNS解析的工作原理是什么? - A: 当访问某个网址时,浏览器先查询本地缓存看是否有对应的IP地址记录如果有的话则直接跳转过去如果没有就需要向DNS server发出询问直到找到目标主机为止这个过程可能会经过根域名服务器顶级域名称服务器授权域名服务器等多个环节逐级查找直至定位成功返回结果给用户终端设备显示网页内容[^6]. 3. **Q:** 如何理解HTTP状态码分类及常见用途? - A: HTTP响应状态码分为五大类分别代表不同的含义如下所示: - 1xx (Informational): 表示接收的进程收到了Web请求并且继续处理; - 2xx (Success): 成功接收到请求数据并且正在处理; - 3xx (Redirection): 完成此请求必须采取进一步行动才能完成; - 4xx (Client Error): 请求中有语法错误或无法实现; - 5xx (Server Error): 由于服务器的原因导致未能履行合法请求[^7]. ```python import socket def tcp_handshake(host, port): try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((host, port)) syn_packet = b'\x00\x00' # Simplified SYN packet example sock.send(syn_packet) response = sock.recv(1024) ack_packet = process_response(response) sock.send(ack_packet) except Exception as e: print(f"Error during handshake: {e}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值