技术成长之路-Java高级篇

前言

前一篇《技术成长之路-Java基础篇》我们主要对于各种公司的面试题考点关于Java基础做了一个简单总结,这一节我们讲一下更深层次的问题,依然是,我来写,诸君思考!

面试题篇

依然以面试题入手,针对问题,解决问题,然后做出总结!

阿里面试题

线程和进程的本质:

为什么出现进程?
·批处理操作系统
·A/B的顺序和阻塞执行
·进程
·线程

在这里插入图片描述

  1. 如何让多线程顺序执行
使用join()方法

T1 =New thread{
Sout(1);
});
T2 =New thread{
Sout(2);

});
T3 =New thread{
Sout(3);

});
T1.join();
T1.start();
T2.join();
T2.start();
T3.join();
T3start();
控制台输出:(永远顺序执行)
1
2
3

在这里插入图片描述
Join()方法,为什么可以让多线程顺序执行?

在这里插入图片描述
在Join()源码,使用线程锁将使用wait将当前线程阻塞,我们知道,wait为阻塞,那么什么时候notify唤醒呢?答案是,在jvm里notify

  1. wait 和 notify为什么要加线程锁
  2. sleep 和 wait的区别
  3. 线程锁的实现原理
    Synchronized:jvm实现

类锁
全局锁
对象锁
5. Synchronized原理分析
6. wait 和 notify原理分析
7. 线程生命周期
线程有多少种状态
New 初始
Runnable os调度
Blocked 阻塞
Waiting 等待
Time_waiting 超时等待
Terminated 终止
在这里插入图片描述
8. 如何终止一个线程
Flag()(设置一个成员变量,通过更改成员变量的变化来终止线程)
Interrupt()返回ture/false

不建议使用stop()
9. synchorize和lock的区别
10. 分布式锁的实现方式
11. Spring bean 是怎么管理的?
单例:spring的运行周期,都不会回收
得益于ioc,因为采用注册式的单例,始终在map中保存的实例的引用地址
GC
只有当ioc容器不被销毁,ioc中的单例bean就永远存在
12. Spring中的bean是不是线程安全的?
是不是线程安全,要看具体bean

知识点篇

JVM

Spring FrameWork

(spring.io.com)官方api提供9大组件

  • Ioc
    Java bean
    Setter、gettter method
    Java beans(规范)
    内省
    基础核心特性(反射)
    附加特性:引用(reference)
    Reference
    Softreference
    Weakreference
    phantomreference

    Beaninfo
    Beandescreptor
    Propertydescriptor
    事件:propertychangeevent
    监听器:propertychangelistener
    Methoddescriptor
    一:Ioc
    应用不关心依赖组件的来源,通过一定di方式查找
    抄袭了javaee 概念,javaee容器(ejb容器,jsf容器)
    ejb容器
    bean模式
    Local
    容器bean
    Remote
    Rmi
    Bean类型
    会话(session bean)
    无状态bean
    有状态bean
    持久化bean(persistence bean)
    Hibernate
    消息驱动bean(java messaging bean)
    Jms
    Activemq,kafka
    二:Di(依赖注入)
    ~java ee
    jndi(java naming and directory interface)
    1 javax.naming.context
    名称
    Javax.naming.context#lookup(java.lang.string)
    Javax.naming.context#lookup(java.naming.name)
    Ejb
    1javax.ejb.@ejb
    ~依赖查找(dependency lookup)
    1 id 别名,名称查找
    BeanFactory #getbean(string):object
    2 类型查找
    Beanfactory #getbean(Class):T
    3 注解查找
    ListableBeanFactory#getBeanWithAnnotation(Class)
    4 factorybean查找
    Factorybean#getobject()
    5 objectfactory查找
    Objectfactory#getobject()
    ~依赖注入(dependency injection)
    方法
    Spring @autowired
    Java @resource
    Java ee @inject
    途径
    1 属性注入
    2 方法注入
    3 构造器注入
  • Event
    核心模式:观察者模式
    Spring事件:applicationevent
    Java.util.eventobject
    spring事件监听器:applicationlistener
    Java.util.eventlistener
    spring事件广播器:applicationeventMuliticaster
    simpleApplicationEventMuliticater

bean生命周期管理之一
事件(包装)数据变化

  • Resource
    Url资源管理
    协议
    1 获取协议:java.net.url#getProtocol
    2 协议处理
    HTTP:sun.net.www.protocol.http.handler
    FTP:sun.net.www.protocol.ftp.handler
    HTTPS:sun.net.www.protocol.https.handler
    FILE:sun.net.www.protocol.File.handler
    EMAIL:sun.net.www.protocol.Emai.handler

ClassLoader(class path)资源管理
资源
获取当前classloader资源:java.lang.classloader # getResource(String)
获取当前classloader所有资源:java.lang.classloader # getResources(String)
获取当前classloader资源inputstream:java.lang.classloader # getResourceAsStream(String)

Spring 资源管理
资源定位:classpath:/META-INF/abc.properties
多资源定位:classpath*:/META-INF/abc.properties

Resource接口
Url ,File和 classloader 封装实现
语义:
资源定位(url,File)
资源流(inputstream)
实现类:
ClasspathResource
GetURL() -> classloader #getResource(string)
Getinputstram() -> classloader #getResourceAsStream(string)
加载器
Resourceloader
获取resource:resourceloader # getResource(String)
默认实现:defaultResourceLoader
前缀= “classpath:”-》ClasspathResource
否则 -》 fileUrlResource 或 UrlResource
协议扩展
Protocolresolver
通过路径解析出resource

  • i18n
    1 Java i18n

Java标准接口 resourcebundle
<java1.6 :乱码,解决方案 native2 as cci
Java1.6: ResourceBundle.Control
Java1.8: ResourceBundleControlProvider
Java 1.6
2 spring messagesource
messageFormat
Hello,{0}-> 0 = “world” -> hello,world
实现类
ResourceBundleMessageSource

  • Validation
    Java bean validation(jsr -308)

Spring validation
Sring validator + bean validation:LocalValidatiorFactoryBean
使用场景
标准 java bean校验
Springmvc校验
form校验,@requestBody 校验,可以自定义
Spring boot外部化配置
@configurationPorperties

  • Data banding
    使用场景
    Spring 自定义绑定
    Spring mvc参数绑定
    Spring boot 外部化配置
    @configurationproperties
  • Type conversion
    常见类型转换
    自定义转换

使用场景
Spring boot 外部化配置
@configurationproperties

  • Spel
  • Aop

NIO、BIO、AIO

HashMap底层

并发编程

300行SpringMVC框架

分布式任务调度

漫谈技术架构、技术选型

发布了47 篇原创文章 · 获赞 5 · 访问量 1867

猜你喜欢

转载自blog.csdn.net/qq_34361283/article/details/103645040