采访美国运通。
下面是美团校招的面试真题和答案解析,问的比较细,涉及到的模块有:网络、框架、设计模式(静态代理模式)、手撕代码、MySQL、Java 基础、HashMap 等知识点,接下来我们一起来看吧。
1.自我介绍
自我介绍讲明白三个点:
- 你是谁?有几年工作经验?哪一届的学生?毕业院线?
- 你会啥?
- 你最大成就?
2.HTTP属于传输协议的哪一层协议?
HTTP 属于应用层,基于 TCP/IP 实现。
3.TCP和UDP的区别?
- TCP 有连接;UDP 无连接。
- TCP 可靠;UDP 不可靠。
- TCP 基于数据流;UDP 基于数据报。
- UDP 比 TCP 更高效。
- TCP 发送缓冲区、接收缓冲区;UDP 只有接收缓冲区,没有发送缓冲区。
4.TCP的可靠性传输怎么保证?
保证可靠性的机制:
- 确认应答。
- 超时重传。
- 连接管理(三次握手和四次挥手)。
- 拥塞控制。
- 流量控制。
5.如果让你设计一个协议,你怎么保证可靠性?
可靠性主要依据:
- 连接管理
- 确认应答
- 超时重传
6.TCP为什么需要三次握手?
TCP 通讯的双方都是全双工的,所以他们彼此要证明自己和对方的发送能力和接收能力。
TCP 如果两次握手不能证明服务器端的发送能力和客户端的接受能力 -> 两次握手。
TCP 至少需要三次握手才能证明彼此的全双工能力。
7.TCP为什么需要四次挥手?
原因有两个:
- TCP 本身自带确认应答。
- TCP 有接收缓冲区的任务可能没执行完。
8.GET和POST请求的区别?
主要区别:
- 隐私性:通常情况下 POST 的隐私性高于 GET。
- Restful 规范:GET 用于查询;POST 用于写入操作。
- 传参的大小不同:GET 传参有大小限制,而 POST 没有。
9.你刚才说GET请求传输文件大小是有限制是多少?
不同的浏览器是不同。
早期版本通常是 2k~4k,现在是 4K~8k。
10.我看你博客写了很多关于Spring的东西,你可以给我说一下Spring的最重要的两大特性吗?
Spring 核心功能:
- IoC
- AOP
11.可以聊一下AOP吗?
思路:
- 讲定义:AOP 面向切面编程。
-
讲实现:
- 框架添加 AOP 依赖
- 定义切面(@Aspect)并且将它放到 IoC 容器
- 定义切点 -> @Pointcut 拦截规则
- 定义通知 -> 拦截之后的执行方法
-
讲原理:依靠 AOP 实现:
- JDK Proxy
- CGLib
12.说一下静态代理的实现类图吗?
UML 类图 -> 设计模式
静态代理 UML 类图:
- 接口类
- 真实类(被代理的类)
- 代理类
13.现在手写一个静态代理?
14.Java基础类型有哪几个?
Java 有以下 8 大数据类型:
- 整型:byte、short、int、long
- 浮点类型:float、double
- 字符类型:char
- 布尔类型:boolean
15.int是几个字节?
4个字节。
16.int和Integer有啥区别?那你觉得哪一个用起来好,为什么?
区别:
- int 属于基础数据类型
- Integer 属于对象。
使用场景:
- int 使用场景:定义类里面的属性。
-
Integer 使用场景:
- 传参
- 泛型
- 对象工具方法
17.MySQL的事务隔离级别有哪几个?
- 读未提交:存在脏读、不可重复读、幻读问题。
- 读已提交:没有脏读问题了,但是依然存在不可重复读和幻读的问题。
- 可重复读(默认隔离级别):没有脏读、不可重复读的问题,但依然存在幻读问题。
- 串行化:没有脏读、不可重复读、在幻读的问题,但效率较低。
18.为什么读已提交有不可重复读的问题?
读已提交会查询事务已经提交的数据,所以在两次相同的查询中,可能会读到不同的内容,这个问题就是不可重复读的问题。
19.你可以给我模拟一下读已提交发生不可重复读的问题吗?
begin; -- 开启事务
select username from users where id=1; -- 张三
-- 事务2将 users id=1 username='李四'
-- ....
select username from users where id=1; -- 李四
20.写一个SQL语句:查询男生的数量?
select count(*) from users where gender=1;
21.根据写的SQL说一下这个里面索引是谁?生效了吗?
考察的重点:性别是否适合做索引?
无索引,因为性别不适合做索引。
22.HashMap的底层实现原理?
HashMap 使用数组+链表/红黑树来实现的。
23.为什么HashMap要用到链表?
HashMap 会有哈希冲突,HashMap 使用的是链地址法来解决哈希冲突(实现简单、高效),所以使用链表来实现 HashMap 解决哈希冲突。
本文视频解析
飞书链接:https://r6b93q3exi.feishu.cn/docx/GBJPdy5hIoqTZNxMV8WcBDWUnHb
密码:1p6698&1
企业面试真题视频直播
每周六、周天、周一晚上 8 点,我会在直播间讲解企业面试真题,感兴趣的朋友可以关注一波,一起刷面试真题。
本文已收录到我的面试小站 www.javacn.site,其中包含的内容有:Redis、JVM、并发、并发、MySQL、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、设计模式、消息队列等模块。
推荐阅读
-
美国国防部发布 DevSecOps 持续授权实施指南(下) - IV.评估方法
-
美国国防部发布 DevSecOps 持续授权实施指南(上)
-
金融工程-美国
-
谷歌宣布从 6 月 4 日起在美国放弃谷歌支付,全面转向谷歌钱包
-
美国 NAB 大会透视:生成式人工智能、软件定义、XR、创造者经济等领域的十大趋势
-
采访者:Kafka 和 ES Select Master 有什么区别?
-
手把手教你如何注册谷歌账号--这个手机号不能用来验证。于是人们想当然地认为,谷歌退出的原因,并不是对国内手机号验证通过。其实不然,根据谷歌的注册机制,这是注册时的第一次验证,也属于机器验证,即判断注册者是否为机器人,以防止滥用,所以这次验证只是纯粹的手机号验证,并不是绑定手机号。 那么我们就有疑问了,第一次验证要求手机号验证却显示手机号无法验证,这不是自相矛盾吗? 谷歌现在在全球至少有14亿注册用户,所以谷歌对注册的网络、机器要求非常严格,可以说是判断筛选机制,你的网络、机器或者浏览器身份验证,不符合谷歌机器认证,就不允许你验证通过,而不是因为手机号的问题。不信的朋友可以换个美国手机号输入试试,同样显示这个手机号无法验证。 所以我不建议使用代理网络注册,因为那是一个共享通道,已经被滥用了,这个时候遇到无法验证也就不奇怪了,即使有些朋友侥幸通过了验证,这个号码也活不了多久,因为很快就会被检测出是什么ip注册的,然后出现异常验证,甚至直接封号,这个时候你就后悔晚矣。所以对于QQ邮箱谷歌注册入口,笔者强烈不推荐这样做,因为QQ邮箱注册早就被滥用了,会有那么多人会遇到异常验证的情况。 异常验证在你输入任何手机号码的情况下都会显示无法验证或者手机号码验证次数过多。
-
2019年最新可用edu教育电子邮件申请--美国公立大学
-
北美 美国 加拿大 Netflix Live Streaming Bandwagon:TikTok 和 YouTube 的营销策略探索
-
美国共和党正式提出《国防量子加速法