17、可以使用多少列创建索引?
18、NOW()和 CURRENT_DATE()有什么区别?
19、什么是非标准字符串类型?
20、什么是通用 SQL 函数?
21、MySQL 支持事务吗?
22、MySQL 里记录货币用什么字段类型好
23、MySQL 有关权限的表都有哪几个?
24、列的字符串类型可以是什么?
25、MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
26、锁的优化策略
27、索引的底层实现原理和优化
28、什么情况下设置了索引但无法使用
(1)以“%”开头的 LIKE 语句,模糊匹配。
(2)OR 语句前后没有同时使用索引。
(3)数据类型出现隐式转化(如 varchar 不加单引号的话可能会自动转换为 int 型)。
Java 并发编程
=========
1、在 java 中守护线程和本地线程区别?
2、线程与进程的区别?
3、什么是多线程中的上下文切换?
4、死锁与活锁的区别,死锁与饥饿的区别?
5、Java 中用到的线程调度算法是什么?
6、什么是线程组,为什么在 Java 中不推荐使用?
7、为什么使用 Executor 框架?
8、在 Java 中 Executor 和 Executors 的区别?
9、如何在 Windows 和 Linux 上查找哪个线程使用的 CPU 时间最长?
10、什么是原子操作?在 Java Concurrency API 中有哪些原子类(atomic classes)?
11、Java Concurrency API 中的 Lock 接口(Lock interface)是什么?对比同步它有什么优势?
12、什么是 Executors 框架?
13、什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?
(1)阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。
(2)这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。
(3)阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。
JDK7 提供了 7 个阻塞队列。分别是:
(1)ArrayBlockingQueue :一个由数组结构组成的有界阻塞队列。
(2)LinkedBlockingQueue :一个由链表结构组成的有界阻塞队列。
(3)PriorityBlockingQueue :一个支持优先级排序的无界阻塞队列。
(4)DelayQueue:一个使用优先级队列实现的无界阻塞队列。
(5)SynchronousQueue:一个不存储元素的阻塞队列。
(6)LinkedTransferQueue:一个由链表结构组成的无界阻塞队列。
(7)LinkedBlockingDeque:一个由链表结构组成的双向阻塞队列。
Java 5 之前实现同步存取时,可以使用普通的一个集合,然后在使用线程的协作和线程同步可以实现生产者,消费者模式,主要的技术就是用好,wait ,notify,notifyAll,sychronized 这些关键字。而在 java 5 之后,可以使用阻塞队列来实现,此方式大大简少了代码量,使得多线程编程更加容易,安全方面也有保障。
BlockingQueue 接口是 Queue 的子接口,它的主要用途并不是作为容器,而是作为线程同步的的工具,因此他具有一个很明显的特性,当生产者线程试图向BlockingQueue 放入元素时,如果队列已满,则线程被阻塞,当消费者线程试图从中取出一个元素时,如果队列为空,则该线程会被阻塞,正是因为它所具有这个特性,所以在程序中多个线程交替向 BlockingQueue 中放入元素,取出元素,它可以很好的控制线程之间的通信。阻塞队列使用最经典的场景就是 socket 客户端数据的读取和解析,读取数据的线程不断将数据放入队列,然后解析线程不断从队列取数据解析。
14、什么是 Callable 和 Future?
15、什么是 FutureTask?使用 ExecutorService 启动任务。
16、什么是并发容器的实现?
17、多线程同步和互斥有几种实现方法,都是什么?
18、什么是竞争条件?你怎样发现和解决竞争?
19、你将如何使用 thread dump?你将如何分析 Thread dump?
20、为什么我们调用 start()方法时会执行 run()方法,为什么我们不能直接调用 run()方法?
21、Java 中你怎样唤醒一个阻塞的线程?
22、在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?
23、什么是不可变对象,它对写并发应用有什么帮助?
24、什么是多线程中的上下文切换?
25、Java 中用到的线程调度算法是什么?
26、什么是线程组,为什么在 Java 中不推荐使用?
27、为什么使用 Executor 框架比使用应用创建和管理线程好?
28、java 中有几种方法可以实现一个线程?
29、如何停止一个正在运行的线程?
30、notify()和 notifyAll()有什么区别?
31、什么是 Daemon 线程?它有什么意义?
32、java 如何实现多线程之间的通讯和协作
Spring 面试题
==========
1、一般问题
1.1、不同版本的 Spring Framework 有哪些主要功能?
1.2、什么是 Spring Framework?
1.3、列举 Spring Framework 的优点。
由于 Spring Frameworks 的分层架构,用户可以自由选择自己需要的组件。Spring Framework 支持 POJO(Plain Old Java Object) 编程,从而具备持续集成和可测试性。由于依赖注入和控制反转,JDBC 得以简化。它是开源免费的。
1.4、Spring Framework 有哪些不同的功能?
1.5、Spring Framework 中有多少个模块,它们分别是什么?
1.6、什么是 Spring 配置文件?
1.7、Spring 应用程序有哪些不同组件?
1.8、使用 Spring 有哪些方式?
2、依赖注入(Ioc)
2.1、什么是 Spring IOC 容器?
Spring 框架的核心是 Spring 容器。容器创建对象,将它们装配在一起,配置它们并管理它们的完整生命周期。Spring 容器使用依赖注入来管理组成应用程序的组件。容器通过读取提供的配置元数据来接收对象进行实例化,配置和组装的指令。该元数据可以通过 XML,Java 注解或 Java 代码提供。
2.2、什么是依赖注入?
2.3、可以通过多少种方式完成依赖注入?
2.4、区分构造函数注入和 setter 注入。
2.5、spring 中有多少种 IOC 容器?
2.6、区分 BeanFactory 和 ApplicationContext。
2.7、列举 IoC 的一些好处。
2.8、Spring IoC 的实现机制。
3、Beans
3.1、什么是 spring bean?
3.2、spring 提供了哪些配置方式?
3.3、spring 支持集中 bean scope?
3.4、spring bean 容器的生命周期是什么样的?
3.5、什么是 spring 的内部 bean?
3.6、什么是 spring 装配
3.7、自动装配有哪些方式?
3.8、自动装配有什么局限?
4、注解
4.1、什么是基于注解的容器配置
4.2、如何在 spring 中启动注解装配?
4.3、@Component, @Controller, @Repository, @Service 有何区别?
4.4、@Required 注解有什么用?
4.5、@Autowired 注解有什么用?
4.6、@Qualifier 注解有什么用?
4.7、@RequestMapping 注解有什么用?
5、数据访问
5.1、spring DAO 有什么用?
5.2、列举 Spring DAO 抛出的异常。
5.3、spring JDBC API 中存在哪些类?
5.4、使用 Spring 访问 Hibernate 的方法有哪些?
5.5、列举 spring 支持的事务管理类型
5.6、spring 支持哪些 ORM 框架
6、AOP
6.1、什么是 AOP?
6.2、什么是 Aspect?
6.3、什么是切点(JoinPoint)
6.4、什么是通知(Advice)?
6.5、有哪些类型的通知(Advice)?
6.6、指出在 spring aop 中 concern 和 cross-cutting concern 的不同之处。
6.7、AOP 有哪些实现方式?
6.8、Spring AOP and AspectJ AOP 有什么区别?
6.9、如何理解 Spring 中的代理?
6.10、什么是编织(Weaving)?
7、MVC
7.1、Spring MVC 框架有什么用?
7.2、描述一下 DispatcherServlet 的工作流程
7.3、介绍一下 WebApplicationContext
微服务 面试题
=======
1、您对微服务有何了解?
2、微服务架构有哪些优势?
3、微服务有哪些特点?
解耦 – 系统内的服务很大程度上是分离的。因此,整个应用程序可以轻松构建,更改和扩展 组件化 – 微服务被视为可以轻松更换和升级的独立组件 业务能力 – 微服务非常简单,专注于单一功能 自治 – 开发人员和团队可以彼此独立工作,从而提高速度 持续交付 – 通过软件创建,测试和批准的系统自动化,允许频繁发布软件 责任 – 微服务不关注应用程序作为项目。相反,他们将应用程序视为他们负责的产品 分散治理 – 重点是使用正确的工具来做正确的工作。这意味着没有标准化模式或任何技术模式。开发人员可以自由选择最有用的工具来解决他们的问题敏捷 – 微服务支持敏捷开发。任何新功能都可以快速开发并再次丢弃。
4、设计微服务的最佳实践是什么?
5、微服务架构如何运作?
6、微服务架构的优缺点是什么?
7、单片,SOA 和微服务架构有什么区别?
8、在使用微服务架构时,您面临哪些挑战?
9、SOA 和微服务架构之间的主要区别是什么?
10、微服务有什么特点?
11、什么是领域驱动设计?
12、为什么需要域驱动设计(DDD)?
13、什么是无所不在的语言?
14、什么是凝聚力?
15、什么是耦合?
16、什么是 REST / RESTful 以及它的用途是什么?
17、你对 Spring Boot 有什么了解?
18、什么是 Spring 引导的执行器?
19、什么是 Spring Cloud?
20、Spring Cloud 解决了哪些问题?
21、在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?
22。你能否给出关于休息和微服务的要点?
23、什么是不同类型的微服务测试?
24、您对 Distributed Transaction 有何了解?
25、什么是 Idempotence 以及它在哪里使用?
26、什么是有界上下文?
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
最后
文章中涉及到的知识点我都已经整理成了资料,录制了视频供大家下载学习,诚意满满,希望可以帮助在这个行业发展的朋友,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我把这些资料,分享出来。相信对于已经工作和遇到技术瓶颈的朋友们,在这份资料中一定都有你需要的内容。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
5677854)]
[外链图片转存中…(img-lycyBY5t-1712675677854)]
[外链图片转存中…(img-o99qfAJ7-1712675677855)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-DYGGwF8x-1712675677855)]
最后
文章中涉及到的知识点我都已经整理成了资料,录制了视频供大家下载学习,诚意满满,希望可以帮助在这个行业发展的朋友,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我把这些资料,分享出来。相信对于已经工作和遇到技术瓶颈的朋友们,在这份资料中一定都有你需要的内容。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-FG91VMnz-1712675677855)]