每日十道面试题(四)

每日十道面试题(四)

1. 讲一下http和https的区别?

主要区别就是https比较安全,毕竟收费,它需要申请一个证书,然后根据你支持的加密算法进行加密传输,而http都是明文传输,不太安全,

http默认端口80,https默认为443,两者连接方式不同

http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

2. 当我们输完网址之后到出现页面都发生了什么?

输入完网址,当然是先要DNS解析一下网址,看一下域里面有没有缓存,有就直接返回,等解析完,**然后去本地hosts文件找是否满足这样的网址映射端口请求,不满足就去DNS服务器找对应的域名,然后开始tcp连接(三次握手)然后发送http报文请求,**等服务器处理请求,然后就是它内部代码的实现返回结果,如果是http短连接,那么处理完就关闭了tcp连接(四次挥手),长连接还会等后续操作才关闭,然后浏览器渲染解析html

3. ArrayList、Vector、LinkedList的区别

  1. Vector、ArrayList都是以类似数组的形式存储在内存中,LinkedList则以链表的形式进行存储。

  2. List中的元素有序、允许有重复的元素,Set中的元素无序、不允许有重复元素。

  3. Vector线程同步,ArrayList、LinkedList线程不同步。前者线程安全,但因为效率实在低下已淘汰,后两者效率快,但是线程不安全,可以了解copyonArrayList

  4. LinkedList适合指定位置插入、删除操作,不适合查找;ArrayList、Vector适合查找,不适合指定位置的插入、删除操作。

  5. ArrayList在元素填满容器时会自动扩充容器大小的50%,而Vector则是100%,因此ArrayList更节省空间。

4.Spring 是如何管理事务的,事务管理机制?

  1. 编程式事务管理(不常用)
    所谓编程式事务指的是通过编码方式实现事务,即类似于JDBC编程实现事务管理。

2. 声明式事务管理(常用)
在Spring配置文件中声明式的处理事务来代替代码式的处理事务.@Transactional
在spring中,声明式事务主要是通过【事务属性】来定义的,事务属性描述了事务策略如何应用到方法上面

Spring的事务管理机制实现的原理,就是通过这样一个动态代理对所有需要事务管理的Bean进行加载,并根据配置在invoke方法中对当前调用的 方法名进行判定,并在method.invoke方法前后为其加上合适的事务管理代码,这样就实现了Spring式的事务管理。Spring中的AOP实 现更为复杂和灵活,不过基本原理是一致的。

5. SpringBoot几个常用的注解

@AutoWire+@Qulifailer :注入容器按照类型再按名字,@Resource是先按名字再按类型

@ComponentScan :扫描当前包及其子包下被@Component,@Controller,@Service,@Repository注解标记的类并纳入到spring容器中进行管理。等价于的xml配置文件中的配置项。

@Component,@Controller,@Service,@Repository:这些都相当于bean注入容器,只是分层更细粒度

javaConfig配置标准是@Configuration+@Bean: 这个是相当于XML配置bean标签,注入容器

@EnableXXXX:开启注解支持的功能,比如后面的redis,hystrix,swager等等都可以通过开启使用

@RestController 是@Controller 和@ResponseBody的结合,一个类被加上@RestController 注解,数据接口中就不再需要添加@ResponseBody。更加简洁。

他是返回给页面以json字符串的形式,不走视图解析器

@RequestMapping:映射控制器,接口的映射处理请求,这里可以了解一下Restful风格,有4个mapping();配合**@PathVariable**结合传参变量

@CrossOrigin:@CrossOrigin(origins = “”, maxAge = 1000) 这个注解主要是为了解决跨域访问的问题。这个注解可以为整个controller配置启用跨域,也可以在方法级别启用。

@Transactional: 通过这个注解可以声明事务,可以添加在类上或者方法上。

等等不一一列举,面试也是挑重点讲

6.谈谈final, finally, finalize的区别

final 可以用来修饰类、方法、变量,分别有不同的意义,final 修饰的 class 代表不可以继承扩展,final 的变量是不可以修改的,主要是修改了之后它会换一个新地址,等于之前变量你是修改不了的,而 final 的方法也是不可以重写的(override)。

finally 则是 Java 保证重点代码一定要被执行的一种机制。我们可以使用 try-finally 或者 try-catch-finally 来进行类似关闭 JDBC 连接、保证 unlock 锁等动作。

finalize 是基础类 java.lang.Object 的一个方法,它的设计目的是保证对象在被垃圾收集前完成特定资源的回收。finalize 机制现在已经不推荐使用,并且在 JDK 9 开始被标记为 deprecated。

7.HashMap和Hashtable的区别

相同点:

​ 实现原理相同,功能相同,底层都是哈希表结构,查询速度快,在很多情况下可以互用

不同点:

​ 1、Hashtable是早期提供的接口,HashMap是新版JDK提供的接口。

​ 2、Hashtable继承Dictionary类,HashMap实现Map接口。

​ 3、Hashtable线程安全,HashMap线程非安全。同步效率低,不同步的不安全

​ 4、Hashtable不允许null值,HashMap允许null值。

8.sleep() 和 wait() 有什么区别? 搞线程的最爱

sleep()和wait()都是线程暂停执行的方法。

  1. 这两个方法来自不同的类分别是Thread和Object,sleep方法属于Thread类中的静态方法,wait属于Object的成员方法。
  2. sleep方法只让出了CPU,而并不会释放同步资源锁。wait会释放锁资源,而且wait需要唤醒,唤醒后重新参与线程的调度,sleep()方法指定的时间为线程不会运行的最短时间。因此,sleep()方法不能保证该线程睡眠到期后就开始执行。
  3. wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围)。
  4. sleep()方法必须捕获异常InterruptedException,而wait()\notify()以及notifyAll()不需要捕获异常。

9. 什么是重载什么是重写

重载: 可以说是多态的表现,因为多个方法可以根据你传入参数类型或者个数不同,从而执行不同的效果的同名方法,让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。返回值类型可以相同,也可以不相同。无法以返回型别作为重载函数的区分标准

重写: 新方法将覆盖原有的方法,到时候调用同名方法,如果没有特殊操作,调用父类方法时会根据对应子类的实例然后执行子类的重写方法,可使用super关键字调用父类的方法,该关键字引用了当前类的父类,方法名一样参数那些返回类型都一样,只是代码内容可以重写

10. java中length()和 length 有什么不同点?

length()方法一般都是指String类型的长度,比如s.length(),而length则是一般用在数组上

a.length;返回值都为int类型,一个是属性一个是方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值