近期面试知识点总结 随笔

一.数据库四个特性

ACID

1.原子性 Atomicity

要么全部成功,要么全部失败

2.一致性 Consistency

执行之前和执行之后都必须处于一致的状态

ex:A账户+B账户=100 不管两个人怎么转账 都还是100

3.隔离性 Isolation

同一时间,只允许一个事物请求同一数据,多并发事物之间要隔离 以下4种隔离级别

1)串行化(最高级别)

加锁  保证事物一个一个进行

2)可重复读

对事物涉及到的数据上锁  但是无法阻止insert

3)读已提交(默认)

4)读未提交(最低级别)

4.持久性 Durability

事物一但被提交,则对数据库中数据的改变就是永久的

可以通过sql语句SELECT @@tx_isolation查找隔离

通过sql语句 set session transaction isolation level设置隔离

二.异常

运行时异常不需要捕获  但是检查型异常需要  比如IOException

三.sql优化 

1.select * from t  用具体字段代替 *

2.避免select id from t where name is null  where会进行全表扫描

3.varchar代替char节省空间 char是固定长度  varchar是随着存储长度变化而变化的

4.能使用数字型字段就不要用字符型 因为字符型在查询时会比较串里的每个字符  但是数字比较一次就可以了

5.where 和 order by 字段考虑建立索引

四.自动拆装箱

原始类型与其封装类的转换

int  -  Integer 装箱

Integer  -  int  拆箱

五.线程局部变量

线程内共享  线程间互斥  

只属于当前调用他的线程  值不会因其他线程变化

Java线程学习笔记之线程局部变量_薛小强Forever-CSDN博客

六.JDK  JRE  JVM

包含关系

 七.可变参数

可以调用n个参数  是指定类型就好

public Object sum(int ... numbers){

//numbers当数组处理

numbers.length;

}

//调用

sum(1)

sum(1,2)

sum(1,2,3)

八.Redis

redis把数据保存在内存中,定期把数据从内存转移到硬盘中 在redis.conf中配置 通过save命令  存储到dump.rdb文件

九.内部类

成员内部类相当于外部类的一个成员 成员内部类依附外部类而存在,创建成员内部类的对象前提是必须存在一个外部类对象

ex:

声明时

public class Outer{

    class Inner{

 }

}

Outer out = new Outer();

Inner inner = out.new Inner();

除外,还有局部内部类,静态内部类

匿名内部类  其实是我们最常用到的内部类  我们都把里边的方法实现了  但是没给实现类取名字

new Thread(new Runnable() {
            
            @Override
            public void run() {
                // TODO Auto-generated method stub
                
            }
        }){
            
        }.start();
new Comparable<Object>() {

            @Override
            public int compareTo(Object o) {
                // TODO Auto-generated method stub
                return 0;
            }
        };

new Thread() {
          public void run() {
               for (int x = 0; x < 100; x++) {
                  System.out.println(Thread.currentThread().getName() + "--"
                          + x);
                 }
            }
        }.start();

十.内存优化/配置

-Xms1024M  java堆空间最小值

-Xmx2048M java堆空间最大值

-XX:PermSize=1024m  持久代堆空间最小值

-XX:MaxPermSize=2048m 持久代堆空间最大值

十一.垃圾回收算法

深入JVM垃圾回收算法_Floating Cat-CSDN博客

1.标记-清除算法

顾名思义  先标记  再清除

2.标记-复制算法

空间一分为二  回收时存活的对象被复制到另一区域  原先的区域被重置

3.标记-整理算法

让存活的对象往另一端移动

4.分代收集算法

根据年代特点采取不同算法

新生代:标记-复制算法不用按1:1划分

老年代(一个对象存活时间足够长,会被复制到老年代):标记-清除,标记-整理算法

5.增量收集算法

先标记着,不清除

十二.关于锁

死锁:互相持有对方资源并且都不主动释放会产生死锁 比如递归方法在方法声明上用synchronized

下边链接里那个堵车的图就特别形象

什么是死锁以及避免死锁 - hadoop_dev - 博客园

乐观锁:数据库加个字段(version),每次更新,version会随之递增,若更新时,发现和当前version不一致,则不更新

也可以用时间戳

CAS也是乐观锁  compare and set(compare and swap)

有一些原子类型的类,比如 AtomicInteger  AtomicBoolean 有compareAndSet的类

第一个参数,比较当前的值和第一个参数是否一致

第二个参数,如果当前值和第一个参数一致,就把当前值设置为第二个参数

悲观锁:synchronized

什么是乐观锁,什么是悲观锁 - 简书

十三.线程池队列已满再添加任务会发生什么

如 Executors.newFixedThreadPool(10)  底层是LinkedBlockingQueue 无界限那就等线程池已有任务执行完再执行他

如果是有界限的 那就不会执行新添加进来的任务

十四.类加载

1)隐式:new时  隐式调用类加载器加载对应的类到jvm

2)显示:class.forname

Java类加载器ClassLoader总结 - 时间朋友 - 博客园

十五.值传递和引用传递

 值传递:基本类型 以及基本类型的封装类 和String s="123"

引用传递:操作的直接是源数据

十六.接口能否继承

类不能继承,但接口能继承

如 dao层继承jpa

@Repository
public interface AlertRuleRepository
        extends PagingAndSortingRepository<AlertRule, String>, JpaSpecificationExecutor<AlertRule>,JpaRepository<AlertRule, String> {}

十七.fail-fast

常见  但是我刚知道

fail-fast 机制是java集合(Collection)中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件

两个线程遍历一个collection 一个使之发生结构变化 比如在remove  另一个就会抛异常

十八.面向切面和过滤器

面向切面是在某个方法执行前后进行业务处理  比如定义一个自定义注解 通过@Pointcut  @Before @After @Around执行业务

过滤器通常是在WEB.XMl配置后拦截url请求  进行权限校验

十九.Hibernate的get和load

都是根据Id进行单条查询

get方法被调用时立即执行sql

User user = session.get(User.class,"1");

load在获取除id外的属性时才执行sql

User user = session.load(User.class,"1");

user.getId();//不执行

user.getName();//执行

 二十.@Autowired

消除get/set方法,不用再xml中配property属性

二十一.跳出多层循环

public static void main(String[] args){
        a:for(int i=0;i<3;i++){
            b:for(int j=0;j<3;j++){
              
                if(j==1){
                    break a;
                }
            }
        }        
    }

如果不加标签,break跳出当前这层循环,continue跳出本次循环,return直接连下边的方法都不走了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值