我是靠谱客的博主 儒雅电灯胆,最近开发中收集的这篇文章主要介绍非常高频的笔试面试题第一章 JavaSE基础第二章 JavaSE高级第三章 JavaSE基础第四章 JavaWEB基础第五章 JavaWEB高级数据库第六章 框架第七章 最新技术,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
你好! 如果你想看高频面试题的大白话理解,简单的解释,可以阅读这篇文章(希望达到的目标是每个面试题解释不超过100字),会定期更新。
第一章 JavaSE基础
Java面向对象
- 你还记得,Object 里面有哪些方法,
- 针对对象的
- clone() //创建并返回此对象的一个副本。
- equals(Object obj) //用于确认两个对象是否“相同”。
- toString() //返回该对象的字符串表示。
- hashCode() //用于获取对象的哈希值。
- 针对线程的
- notify() //唤醒在此对象监视器上等待的单个线程。
- notifyAll() //唤醒在此对象监视器上等待的所有线程。
- wait() //用于让当前线程失去操作权限,当前线程进入等待序列
- 其他
- finalize() //由对象的垃圾回收器调用此方法。
- getClass() //返回此 Object 的运行类。
第二章 JavaSE高级
反射
- 反射,几种生成字节码对象的方式
- 使用Class.forName 静态方法,(需要知道类的全路径名)
- 使用.class 方法 (需要知道要操作的class)
- 使用类对象的getClass()方法(需要有对象实例)
第三章 JavaSE基础
第四章 JavaWEB基础
Http协议
- get和post的区别
- get
- get通过拼接url进行传递参数,参数可见
- get请求是可以缓存的
- get请求页面后退时,不产生影响
- get一般传输数据大小有限制
- post
- post通过body体传输参数,参数不可见
- post请求不可以缓存
- post请求页面后退时,会重新提交请求
- post请求传输数据的大小根据php.ini 配置文件设定,也可以无限大
- Http中重定向和请求转发的区别?
-
转发
- 转发是服务器行为
- 转发是一次请求
- 转发浏览器地址不变
- 转发访问的是自己本身的 web 资源,传输的数据不会丢失。
-
重定向
- 重定向是客户端行为
- 重定向是两次请求
- 重定向浏览器地址发生变化
- 重定向可以访问自己 web 之外的资源,传输的数据会丢失
第五章 JavaWEB高级
数据库
第六章 框架
Mybatis
- 讲一下Mybatis 中一级缓存和二级缓存的区别
- 一级缓存
- 一级缓存的存储作用域为 Session,当 Session flush 或
close 之后,该 Session 中的所有 Cache 就将清空 - 一级缓存的介质是内存
- 一级缓存 : 默认开启,无法关闭。
- 一级缓存的存储作用域为 Session,当 Session flush 或
- 二级缓存
- 二级缓存的存储作用域为Mapper
- 二级缓存的介质可以是内存或者磁盘
- 二级缓存: 是否开启,根据 mybatis 的具体版本决定
- 其他
- 多个一级缓存共享一个二级缓存
- 用户在进行查询时,会先从二级缓存中查找,若二级缓存中无数据,则从一级缓存中查找,若一级缓存中无记录,则从数据库查找,返回结果后,把结果放入一级缓存,只有一级缓存关闭时,结果才会被保存到放入二级缓存中。
- 二级缓存与一级缓存其机制相同,都是采用 PerpetualCache,HashMap 存储
第七章 最新技术
Redis
- 讲一下你在使用Redis过程中遇到的问题,以及如何解决的
- 问题一:粒度问题,存哪些数据?
- 问题描述: item表有88个字段,然而需要展示,以及其他操作涉及到的数据有20个,有没有必要把88个字段都存入redis中?
- 解决办法: 只需要根据实际情况,决定哪些字段需要存入redis中
- 问题二:数据量过大,怎么存数据?
- 问题描述: 批量写入10000条数据,每次set一条数据需要0.3ms,假设每次都要连接redis服务器,耗时3秒,数据量过大,时间太长,
- 解决办法: 利用redis提供的 管道机制 pipeline, 每次连接放100条,只需要100次,可以提高效率
- 问题三:怎么防止在redis,多次写入重复的数据
- 解决办法: 加锁
Java锁 synchronized ,可能会产生死锁, 从而导致效率低
可重入锁, Reenlock, ,因为可以设置 加锁时间等待时间,设置3毫秒,超过等待时间,return,解锁时间10毫秒,释放,可以非常有效的避免死锁
- 解决办法: 加锁
- 问题四:redis数据不一致问题
- 解决办法一: 先修改数据库,再同步到redis
- 解决办法二: 设置定时器,每隔一段时间,重新写入redis
- 解决办法三: 如果是防止redis宕机引起的不一致, 可以考虑配置高可用
- 问题五:缓存击穿(查询redis与数据库都没有数据)
- 解决方案一:
从数据库查询,如果数据库没有,则返回值为Null,判断数据库返回的值,如果为Null,则自定义把标识的字段存到Redis中,这样用户再次查询的时候由于先从reids缓存中查询,redis会有对应的Key获取之前设置的value值,这样就不会再次调用数据库,影响效率等问题。 - 解决方案二:
使用 布隆过滤器( bloomFilter),谷歌提供,拿到请求先去查询bloomFilter,存在,return, 不存在,才能进入方法,查询数据库
- 解决方案一:
life is beautiful,我是Alon,如果你有问题,欢迎给我留言。
最后
以上就是儒雅电灯胆为你收集整理的非常高频的笔试面试题第一章 JavaSE基础第二章 JavaSE高级第三章 JavaSE基础第四章 JavaWEB基础第五章 JavaWEB高级数据库第六章 框架第七章 最新技术的全部内容,希望文章能够帮你解决非常高频的笔试面试题第一章 JavaSE基础第二章 JavaSE高级第三章 JavaSE基础第四章 JavaWEB基础第五章 JavaWEB高级数据库第六章 框架第七章 最新技术所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复