what is what?

来源:互联网 发布:淘宝设置主营类目 编辑:程序博客网 时间:2024/04/30 04:19

写在之前

相信大家以前在面试的过程中都有诸如此类的情景。面试官问你,“Spring是什么?”,“什么是面向对象思想?”,“什么是事务?”等等。类似的问题给人的第一感觉就是:诶,这个题我肯定会,因为我经常用到呀。然后我该怎么说呢?该说那一部分呢?还是全部都说?那得说多久啊?每次被问到这样的问题,以上就是我真是的心里状态。不难想象,我都答得不是很好。

后来经过我一系列的思考,我认为自己答不好该类问题的原因有如下几个:
1. 认为该类问题很虚,打从心底抗拒这种问题。
2. 被问到知识点的一些基础概念没有理清楚,知其然不知其所以然。
3. 该类问题比较抽象、宏观,而自己的概括能力又很差。

如果您也这样认为,那么希望这篇博客能尽绵薄之力。因为面试过程中问这些问题并不是在吹比。
首先,在编程的世界里日新月异,在学习或者使用一门技术、语言或者思想之前,弄清楚为什么要用它,它是用来解决什么问题的,没有它之前我们是如何解决问题是至关重要的。
其次,我们需要具备一种高度概括的能力(如果不是背的书而是基于自己的理解,那便更是锦上添花)。如果你对大部分问题都需要大量的表述才能说得清楚,这无疑给与人的交流沟通过程带来较高的成本。倾听着需要紧跟着你的逻辑,且需要提取出他想要的信息或答案。这对你来说也是不利了。
最后,如果您是一个基础扎实的人,那么请一定记得时长梳理自己的知识技能树。想必您会有新的收获,且一定可以回答得出前文提到的那些问题,事半功倍。

什么是什么?

接下来要列出的问题,都是我曾经面试过程中被问到过的问题。虽然我已经竭尽所能google,查博客,查书籍,但是本人才疏学浅,如有错误之处欢迎各位同行指出,讨论。

什么是面向对象思想?
把一组数据结构和处理它们的方法组成对象,把相同行为的对象归纳为类,通过类的封装隐藏内部细节,通过继承实现类的特化/泛化,通过多态实现基于对象类型的动态分派。

什么是spring?
Spring是为了解决企业应用程序开发复杂性而创建的开源框架,它是由容器、AOP等7个定义良好的模块组成一个分层架构框架。它用于创建高性能,低耦合,易于测试的,可重用的代码。

什么是DI(依赖注入)?
依赖注入是一种设计模式,可以作为控制反转的一种实现方式。依赖注入就是将实例变量传入到一个对象中去(Dependency injection means giving an object its instance variables)。

什么是IOC(控制反转)?
控制反转是一种在软件工程中解耦合的思想。具体是指:不创建对象,但是描述创建它们的方式;在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。并由容器(在Spring框架中是IOC容器)负责将这些联系在一起。

什么是SpringMVC?
MVC是一种使系统的框架分层更加清晰,可扩展性更强,耦合度更低的设计模式。SpringMVC是Spring中Web模块的组成之一。

什么是AOP?
Aspect Oriented Program这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。

什么是事务?
事务是指一个逻辑单元执行一系列的操作,这组操作要么全部成功,要么全部失败。

什么是索引?
在关系数据库中,索引是一种单独的、物理的、对数据库表中一列或多列的值进行排序的、一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。

什么是NIO?
NIO是一种基于通道和缓冲区的异步非阻塞IO模型。

什么是SQL,MySQL?
SQL,结构化查询语言(Structured Query Language)的简称,用于存取数据以及查询、更新和管理数据库系统的程序设计语言。
MySQL是一个非常流行的Oracle旗下的关系型数据库管理系统。

什么是进程or线程?
进程:是程序运行的实例,是系统进行资源分配和调度的一个独立单位,它包括独立的地址空间,资源以及1个或多个线程。
线程:可以看成是轻量级的进程,是CPU调度和分派的基本单位。

什么是锁?
锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂。因为锁(以及其它更高级的线程同步机制)是由synchronized同步块的方式实现的,所以我们还不能完全摆脱synchronized关键字( 自Java 5开始,java.util.concurrent.locks包中包含了一些锁的实现,因此你不用去实现自己的锁了。但是你仍然需要去了解怎样使用这些锁,且了解这些实现背后的理论也是很有用处的)

什么是 SpringBoot?
SpringBoot是一个用来简化新Spring应用初始搭建和开发过程的,内嵌web服务器(tomcat/jetty)的,可执行程序的框架。

什么是RESTful?
RESTful一种架构设计风格,提供了设计原则和约束条件,而不是架构,而满足这些约束条件和原则的应用程序或设计就是RESTful架构或服务。具体约束条件可以简单概括为:资源是由URI来指定;对资源的增/删/改/查,分别用HTTP的Method POST/DELETE/PUT/GET对应;通过URI操作资源,改变资源状态。

什么是xml?
Extensible Markup Language可扩展标记语言是一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。(标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息比如文章等。)

什么是json?
JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式,是一种数据格(和它类似的还有XML)。
它基于ECMAScript(w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

什么是 webservice ?
Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。

什么是HTTP?
HTTP,HyperText Transfer Protocol超文本传输协议,是应用最为广泛的一种网络协议。它被设计为可以提供一种发布和接收HTML页面的方法。