阿里P6初面Java面试题,附带完整答案,赶紧搜藏

摘要:
最佳推荐面试问题:2020 Java面试问答,命中率90%1.锁可以锁在哪里?Java锁定程序有两种主要方式:同步和锁定。如果单例bean是无状态bean,即线程中的操作不会执行除查询bean成员之外的操作,那么单例bean就是线程安全的。例如,Springmvc的Controller、Service、Dao等,这些bean中的大多数都是无状态的,只关注方法本身。
最强面试题推荐:

2020Java面试题及答案,命中率高达90%

1、锁可以锁在哪里?

Java 为程序加锁的方式主要有两种:synchronized 与 Lock。

1. synchronized 可以修饰的作用域如下:

- 非静态方法(加的锁为对象锁);

- 静态方法(加的锁为类锁);

- 代码块(对象锁与类锁均可);

2. Lock 采用 lock()对代码加锁,unlock()进行解锁

2、怎么利用反射获取类中的对象?

1. 获取 Class 对象

2. 通过 Class 对象获取构造方法

3. 通过构造方法调用 newInstance()方法创建对象实例

3、HTTP 和 https 区别?

1. HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。

2. 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。

3. HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS 除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。

4. http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

5. HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS比 HTTP 要更耗费服务器资源。

4、谈谈你对 TCP / IP 协议的了解

1. TCP/IP 是一个协议簇,是一个开放的协议标准,所有人都可以免费使用,并且是独立于硬件和操作系统的。

2. TCP/IP 协议是不区分网络硬件的,它在局域网,广域网和互联网中都被广泛使用。

3. TCP/IP 协议使用统一的网络地址分配的方案,网络中的每台电脑都具有唯一的 IP地址。

4. TCP/IP 协议是一个标准的高层协议,拥有极高的可靠性,可以为用户提供可靠的服务。

5、说说 Aop 和 IOC 的应用

IOC 的主要应用场景体现在 BeanFactory 接口,BeanFactory 下面有具体的实现类来实现 IOC 的功能。

AOP 的主要应用场景:日志、权限、事物等。

6、Spring 中 bean 是线程安全的吗?

Spring 容器中的 Bean 本身不具备线程安全的特性,但是具体还是要结合具体scope 的 Bean 去研究。

1. Spring 容器中的 Bean 默认是单例的,所有线程都共享一个单实例的 Bean,因此是存在资源的竞争。如果单例 Bean,是一个无状态 Bean,也就是线程中的操作不会对 Bean 的成员执行查询以外的操作,那么这个单例 Bean 是线程安全的。

比如Spring mvc 的 Controller、Service、Dao 等,这些 Bean 大多是无状态的,只关注于方法本身。对于有状态的 bean,是线程不安全的,但是我们可以通过ThreadLocal 去解决线程安全的方法。

2. 对于原型 Bean(即 scope="prototype"),每次创建一个新对象,也就是线程之间并不存在 Bean 共享,自然是不会有线程安全的问题。

7、Maven 中 package 和 install 区别

package 是把 jar 打到本项目的 target 下,而 install 时把 target 下的 jar 安装到本地仓库,供其他项目使用。

8、遇到过哪些设计模式? 9、谈谈简单工厂和抽象工厂的区别

简单工厂模式:是由一个工厂对象创建产品实例,简单工厂模式的工厂类一般是使用静态方法,通过不同的参数的创建不同的对象实例 可以生产结构中的任意产品,不能增加新的产品抽象工厂模式: 提供一个创建一系列相关或相互依赖对象的接口,而无需制定他们具体的类,生产多个系列产品 生产不同产品族的全部产品,不能新增产品,可以新增产品族

10、说说你常用的 Linux 基本操作命令

ls - 用来显示目标列表

cd - 用来切换工作目录

pwd - 以绝对路径的方式显示用户当前工作目录

cat - 文件内容查看

grep - 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行

打印出来tail - 输出文件中的尾部内容

ps - 用于报告当前系统的进程状态

kill - 命令用来删除执行中的程序或工作

top - 可以实时动态地查看系统的整体运行情况

11、谈谈 Currenthashmap 的扩容机制

JDK1.7:

先对数组的长度增加一倍,然后遍历原来的旧的 table 数组,把每一个数组元素也就是 Node 链表迁移到新的数组里面,最后迁移完毕之后,把新数组的引用直接替换旧的。

JDK1.8:

扩容时候会判断这个值,如果超过阈值就要扩容,首先根据运算得到需要遍历的次数i,然后利用 tabAt 方法获得 i 位置的元素 f,初始化一个 forwardNode 实例 fwd,如果 f == null,则在 table 中的 i 位置放入 fwd,否则采用头插法的方式把当前旧table 数组的指定任务范围的数据给迁移到新的数组中,然后 给旧 table 原位置赋值fwd。

直到遍历过所有的节点以后就完成了复制工作,把 table 指向 nextTable,并更新 sizeCtl 为新数组大小的 0.75 倍 ,扩容完成。在此期间如果其他线程的有读写操作都会判断 head 节点是否为 forwardNode 节点,如果是就帮助扩容。

免责声明:文章转载自《阿里P6初面Java面试题,附带完整答案,赶紧搜藏》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HTML(1)Open Xml 创建Excel并插入数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SpringMVC详解

SpringMVC学习笔记----一、SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包。 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--configure the setting of springmvcDispatcherServlet and c...

【python】-- 信号量(Semaphore)、event(红绿灯例子)

信号量(Semaphore) 之前讲的线程锁(互斥锁) 同时只允许一个线程更改数据,而Semaphore是同时允许一定数量的线程更改数据 ,比如厕所有3个坑,那最多只允许3个人上厕所,后面的人只能等里面有人出来了才能再进去。 1、信号量 是一个变量,控制着对公共资源或者临界区的访问。信号量维护着一个计数器,指定可同时访问资源或者进入临界区的线程数。  每...

linux环境下排查cpu占比高的MySQL数据库sql语句

自MySQL 5.7版本后,PERFORMANCE_SCHEMA.THREADS表中新增一个字段THREAD_OS_ID,对应操作系统中的线程ID 1.安装sysstat工具包(为了使用pidstat命令),更多信息参考: https://www.linuxidc.com/Linux/2019-08/160082.htm Ubuntu: apt-get i...

Jackson jsonToBean 忽略 Bean中不存在属性的匹配。objectMapper FAIL_ON_UNKNOWN_PROPERTIES

1. jsonToBean时,json中有的字段,bean中没有 无法匹配时,忽略此字段,不抛出异常(默认是抛出异常的) 方案一(局部):在class上加 @JsonIgnoreProperties(ignoreUnknown = true) public classtes...

PHP 如何获取二维数组中某个key的集合(高性能查找)

分享下PHP 获取二维数组中某个key的集合的方法。 具体是这样的,如下一个二维数组,是从库中读取出来的。 代码: $user = array( 0 => array( 'id' => 1, 'name' => '张三', 'email' => 'zhangsan@sina.com', ), 1 => a...

HTTPS学习之教你弄透到底什么是HTTPS

本文谈谈我的看法,主要分为以下几个方面: HTTPS 协议是什么? HTTPS 是如何工作的? HTTPS 真的安全吗? 一、什么是 HTTPS HTTPS,也称作 HTTP over TLS,TLS 前身是 SSL,会有各个版本。TLS 协议在 TCP/IP 协议栈中的关系如下: 上图描述了在 TCP/IP 协议栈中 TLS(各子协议)和 HTTP...