【面试】JAVA面试问题总结一(美团一面)

面向对象的特征

封装、继承、多态、抽象

封装:把对象的全部属性和全部服务结合在一起,形成不可分割的独立的单位(对象);信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界〔或者说形成一道屏障〕,只保留有限的对外接口使之与外部发生联系。

封装的优点:使对象以外的部分不能随意存取对象内部的数据,有效避免交叉感染,使软件错误局部化,减少查错和排错的难度。

继承: 使用一个特殊类拥有其全部的属性和服务,作为父类,他可以有多个子类,一般的类去实现,比如:父类为 人,子类可以是 男人和女人,男和女都继承于父类,但是一个子类只能继承一个特殊类,不能继承多个。但一个一般类可以实现多个接口。子类继承父类的时候,可以重写父类的方法,也可以有自己的方法。

多态:具有三个条件:1)继承 2)重写 3)父类对象引用指向子类对象
优点:
1.可替换性(substitutability)。多态对已存在代码具有可替换性。
2.可扩充性(extensibility)。多态对代码具有可扩充性。
3.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程。

抽象:Java中抽象可以是抽象类、抽象方法,使用abstract修饰。其中抽象类中可以有抽象方法和非抽象方法,抽象方法。据有抽象方法的类一定是抽象类。抽象方法一般只有方法名,没有方法的实现。如:public abstract void test(); 且抽象方法的权限修饰必须是protected public 的,因为子类在继承抽象父类的时候,必须要实现父类所有的抽象方法。

java new一个对象的步骤

1.当虚拟机遇到一条new指令的时候,先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并检查符号引用代表的类是否已经被加载、解析和初始化过,这个步骤是验证是否是第一次使用该类,如果不是,必须先执行相应的类加载过程

2.类加载检查通过后,虚拟机将为新生的对象分配内存。对象所需的内存大小在类加载完成后便可以完全确定。

3.内存分配完成,虚拟机需要将分配到的内存控件中的数据类型都初始化为0值。

4.虚拟机要对对象头进行必要的设置,例如这个对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的GC分代年龄信息等,这些信息都存放在对象的对象头中。

5.调用对象的init()方法,根据传入的属性值给对象属性赋值。

6.在线程栈中新建对象引用,并指向堆中刚刚新建的对象实例。

TCP与UDP的区别

在这里插入图片描述
TCP与UDP的主要区别是UDP不一定提供可靠的数据传输,而TCP提供可靠传输,TCP在数据包接收无序、丢失或在交付期间被破坏时,负责数据恢复,每个数据包都有一个序号。

当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是最好的选择,当强调传输性能而不是传输的完整性是,如:音频和多媒体应用,UDP是最好的选择。在传输时间短UDP是很好的选择。

区别总结:

  1. TCP协议在传送数据段的时候要给段标号;UDP协议不
    2. TCP协议可靠;UDP协议不可靠
    3. TCP协议是面向连接;UDP协议采用无连接
    4. TCP协议负载较高,采用虚电路;UDP采用无连接
    5. TCP协议的发送方要确认接收方是否收到数据段(3次握手协议)
    6. TCP协议采用窗口技术和流控制

索引的种类:

1.什么是索引:
索引是对数据库表中的一列或者多列的值进行排序的一种数据结构,如果把数据库中的表比作一本书,索引就是书的目录,通过目录可以快速查找书中指定内容的位置。
索引也是一张表,该表中存储着索引的值和这个值所在的数据所在行的物理地址,使用索引后不用扫描全表来定位某行的数据,而是通过索引表来找到该行数据对应的物理地址。

2.索引的优缺点
优点:
♡建立索引的列可以保证行的唯一性,生成唯一的行id
♡索引可以有效缩短数据的检索时间,减少io次数
♡索引可以加快表与表之间的连接
♡为用来排序和分组的字段建立索引可以加快分组和排序
缺点:
♡创建索引和维护索引需要时间成本,这个成本随着数据量的增大而加大
♡创建索引和维护索引需要控件成本,每一条索引都需要占据数据库的物理存储空间,数据量越大,占用空间也越大。
♡降低表的增删改的效率,每次增删改,索引需要进行动态维护

Mysql的索引有哪些

从逻辑角度

普通索引:加速查找
主键索引:加速查找、不能为空、不能重复
唯一索引:加速查找、不能重复
组合索引:联合主键索引、联合唯一索引、联合普通索引
全文索引:主要用来查找文本中的关键字
空间索引:对空间数据类型的字段建立的索引

物理角度

聚集索引:聚集索引确定表中数据的物理顺序,一个表中只能包含一个聚类索引,但该索引可以包含多个列,聚集索引对与经常要搜索范围值的列特别有效,使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。

聚集索引中索引的叶节点就是数据节点,而非聚集索引的叶节点仍然是索引节点,只不过有一个指针指向相应的数据块。

数据结构角度

1.hash索引:hash索引基于hash表实现,只有查询条件精确匹配hash索引中的所有列才会用到hash索引,存储引擎会为hash索引中的每一列都计算哈市码,所以每次读取都会进行两次查询

hash索引无法用于数据的排序操作
hash索引不能利用部分索引键查询
hash索引在任何时候都不能避免表扫描
hash索引遇到大量hash值相等的情况后性能并不一定比BTree索引高

2.B+Tree索引

索引的设计原则

索引并非越多越好
避免对经常更新的表创建过多的索引,索引中的列要尽可能的小;经常查询的字段应该创建索引,但是要避免添加不必要的字段。

数据量小的表最好不要使用索引

在条件表达式中经常用到不同值较多的列上建立索引,在不同值少的列上不要建立索引

当唯一性是某种数据本身的特性时,建立唯一索引

在频繁继续宁排序或者分组的列上建立索引

url在浏览器端发送到返回响应的过程

  1. 浏览器输入URL跳转之后,浏览器会先判断这个链接是否需要重定向,需要就会跳转到重定向页面,不需要就进入下一步。
  2. 判断是否需要重定向之后,浏览器就会判断这个链接是否有缓存(之前是否访问过),有缓存直接从缓存取数据,没有则进入下一步。
  3. 进行完成前两步之后,浏览器开始发送请求,发送请求第一步就是域名解析,由于我们输入的URL只是域名,所以浏览器还需要利用DNS域名解析,解析完成之后得到服务器IP地址再进行访问。
  4. 创建链接,这时候需要与服务器进行3次握手,如果是https请求的话,会有特殊安全机制。
  5. 握手完成之后,开始发送真正的request请求。
  6. 服务器接收到请求做出相应的处理,再返回一个相应给客户端。

总结:
1、是否需要重定向;
2、是否有缓存;
3、DNS域名解析(服务器寻址);
4、创建连接(3次握手)/HTTPS安全机制需特殊处理;
5、发送request请求;
6、服务器处理 及 响应给客户端;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值