热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

美团二面,已拿offer,不得不说“太难了”,分享我的刷题大典,最新大厂Java面试1000道+核心知识点

记一次美团程序员面试经历一面自我介绍项目中的监控:那个监控指标常见的有哪些?微服务涉及到的技术以及需要注意的问题有哪些?注册中心你了解了哪些?consul的可靠性你了解吗?

记一次美团程序员面试经历

二面美团,有惊无险已拿offer,不得不说“太难了”



一面

  • 自我介绍

  • 项目中的监控:那个监控指标常见的有哪些?

  • 微服务涉及到的技术以及需要注意的问题有哪些?

  • 注册中心你了解了哪些?

  • consul 的可靠性你了解吗?

  • consul 的机制你有没有具体深入过?有没有和其他的注册中心对比过?

  • 项目用 Spring 比较多,有没有了解 Spring 的原理?AOP 和 IOC 的原理

  • Spring Boot除了自动配置,相比传统的 Spring 有什么其他的区别?

  • Spring Cloud 有了解多少?

  • Spring Bean 的生命周期

  • HashMap 和 hashTable 区别?

  • Object 的 hashcode 方法重写了,equals 方法要不要改?

  • Hashmap 线程不安全的出现场景

  • 线上服务 CPU 很高该怎么做?有哪些措施可以找到问题

  • JDK 中有哪几个线程池?顺带把线程池讲了个遍

  • 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描

  • SQL 索引的顺序,字段的顺序

  • 查看 SQL 是不是使用了索引?(有什么工具)

  • TCP 和 UDP 的区别?TCP 数据传输过程中怎么做到可靠的?

  • 说下你知道的排序算法吧

  • 查找一个数组的中位数?


二面

你有什么问题想问我的吗?(常规问询)


  • 自我介绍、工作经历、技术栈

  • 项目中你学到了什么技术?

  • 微服务划分的粒度?

  • 微服务的高可用怎么保证的?

  • 负载均衡与反向代理,隔离,限流,降级,超时与重试,回滚,压力测试与应急预案

  • 常用的负载均衡,该怎么用,你能说下吗?



(技术问)


  • http重定向

  • DNS负载均衡

  • 反向代理负载均衡

  • IP负载均衡(LVS-NAT)

  • 直接路由(LVS-DR)

  • IP隧道(LVS-TUN)

  • 网关能够为后端服务带来哪些好处?

  • Spring Bean 的生命周期

  • xml 中配置的 init、destroy 方法怎么可以做到调用具体的方法?反射的机制

  • Object 类中的方法

  • 对象比较是否相同

  • hashmap put 方法存放的时候怎么判断是否是重复的

  • Object toString 方法常用的地方,为什么要重写该方法

  • Set 和 List 区别?

  • ArrayList 和 LinkedList 区别

  • 如果存取相同的数据,ArrayList 和 LinkedList 谁占用空间更大?

  • Set 存的顺序是有序的吗?

  • 常见 Set 的实现有哪些?

  • TreeSet 对存入对数据有什么要求呢?

  • HashSet 的底层实现呢?

  • TreeSet 底层源码有看过吗?

  • HashSet 是不是线程安全的?为什么不是线程安全的?

  • Java 中有哪些线程安全的 Map?

  • HashTable 你了解过吗?

  • 如何保证线程安全问题?

  • synchronized、lock

  • volatile 的原子性问题?为什么 i++ 这种不支持原子性?从计算机原理的设计来讲下不能保证原子性的原因happens before 原理

  • cas 操作

  • lock 和 synchronized 的区别?

  • 公平锁和非公平锁

  • Java 读写锁

  • 读写锁设计主要解决什么问题?

  • 你项目除了写 Java 代码,还有前端代码,那你知道前端有哪些框架吗?

  • MySQL 分页查询语句

  • MySQL 事务特性和隔离级别


二、事务的并发问题

  • 不可重复读会出现在什么场景?

  • sql having 的使用场景

  • 前端浏览器地址的一个 http 请求到后端整个流程是怎么样?

  • http 默认端口,https 默认端口

  • DNS 你知道是干嘛的吗?

  • 你们开发用的 ide 是啥?你能说下 idea 的常用几个快捷键吧?

  • 代码版本管理你们用的是啥?

  • git rebase 和 merge 有什么区别?

你们公司加班多吗?(题外话)

举例回答:

项目用 Spring 比较多,有没有了解 Spring 的原理?AOP 和 IOC 的原理

答:(1). IoC(Inversion of Control)是指容器控制程序对象之间的关系,而不是传统实现中,由程序代码直接操控。控制权由应用代码中转到了外部容器,控制权的转移是所谓反转。 对于Spring而言,就是由Spring来控制对象的生命周期和对象之间的关系;IoC还有另外一个名字——“依赖注入(Dependency Injection)”。从名字上理解,所谓依赖注入,即组件之间的依赖关系由容器在运行期决定,即由容器动态地将某种依赖关系注入到组件之中。

(2). 在Spring的工作方式中,所有的类都会在spring容器中登记,告诉spring这是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。

(3). 在系统运行中,动态的向某个对象提供它所需要的其他对象。

(4). 依赖注入的思想是通过反射机制实现的,在实例化一个类时,它通过反射调用类中set方法将事先保存在HashMap中的类属性注入到类中。 总而言之,在传统的对象创建方式中,通常由调用者来创建被调用者的实例,而在Spring中创建被调用者的工作由Spring来完成,然后注入调用者,即所谓的依赖注入or控制反转。 注入方式有两种:依赖注入和设置注入; IoC的优点:降低了组件之间的耦合,降低了业务对象之间替换的复杂性,使之能够灵活的管理对象。

AOP(Aspect Oriented Programming)

(1). AOP面向方面编程基于IoC,是对OOP的有益补充;

(2). AOP利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了 多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的 逻辑或责任封装起来,比如日志记录,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。

(3). AOP代表的是一个横向的关 系,将“对象”比作一个空心的圆柱体,其中封装的是对象的属性和行为;则面向方面编程的方法,就是将这个圆柱体以切面形式剖开,选择性的提供业务逻辑。而 剖开的切面,也就是所谓的“方面”了。然后它又以巧夺天功的妙手将这些剖开的切面复原,不留痕迹,但完成了效果。

(4). 实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。

(5). Spring实现AOP:JDK动态代理和CGLIB代理 JDK动态代理:其代理对象必须是某个接口的实现,它是通过在运行期间创建一个接口的实现类来完成对目标对象的代理;其核心的两个类是InvocationHandler和Proxy。 CGLIB代理:实现原理类似于JDK动态代理,只是它在运行期间生成的代理对象是针对目标类扩展的子类。CGLIB是高效的代码生成包,底层是依靠ASM(开源的java字节码编辑类库)操作字节码实现的,性能比JDK强;需要引入包asm.jar和cglib.jar。 使用AspectJ注入式切面和@AspectJ注解驱动的切面实际上底层也是通过动态代理实现的。

(6). AOP使用场景:


  • Authentication 权限检查

  • Caching 缓存

  • Context passing 内容传递

  • Error handling 错误处理

  • Lazy loading延迟加载

  • Debugging 调试

  • logging, tracing, profiling and monitoring日志记录,跟踪,优化,校准

  • Performance optimization性能优化,效率检查

  • Persistence 持久化

  • Resource pooling资源池

  • Synchronization同步

  • Transactions 事务管理

另外Filter的实现和struts2的拦截器的实现都是AOP思想的体现。

美团面试场景以及面试答案(文档总结)

二面美团,有惊无险已拿offer,不得不说“太难了”

最后

本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以免费送给我的读者朋友们:

目录:

二面美团,有惊无险已拿offer,不得不说“太难了”

Java面试核心知识点

一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!有需要获取的朋友:关注转发后私信我【面试】即可免费获取

二面美团,有惊无险已拿offer,不得不说“太难了”

Java面试核心知识点

已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了,各位读者朋友们快来找我免费获取吧

大厂Java面试1000道

二面美团,有惊无险已拿offer,不得不说“太难了”

资料的领取方式:点赞+关注,加助理VX:mxx2020666,即可免费领取


推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文详细介绍了PHP中与URL处理相关的三个函数:http_build_query、parse_str和查询字符串的解析。通过示例和语法说明,讲解了这些函数的使用方法和作用,帮助读者更好地理解和应用。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 本文讨论了读书的目的以及学习算法的重要性,并介绍了两个算法:除法速算和约瑟夫环的数学算法。同时,通过具体的例子和推理,解释了为什么x=x+k序列中的第一个人的位置为k,以及序列2和序列3的关系。通过学习算法,可以提高思维能力和解决问题的能力。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
独角戏小说
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有