Java面试题总结(乱序版,2021Java进阶新篇章

2021/9/12 11:05:24

本文主要是介绍Java面试题总结(乱序版,2021Java进阶新篇章,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

2、poll()和remove()区别:

poll()和remove()都是从队列中删除第一个元素,remove抛出异常,poll返回null。

3、peek()和element()区别:

peek()和element()用于查询队列头部元素,为空时element抛出异常,peek返回null。

二、如何让 Java 的线程彼此同步?


  1. synchronized

  2. volatile

  3. ReenreantLock

  4. 使用局部变量实现线程同步

三、你了解过哪些同步器?请分别介绍下。


1、Semaphore同步器

特征:

  • 经典的信号量,通过计数器控制对共享资源的访问

  • Semaphore(int count):创建拥有count个许可证的信号量

  • acquire()/acquire(int num) : 获取1/num个许可证

  • release/release(int num) : 释放1/num个许可证

2、CountDownLatch同步器

特征:

  • 必须发生指定数量的事件后才可以继续运行(比如赛跑比赛,裁判喊出3,2,1之后大家才同时跑)

  • CountDownLatch(int count):必须发生count个数量才可以打开锁存器

  • await:等待锁存器

  • countDown:触发事件

3、CyclicBarrier同步器

特征:

  • 适用于只有多个线程都到达预定点时才可以继续执行(比如斗地主,需要等齐三个人才开始)

  • CyclicBarrier(int num) :等待线程的数量

  • CyclicBarrier(int num, Runnable action) :等待线程的数量以及所有线程到达后的操作

  • await() : 到达临界点后暂停线程

4、交换器(Exchanger)同步器

5、Phaser同步器

[https://www.cnblogs.com/pamne/p/11731797.html](

)

2020-9-24 08:25-09:00

四、如果客户端禁止 cookie 能实现 session 还能用吗?


一般默认情况下,在会话中,服务器存储 session 的 sessionid 是通过 cookie 存到浏览器里。

如果浏览器禁用了 cookie,浏览器请求服务器无法携带 sessionid,服务器无法识别请求中的用户身份,session失效。

但是可以通过其他方法在禁用 cookie 的情况下,可以继续使用session。

  1. 通过url重写,把 sessionid 作为参数追加的原 url 中,后续的浏览器与服务器交互中携带 sessionid 参数。

  2. 服务器的返回数据中包含 sessionid,浏览器发送请求时,携带 sessionid 参数。

  3. 通过 Http 协议其他 header 字段,服务器每次返回时设置该 header 字段信息,浏览器中 js 读取该 header 字段,请求服务器时,js设置携带该 header 字段。

五、OSI 的七层模型都有哪些?


六、在 Java 中,为什么不允许从静态方法中访问非静态变量?


  1. 静态变量属于类本身,在类加载的时候就会分配内存,可以通过类名直接访问;

  2. 非静态变量属于类的对象,只有在类的对象产生时,才会分配内存,通过类的实例去访问;

  3. 静态方法也属于类本身,但是此时没有类的实例,内存中没有非静态变量,所以无法调用。

七、请解释 Spring Bean 的自动装配?


Spring支持IOC,自动装配不用类实例化,直接从bean容器中取。

1、配置在xml中

<bean id="employeeDAO" class="com.guor.EmployeeDAOImpl" autowire="byName" />

2、@Autowired自动装配

八、请解释自动装配模式的区别?


有五种自动装配的方式,可以用来指导 Spring 容器用自动装配方式来进行依赖注入。

1、no

默认的方式是不进行自动装配,通过显式设置 ref 属性来进行装配。第 402 页 共 485 页

2、byName

通过参数名 自动装配,Spring 容器在配置文件中发现 bean

的 autowire 属性被设置成 byname,之后容器试图匹配、装配和该 bean 的属

性具有相同名字的 bean。

3、byType:

通过参数类型自动装配,Spring 容器在配置文件中发现 bean

的 autowire 属性被设置成 byType,之后容器试图匹配、装配和该 bean 的属

性具有相同类型的 bean。如果有多个 bean 符合条件,则抛出错误。

4、constructor

这个方式类似于 byType, 但是要提供给构造器参数,如

果没有确定的带参数的构造器参数类型,将会抛出异常。

5、autodetect

首先尝试使用 constructor 来自动装配,如果无法工作,

则使用 byType 方式。

2020-9-25 08:30-09:00

九、如何开启基于注解的自动装配?


要使用 @Autowired,需要注册 AutowiredAnnotationBeanPostProcessor,可以有以下两种方式来实现:

引入配置文件中的<bean>下引入 <context:annotation-config>

Java网盘:pan.baidu.com/s/1MtPP4d9Xy3qb7zrF4N8Qpg
提取码:2p8n

总结

阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了

**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](

)**

image

1、JAVA面试核心知识整理(PDF):包含JVMJAVA集合JAVA多线程并发,JAVA基础,Spring原理微服务,Netty与RPC,网络,日志,ZookeeperKafkaRabbitMQ,Hbase,MongoDB,Cassandra,设计模式负载均衡数据库一致性哈希JAVA算法数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。

image

2、Redis学习笔记及学习思维脑图

image

3、数据面试必备20题+数据库性能优化的21个最佳实践

image

*,Cassandra,设计模式负载均衡数据库一致性哈希JAVA算法数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。

[外链图片转存中…(img-l1LNoWKO-1631411777032)]

2、Redis学习笔记及学习思维脑图

[外链图片转存中…(img-tn4BID3F-1631411777033)]

3、数据面试必备20题+数据库性能优化的21个最佳实践

[外链图片转存中…(img-b05Tx5Ey-1631411777034)]



这篇关于Java面试题总结(乱序版,2021Java进阶新篇章的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程