一起吃面筋 004

快春招了,小豪说吃面筋能够强身健体,因此烤了一些面筋和大家一起分享。凡事就怕认真,每天吃一点,让时间给你答案。

1.Java面向对象特性介绍一下,类能否多继承?子类继承父类,会继承父类的所有属性吗?

参考回答:封装继承多态三大特性;类不能多继承;会继承所有属性,但是父类的私有属性和方法只能拥有不能访问。

2.设计模式熟悉哪些?适配器与代理模式的区别?

参考回答
适配器模型:一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。

代理模式:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

区别:适配器模式是因为新旧接口不一致导致出现了客户端无法得到满足的问题,但是,由于旧的接口是不能被完全重构掉的,因为我们还想使用实现了这个接口的一些服务。那么为了使用以前实现旧接口的服务,我们就应该把新的接口转换成旧接口;实现这个转换的类就是抽象意义的转换器。就比如在java中早期的枚举接口是Enumeration而后定义的枚举接口是Iterator;有很多旧的类实现了enumeration接口暴露出了一些服务,但是这些服务我们现在想通过传入Iterator接口而不是Enumeration接口来调用,这时就需要一个适配器,那么client就能用这个服务了(服务端只想用Iterator或者只知道这个接口)。相比于适配器的应用场景,代理就不一样了,虽然代理也同样是增加了一层,但是,代理提供的接口和原本的接口是一样的,代理模式的作用是不把实现直接暴露给client,而是通过代理这个层,代理能够做一些处理。

3.JVM内存分配策略,新生代对象晋升到老年代的年龄阀值默认是多少?

参考回答
内存收集时就必须识别哪些对象应该放在新生代,哪些对象应该放在老年代中。为了做到这一点,虚拟机给每个对象定义了一个年龄计数器,年龄值存放在在对象的header中。如果对象在Eden出生并经过第一次Minor GC后仍然存活下来,并且能被Survivor区容纳的话,将被移动到Survivor区中,并且将对象的年龄值设为1。对象在Survivor区中每熬过一次Minor GC,年龄就增加1岁,当它的年龄增加到一定程度(默认15岁),就会被移到老年代中。对象晋升老年代的年龄阀值可以通过参数 -XX:MaxTenuringThreshold设置。

4.Eden区垃圾回收用什么算法?为什么用这个算法?

参考回答
年轻代中的对象基本都是朝生夕死的(80%以上),所以在年轻代的垃圾回收算法使用的是复制算法,复制算法的基本思想就是将内存分为两块,每次只用其中一块,当这一块内存用完,就将还活着的对象复制到另外一块上面。复制算法不会产生内存碎片。

5.说一下你自己实现的动态袋里是怎么写的?

参考回答

  1. 将所有方法代码拼接成字符串。
  2. 将生成代理类的代码拼接成字符串(包含所有方法拼接成的字符串)。
  3. 将此字符串写入文件中、并使用JavaComplier对它进行编译。
  4. 将编译好的文件load进内存供我们使用,并返回代理实例。

6.IOC中DI注入方式?如果在一个系统中有很多不同包下的bean名字是一样的,怎么解决注入时的冲突问题?(这些bean不分优先级)?

参考回答
①xml配置申明注册。然后setter、构造器、工厂方法注入;
②注解方式申明注册,然后是注解方式注入。

7.查Java进程的命令,查文件中关键字向下500行的命令?

参考回答
ps -ef|grep java
grep,参数 -A n -B n,显示上下需要行数

8.innodb索引种类?

参考回答

普通索引
唯一索引
主键索引:也就是聚簇索引
全文索引(FULLTEXT)
聚集索引
非聚集索引

9.聚簇索引和非聚簇索引区别?

参考回答
聚族索引:主键索引是聚族索引。表数据按照索引的顺序来存储的,也就是说索引项的顺序与表中记录的物理顺序一致。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页。 在一张表上最多只能创建一个聚集索引,因为真实数据的物理顺序只能有一种。
非聚族索引:表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索引字段值及指向数据页数据行的逻辑指针,其行数量与数据表行数据量一致。

10.Redis哨兵模式和集群模式区别?

参考回答
哨兵的作用就是监控Redis系统的运行状况。它的功能包括监控主数据库和从数据库是否正常运行。主数据库出现故障时自动将从数据库转换为主数据库。sentinel发现master挂了后,就会从slave中重新选举一个master。哨兵模式强调高可用

即使使用哨兵,redis每个实例也是全量存储,每个redis存储的内容都是完整的数据,浪费内存且有木桶效应。
为了最大化利用内存,可以采用集群,就是分布式存储。即每台redis存储不同的内容,共有16384个slot。每个redis分得一些slot,hash_slot = crc16(key) mod 16384 找到对应slot,键是可用键,如果有{}则取{}内的作为可用键,否则整个键是可用键集群至少需要3主3从,且每个实例使用不同的配置文件,主从不用配置,集群会自己选。cluster是为了解决单机Redis容量有限的问题,将数据按一定的规则分配到多台机器。集群模式提高并发量。

11.负载均衡算法 一致性hash说一下?

参考回答
一致性Hash算法,主要是考虑到分布式系统每个节点都有可能失效,并且新的节点很可能动态的增加进来的情况,如何保证当系统的节点数目发生变化的时候,我们的系统仍然能够对外提供良好的服务。

12.分布式系统概念 ?

参考回答
分布式:一个电商系统,用户模块部署在server1, 订单模块部署在server2, 促销模块部署在server3, 商品模块部署在server4,他们之间通过远程rpc实现服务调用,这就叫分布式。强调的是不同功能模块,单独部署在不同的server上,所有server加起来是一个完整的系统。

更多

对我的文章感兴趣,点个关注是对我最大的支持,持续更新中…
关注微信公众号LearnJava:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值