Java常见的一些经典面试题(附答案解析)( 二 )
九、get与post的区别GET在浏览器回退时是无害的 , 而POST会再次提交请求 。GET产生的URL地址可以被Bookmark , 而POST不可以 。GET请求会被浏览器主动cache , 而POST不会 , 除非手动设GET请求只能进行url编码 , 而POST支持多种编码方式 。GET请求参数会被完整保留在浏览器历史记录里 , 而POST中的参数不会被保留 。GET请求在URL中传送的参数是有长度限制的 , 而POST没有 。对参数的数据类型 , GET只接受ASCII字符 , 而POST没有限制 。GET比POST更不安全 , 因为参数直接暴露在URL上 , 所以不能用来传递敏感信息 。GET参数通过URL传递 , POST放在Request body中 。
十、JDK1.8新特性
- 提供lambda表达式极大地减少了代码的冗余;
- 在接口中可以使用default和static关键字来修饰接口中的普通方法;
- 提供新的API LocalDate | LocalTime | LocalDateTime(1)Java.util.Date和SimpleDateFormatter线程上都不安全 , 而LocalDate和LocalTime和 String一样都是不可改变类 , 线程上比较安全 , 还不能修改;(2)Java.util.Date月份从0开始 , 12月是11 , 而java.time.LocalDate月份和星期都改成了 enum ,就不可能出错了;
二、ArrayList和LinkedList的底层实现原理?他们为什么线程不安全?在多线程并发操作下 , 我们应该用什么替代?1.ArrayList底层通过数组实现 , ArrayList允许按序号索引元素 , 而插入元素需要对数组进行移位等内存操作 , 所以索引快插入较慢;(扩容方式)一旦我们实例化了ArrayList 无参构造函数默认数组长度为10 。 add方法底层如 果增加的元素超过了10个 , 那么ArrayList底层会生成一个新的数组 , 长度为原来数组长度的1.5倍+1 , 然后将原数组内容复制到新数组中 , 并且后续加的内容都会放到新数组中 。 当新数组无法容纳增加元素时 , 重复该过程;
2.LinkedList底层通过双向链表实现 , 取元素时需要进行前项或后项的遍历 , 插入元素时只需要记录本项的前后 项即可 , 所以插入快查询慢;
3.ArrayList和LinkedList底层方法都没有加synchronized关键词 , 多线程访问时会出现多个线程先后更改数据造成得到的数据是脏数据;多线程并发操作下使用Vector来代替 , Vector底层也是数组 , 但底层方法都加synchronized关键字使线程安全 , 效率较ArrayList差;
三、HashMap和HashTable有什么区别?其底层实现是什么?CurrentHashMap的锁机制又是如何?如果想将一个Map变为有序的,该如何实现?
1.区别:(1)HashMap没有实现synchronized线程非安全 , HashTable实现了synchronized线程安全;(2)HashMap允许key和value为null , 而HashTable不允许
2.底层原理:数组+链表实现
3.ConcurrentHashMap锁分段技术:HashTable效率低下的原因 , 是因为所访问HashTable的线程都必须竞争同一把锁 , 那假如容器中有多把锁 , 每一把锁用于锁住容器中的一部分数据 , 那么当多线程访问容器中不同的数据时 , 线程间就不会存在锁竞争 , 从而提高并发访问率;ConcurrentHashMap使用的就是锁分段技术 , 首先将数据分成一段一段的存储 , 然后给每一段数据配一把锁 , 当一个线程占用锁访问其中一个数据时 , 其他段的数据也能被其他线程访问;
4.实现TreeMap
框架部分一、什么是SpringSpring是一个轻量级的开源框架 , 是为了解决企业应用开发的复杂性而创建的;提供IOC来帮助我们创建对象及管理对象之间的依赖关系 , 提供AOP来帮我们完成日志的打印、异常的处理、事物的管理等操作 , 提供JDBC、ORM来完成持久层的操作 , 内置SpringMvc控制层框架
- 智能手机市场|华为再拿第一!27%的份额领跑全行业,苹果8%排在第四名!
- 会员|美容院使用会员管理软件给顾客更好的消费体验!
- 行业|现在行业内客服托管费用是怎么算的
- 人民币|天猫国际新增“服务大类”,知舟集团提醒入驻这些类目的要注意
- 国外|坐拥77件专利,打破国外的垄断,造出中国最先进的家电芯片
- 技术|做“视频”绿厂是专业的,这项技术获人民日报评论点赞
- 面临|“熟悉的陌生人”不该被边缘化
- 中国|浅谈5G移动通信技术的前世和今生
- 页面|如何简单、快速制作流程图?上班族的画图技巧get
- 桌面|日常使用的软件及网站分享 篇一:几个动态壁纸软件和静态壁纸网站:助你美化你的桌面