泰尔英福Java开发岗面经

前言

最近在海投+无尽的面试,基础知识考的太多了,趁着快到五一先做个总结,五一之后看情况再继续战斗=.=

问题

后端

Spring控制反转和注入方式
IOC所注重的是设计思想上,从一个常规的创建对象的做法,即new一个对象,转变成向IOC容器递交需求,被动的等待IOC容器返回资源给你。而说到依赖,则是我们所需求的对象,需要依赖容器来获得,这个过程即是依赖注入。本质上IOC和DI是同一思想下不同维度的表现。

依赖注入有3种方式,分别为构造注入,设置注入,接口注入。

1.接口注入:在接口中定义要注入的信息,并通过接口来完成注入。(**Spring不支持这种注入方式。**不支持的原因是,Spring声称其是非入侵式的“离开这个框架也能活”,如果使用接口注入的话,就违背了这一原则)。(通过在xml中描述实现注入)

有时候资源并非来自于自身的系统,而是来自于外界,比如说数据库连接资源完全可以在Tomcat下配置,然后通过JNDI的方式去获取它,这样的数据库连接资源就属于开发工程外的资源。

2.setter注入:setter注入利用Java Bean规范所定。首先将构造方法设置为无参的构造方法,然后利用setter注入为其设置新的值,这也是通过java的反射技术得以实现的。

注意:构造器注入是通过构造方法注入,setter注入是通过setter方法注入,都是通过Java的反射技术实现的。

<bean id="zzf" class="com.zzf.csdn">
    <property name="a" value="1"></property>
    <property name="b" value="2"></property>
    <property name="c" value="3"></property>
</bean>

3.构造器注入:构造器注入依赖于构造方法的实现,构造方法可以是有参数的,也可以是无参数的 。

在没有spring之前,我们在大多数情况下,我们都是通过构造方法来创建类对象。Spring可以采用反射的方式,通过构造方法来完成注入,这就是构造方法的原理。

1、引入spring的支持

2、通过描述具体的类,构造方法和其中的参数,这样spring就可以通过相应的信息用反射的方式创建对象。

3、在test文件中加载spring配置文件的方法

String configLocation ="applicationContext.xml";

ApplicationContext context = new ClassPathXmlApplicationContext(configLocation);

Role role = context.getBean("role", Role.class);

Spring Security

Authentication: 检查凭据并确保当前登录的用户是他们声称的身份的过程。
Authorization: 决定是否允许当前登录用户在您的应用程序中执行操作的过程。

<filter>
  <filter-name>springSecurityFilterChain</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

MySQL和MongoDB的区别

MySQL:关系型数据库。

1、在不同的引擎上有不同的存储方式。
2、使用传统的SQL语句进行查询,成熟度高。
3、开源数据库的份额在不断增加,MySQL的份额页在持续增长。
4、缺点就是在海量数据处理的时候效率会显著变慢。

MongoDB:非关系型数据库(NoSQL)。文档型数据库,可以存放JSON, XML, BSON等类型的数据。
这些数据具备自述性,呈现分层的树状数据结构。数据结构由键值(key=>value)对组成。

1、存储方式:虚拟内存+持久化。
2、查询语句:是独特的MongoDB的查询方式。
3、适合场景:事件的记录,内容管理或者博客平台等等。
4、架构特点:可以通过副本集,以及分片来实现高可用。
5、数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。
6、成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。

数据库MongoDBMySQL
数据库模型非关系型关系型
存储方式以类JSON的文档的格式存储不同引擎有不同的存储方式
查询语句MongoDB查询方式(类似JavaScript的函数)SQL语句
数据处理方式基于内存,将热数据存放在物理内存中,从而达到高速读写不同引擎有自己的特点
事务性仅支持单文档事务操作,弱一致性支持事务操作
占用空间
join操作

MySQL索引的数据类型,以及使用情况

CREATE INDEX indexName ON table_name (column_name)

见Free Joe: 《一文搞懂MySQL索引(清晰明了)》
链接:https://blog.csdn.net/wangfeijiu/article/details/113409719

多态的三个必要条件
继承,重写,父类引用指向子类对象

类继承的过程
1.一个类的静态代码块,构造代码块,构造方法的执行流程:

静态代码块>构造代码块>构造方法

2.静态的内容是随着类的加载而加载
静态代码块的内容会优先执行

3.子类初始化之前先进行父类的初始化

前端

垂直、水平对齐

水平居中对齐

1.元素水平居中对齐(如 <div>):margin:auto;

2.文本在元素内居中对齐:text-align: center;

3.图片居中对齐:将图片放于块中,参考1

左右对齐

1.使用定位方式:position: absolute;

.right {
    position: absolute;
    right: 0px;
    width: 300px;
    border: 3px solid #73AD21;
    padding: 10px;
}

2.使用float方式:

.right {
    float: right;
    width: 300px;
    border: 3px solid #73AD21;
    padding: 10px;
}

垂直居中对齐
1.使用padding

.center {
    padding: 70px 0;
    border: 3px solid green;
}

2.使用line-height

.center {
    line-height: 200px;
    height: 200px;
    border: 3px solid green;
    text-align: center;
}
 
/* 如果文本有多行,添加以下代码: */
.center p {
    line-height: 1.5;
    display: inline-block;
    vertical-align: middle;
}

3.使用postiontransform

.center { 
    height: 200px;
    position: relative;
    border: 3px solid green; 
}
 
.center p {
    margin: 0;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

html定位基准

如果是相对定位,那么元素就是参照自身位置,如left:20px,就是离原来自身位置的左边20px。

如果是绝对定位,参考元素就是已定位(除了static,因为static就是position的默认属性)的父元素;如果没有,就一直向上找,直到找到定位元素;如果一直到html标签都没有找到,就以html标签为基准定位。

总结

凉凉 :)
最近被问Spring boot和微服务比较多,可以多看下

参考链接:

小喜_ww:《MongoDB和MySQL的区别》
链接:https://www.jianshu.com/p/56524b50b376

Free Joe: 《一文搞懂MySQL索引(清晰明了)》
链接:https://blog.csdn.net/wangfeijiu/article/details/113409719

HTML定位基准
链接:https://www.cnblogs.com/huangshizhou/p/9760879.html

索引相关:https://blog.csdn.net/gaotiedun1/article/details/88584362

php中文网:https://www.php.cn/java/guide/463640.html

菜鸟教程:
https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html
https://www.runoob.com/java/java-polymorphism.html
https://www.runoob.com/css/css-align.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值