java常用技术

在这里插入图片描述

  1. 线程和进程的区别
    线程三个基本状态:就绪、执行、阻塞线程五个基本操作:创建、就绪、运行、阻塞、终止进程四种形式:主从式、会话式、消息或邮箱机制、共享存储区方式进程是具有一定功能的程序关于某次数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。一个进程包含多个线程。线程是进程的一个实体,是CPU调度和分配的基本单元。2. JSP四大域对象和九大内置对象四大域对象:PageContext、request、session、servletContext九大内置对象:request、response、application、config、Exception、page、out、pageContext、session3. 使用final关键词修饰一个变量的时候是引用不能变还是引用的对象不能变?Final关键词修饰一个变量是指引用变量不能变。引用变量所指对象的内容是可以变化的。4. Private、protected、public的区别private:继承成员但没有访问权限。(可以通过此类中的protected成员函数和public成员函数访问。)protected:继承成员,有访问权限,类外没有访问权限,不可将继承的protected修改为private.public:继承成员,有访问权限,类外有访问权限。5. 父类和子类都有静态代码块时,创建子类是先执行哪类?静态代码块在JVM加载类的时候先执行,父类先于子类执行。6. Junit中before和beforeclass的区别Before 在每个测试方法之前都会运行一次,只需要声明publicBeforeClass 在类中只运行一次,必须声明成public static7. 单例模式public class Singleton { private static Singleton sl; private Singleton (){} public static synchronized Singleton getInstance() { if (sl== null) { sl= new Singleton(); } return sl; } } 8. Redis数据结构String-字符串 Hash-字典 list-列表 set-集合 sorted set-有序集合9. HashMap、HashSet和HashTable的区别HashMap基于Map接口实现,线程非同步所以不安全。键是唯一不可重复的,但是value值可以重复且允许空值存在。HashTable是基于Dictionary类实现,线程默认同步所以是安全的,键值唯一且不为空,value值不能为空值。HashSet是基于set实现的,以对象作为元素,且拒绝重复对象。内部使用HashMap实现,其实就是HashMap的一个视图。10. ArrayList和LinkedList的区别ArrayList是基于动态数组的数据结构,查询较快LinkedList是基于链表的数据结构,因为不需要移动数据,所以增删较快。11. 线程中wait和sleep的区别Wait方法属于Object类,使线程放弃进入执行,进入线程等待池,只能使用notify或notifyAll方法才能唤醒此线程,线程会等待进入线程池。即使在执行此方法时,线程已进入线程池,依然会放弃执行,让出线程池,交出锁。即使线程被激活,也需要等待前方线程执行完毕后才可进入线程池执行。Sleep方法属于Thread类,使线程在指定时间内暂停执行,让cup暂时执行其他线程,但这个线程的监控状态依然保持,当执行时间到了以后,该线程恢复到之前状态,继续执行,线程不会释放锁。12. Equals和的区别是一个运算符,是逻辑上的判断,比较的是引用地址。Equals是String的一个方法,是比较引用地址,在Object类时,Equals和==是一样的,对于其他类来说如果重新了Equals方法,则比较的两个对象的数据内容。13. HashCode和EqualsHashCode和Equals都是在Object类中定义的,是对两个对象地址的比较,如果重写了Equals方法就必须重写HashCode方法。HashCode方法返回的是对象的散列码,返回值是int类型的散列码;Equals返回的是true和false。如果两个对象相同,他们的HashCode值必须相同;如果两个对象的HashCode值相同,他们不一样相同。14. 方法重载和重写的区别方法重载:在同一个类中,方法名称相同,参数类型和个数不同,返回值也可以不同。方法重写:父子类、接口和实现类之间的关系,子类可以重写父类方法,但是参数个数、类型、返回值必须相同。15. Junit中before和beforeclass的区别Before是初始化方法,在每个程序运行之前都会执行一次。Beforeclass在类中只运行一次。16. STAR法则Situation: 事情是在什么情况下发生Task: 你是如何明确你的任务的Action: 针对这样的情况分析,你采用了什么行动方式Result: 结果怎样,在这样的情况下你学习到了什么17. Cookie和Session的区别cookie数据存储在客户的浏览器上,cookie是不安全的,别人可以分析存放在本地cookie并进行cookie欺骗;Session存储在服务器上,Session是安全的;当访问增多时,Session会占用服务器性能,可以考虑使用cookie建议将登陆信息等重要信息保存在Session中,其他需要保留的信息可以存在cookie中。18. JQuery有哪些选择器ID选择器、类选择器、层次选择器、组合选择器、属性选择器、表单选择器等等19. 事务的特性和隔离级别特性:原子性、一致性、隔离性、持久性。隔离级别: ① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。 ② Repeatable read (可重复读):可避免脏读、不可重复读的发生。 ③ Read committed (读已提交):可避免脏读的发生。 ④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。20. POI上传数据量过大可分批处理 先行保存部分内容至数据库,再清空list集合,重新导入内容21. 前缀编码在一个字符集中,任何一个字符的编码都不是另一个字符编码的前缀。22. JVM清理垃圾命令GC.run23. 循环队列引入的目的消除线性队列的“假溢出”,充分利用存储空间。24. Webservice是什么?它的引擎是什么?WebService是一个平台独立的、低耦合的,自包含的、基于可编程的web应用程序,可使用开放的xml标准来描述、发现、发布、协调和配置这些应用程序,是用户开发互操作的分布式系统。最基本的目的就是提供在各个不同平台的不同应用系统的系统工作能力。25. Tomcat集群中怎么实现共享1:Tomcat的Session复制。在一台Tomcat的Session发生变化时,将变更的数据分发给其它的Tomcat服务器。2: 采用 memcached session manager 共享session。26. Git和Svn有什么区别?1:git是分布式的版本控制系统,SVN不是。GIT和SVN都有自己的集中式版本库或服务器,但是GIT更倾向分布式使用。2:GIT把内容按数据方式存储,而SVN是按文件存储的。3:GIT可以很容易的发现未被合并的分支,SVN需要手动运行命令来确定代码是否被合并。4:GIT没有一个全局的版本号,SVN有。但GIT内容完整性要优于SVN。5:GIT在下载后即使在不联网状态也可以看到所有数据,但SVN必须要联网。6:GIT的提交速度优于SVN,且GIT可以有无限个版本库,但SVN只有一个中央数据库,一旦这个中央库有问题,则所有代码都会全部瘫痪。7:管理一个GIT库相对于管理一个SVN库更容易。27. dubbo服务开发流程,运行流程?zookeeper注册中心的作用?端口是多少?服务容器负责启动,加载,运行服务提供者。1. 服务提供者在启动时,向注册中心(默认端口2181)注册自己提供的服务。2. 服务消费者在启动时,向注册中心订阅自己所需的服务。3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。28. redis为什么可以做缓存?redis都是怎么用的?都用来存什么了?redis的存储结构?Redis集群搭建?redis的事务;redis丢失问题使用redis做缓存的原因:redis是用C语言编写的,稳定性和性能更好。支持集群模式和持久化等特性,不会应为缓存量太多而导致虚拟机崩溃。Redis是独立部署的,即使网站更新,redis缓存的数据也不会消失。集群搭建(redis需要3台主机,3台从机,则配置6台,需要6个端口):1:安装ruby环境,上传接口工程,安装接口程序,拷贝脚本到指定位置2:创建6个redis实例,修改配置文件 ,然后启动所有redis实例(为简化启动步骤,可编写启动脚本)。3:执行创建集群的命令,连接测试redis的事务Redis的事务是一组命令的集合,Redis事务的实现需要用到 MULTI 和 EXEC 两个命令,事务开始的时候先向Redis服务器发送 MULTI 命令,然后依次发送需要在本次事务中处理的命令,最后再发送 EXEC 命令表示事务命令结束。redis丢失问题常见原因:程序bug或人为误操作· 因客户端缓冲区内存使用过大,导致大量键被LRU淘汰· 主库故障后自动重启,可能导致数据丢失· 网络分区的问题,可能导致短时间的写入数据丢失· 主从复制数据不一致,发生故障切换后,出现数据丢失· 大量过期键,同时被淘汰清理29. 消息中间件acitveMQ的作用、原理?作用:acitveMQ就是消息队列,activemq安装之后,会有一个broker(经纪人)。消息的生产者将消息发送到broker中,它不关心谁消费该消息。消息的消费者去broker中获取信息,它不关心谁提供消息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值