面试
panda_1994
这个作者很懒,什么都没留下…
展开
-
Java并发编程常见面试题夺命追问
1. 守护线程(Daemon)与用户线程(User)的区别守护线程时程序运行时在后台提供服务的线程,当所有非守护线程结束后,也即程序终止时,所有守护线程都将一起被杀死。main()是用户线程,JVM的垃圾回收线程就是一个守护线程通过Thread类中的setDaemon(boolean on)方法,true则把该线程设置为守护线程,反之为用户线程。Thread.setDaemon()必须在T...原创 2019-02-24 20:54:25 · 281 阅读 · 0 评论 -
Spring IOC、AOP以及Spring-Bean循环依赖解决
文章目录Spring IOC原理IOC原理:依赖注入(DI)的三种方式Spring-Bean循环依赖以及解决方式什么是循环依赖Spring怎么解决循环依赖原理Spring单例对象初始化过程三级缓存Spring为什么不使用两级缓存AOP使用AOP的目的AOP使用场景AOP原理Spring AOP实现主要参考文章Spring IOC原理IOC原理:IOC,即控制反转(Inversion of C...原创 2019-08-08 17:33:51 · 1097 阅读 · 0 评论 -
进程与线程的区别及其通信方式
进程与线程的区别及其通信方式进程与线程的区别进程是资源分配的基本单位,是执行中程序的实例线程是操作系统调度的基本单位,一个进程可以有多个线程。线程基本不拥有系统资源,但可以访问隶属进程的资源。线程切换时只需保存和设置少量寄存器内容,开销很小。而进程切换时则开销很大,涉及到当前执行进程CPU环境的保存及新调度进程CPU环境的设置。一个程序至少有一个进程,而一个进程中至少有一...原创 2019-08-05 14:46:44 · 186 阅读 · 0 评论 -
大数相乘
大数乘法[JAVA实现]-经典笔试题package com.company;import java.util.Scanner;/** * 大数相乘 * @author Ant * */public class BigNumMutil { /** * 大数相乘基本思想,输入字符串,转成char数组,转成int数组。采用分治思想,每一位的相乘;<br>...转载 2019-05-08 15:36:54 · 164 阅读 · 0 评论 -
使用rand6实现rand10
给定rand6()函数实现private static int rand6(){ return (int)(Math.random()*6)+1;}rand6()可以得到1,2,3,4,5,6rand6()-1可以得到0,1,2,3,4,5(rand6()-1)*6可以得到0,6,12,18,24,30result=(rand6()-1)*6+rand6()-1可以得...原创 2019-04-24 17:24:14 · 3545 阅读 · 0 评论 -
面试中如何回答JVM垃圾回收机制
JVM中的垃圾回收了解吗首先是如何标记存活对象,主要有两个算法,分别是引用计数法和可达性分析算法。引用计数法:给一个对象添加一个引用计数器,当一个地方引用它时,计算器+1,不引用的时候-1,当引用计数器为0时说明该对象可回收。但是一旦出现互相引用的情况,就会出现无法回收的现象。所以JVM采用的是可达性分析算法。可达性分析算法:首先会标记所有GC root能够直接关联的对象。GC ro...原创 2019-04-17 09:36:48 · 3072 阅读 · 0 评论 -
web项目面试问题
项目如何保证安全性1.弱口令漏洞解决方案:最好使用至少6位的数字、字母及特殊字符组合作为密码。数据库不要存储明文密码,应存储MD5加密后的密文,由于目前普通的MD5加密已经可以被破解,最好可以多重MD5加密,或者多种加密方式叠加组合。2.未使用用户名及密码登录后台可直接输入后台URL登录系统。解决方案:spring aop实现登录权限拦截3.sql注入问题使用mybatis编写sql语...原创 2019-04-09 19:49:56 · 940 阅读 · 0 评论 -
面试中如何回答Java中的锁机制
Java中锁机制Java中多线程加锁机制主要有两种,一种是JDK实现的lock,另外一种是JVM底层实现的Synchronized关键字。Synchronized是JVM底层实现的,JVM原生支持synchronized,而reentrantlock是JDK实现的,并不是所有jdk版本都支持reentrantlock,而且使用synchronized无需显式地释放锁,JVM自己会保证锁的释放。...原创 2019-04-12 17:08:36 · 705 阅读 · 1 评论 -
Spring高频面试题
Spring Boot的优势和Spring的区别Spring Boot优势:快速开发,提高了生产力,适合构建微服务系统避免编写大量的样板代码、注释和xml配置springBoot集成了很多成熟的组件,如mybatis、redis和mongdb等Spring Boot劣势:集成度太高,使用过程不容易了解底层,一旦出现bug很难发现问题根源。已存在的spring项目难以转化为sp...原创 2019-04-09 14:33:02 · 301 阅读 · 0 评论 -
MySQL面试问题
索引是什么?有什么作用以及缺点定义:索引是存储引擎用于快速查找数据的一种数据结构。MySQL数据库基本的索引类型:普通索引、唯一索引、主键索引和全文索引。普通索引:允许被索引的数据列包含重复的列唯一索引:不允许被索引的数据包含重复的列主键索引:在一张表中只能定义一个主键索引,主键索引用于唯一标识一条记录(主键索引必然属于唯一索引),使用关键字PRIMARY KEY创建索引的目的是什么...原创 2019-03-25 16:04:58 · 12938 阅读 · 4 评论 -
HashMap相关面试问题
HashMap原理hashMap内部包含了一个Entry类型的数组tabletransient Entry[] table;table数组中每个索引位置(可以将每个索引位置看成是一个桶bucket)存储着一条链表或者一棵红黑树。hashMap通过哈希算法计算出key对应的索引位置,不同的key计算出来的索引位置有可能出现冲突,拉链法和线性探测法可以解决位置冲突问题,hashMap采用的是拉链...原创 2019-03-07 09:58:23 · 516 阅读 · 0 评论 -
Redis面试相关
缓存中间件-Memcache和Redis的区别Memcache:代码层次类似Hash支持简单数据类型不支持数据持久化存储不支持主从(主从服务器复制)不支持分片Redis:数据类型丰富支持数据磁盘持久化存储支持主从支持分片Redis数据类型string:最基本的数据类型,二进制安全hash:String元素组成的字典,适合用于存储对象list:列表,按照Stri...原创 2019-03-03 11:16:15 · 184 阅读 · 0 评论 -
面试中如何回答分布式锁的实现
实现分布式锁的方法主要有四种:数据库唯一索引Redis的SETNX指令Redis实现的RedLock算法ZooKeeper的临时有序节点第一种是通过数据库唯一索引,通过往数据库中插入唯一索引表示获取到锁,删除该唯一索引表示释放该锁。唯一索引可以保证当前数据库中该索引是唯一的。那么就可以使用这个唯一索引来判断数据是否处于锁定状态。但是数据库唯一索引没法设置过期时间,一旦解锁失败其它进程...原创 2019-03-03 10:06:59 · 674 阅读 · 0 评论 -
消息队列总览
1.为什么要用消息队列解耦、异步、削峰A系统调用B系统、C系统,传统的调用是直接调用,但是当B系统说我不需要你提供数据了,这时候A需要改代码,C系统说我不需要某个字段了,这时候A也要改代码,如果又多了一个D系统,A又要写代码。为了实现解耦,引入消息队列,A将产生的数据丢到消息队列中,哪个系统需要 哪个系统就去取;A系统调用B系统,B系统由于某个需要调用第三方接口超时,导致A系统响应速度慢,...原创 2019-08-13 14:30:04 · 228 阅读 · 0 评论