• UU跑腿


    1、关于以下程序代码说明正确的是

    package com.test;
    
    public class HasStatic {
        private  static int x=100;
        public static void main(String[] agrs){
            HasStatic hs1=new HasStatic();
            hs1.x++;
            HasStatic hs2=new HasStatic();
            hs2.x++;
            hs1=new HasStatic();
            hs1.x++;
            HasStatic.x--;
            System.out.println("x=" +x);
    
        }
    }
    

    A、5行不能通过编译,因为引用了私有静态变量

    B、10行不能通过编译,因为x是私有静态变量

    C、程序通过编译,输出结果为:x=103

    D、程序通过编译,输出结果为:x=102

    2、下列关于for循环和while循环的说法中哪个是正确的?

    A、while循环能实现的操作,for循环也都能实现

    B、while循环判断条件一般是程序的结果,for循环判断条件一般是非程序结果

    C、两种循环任何时候都可以替换

    D、两种循环结构体中都必须有循环体,循环体不能为空

    3、以下选项中循环结构合法的是

    A、 

     while (int i<7){
                i++;
                System.out.println("i is"+i);
            }
    

    B、

    int j=3;
            while (j){
                System.out.println("j is"+j);
            }
    

    C、

    int j=0;
            for(int k=0;j+k!=10;j++,k++){
                System.out.println("j is"+j+",k is"+ k);
                
            }
    

    D、  

        4、给出下面代码,哪行将引起一个编译是错误?

    public class Test {
        int n = 0;
        int m=0;
        public Test(int a){ m=a; }
        public static void main(String[] agrs){
           Test t1,t2;
           int j,k;
           j=3;k=5;
           t1=new Test();
           t2=new Test(k);
        }
        
    }
    

    A、行1

    B、行4

    C、行6

    D、行9

    5、下面的方法,当输入为2时返回值是多少?

    package com.test;
    
    public class Tt {
        public static int getValue(int i){
            int result =0;
            switch (i){
                case 1:result =result+i;
                case 2:result =result+i*2;
                case 3:result =result+i*3;
            }
            return  result;
        }
        public static void main(String[] agrs){
            System.out.println(getValue(2));
        }
    }
    

    6、已知一颗二叉树前序遍历和中序遍历分别是ABDEGCFH和DBGEACHF

    7、描述一下JVM加载class文件的原理机制【问答】

         JVM加载class步骤:装载、验证、准备、解析、初始化

         1)装载:查找并加载类的二进制数据

         2)验证:确保被加载类的正确性,类文件中字节流包含的信息要符合当前虚拟机的要求;

         3)准备:为类的静态变量分配内存,并将其初始化为默认值;

         4)解析:把类中的符号引用转换为直接引用;

         5)初始化:为类的静态变量付俞正确的初始值;

         

    8、heap和stack有什么区别【问答】

    heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。
    stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。

    9、GC是什么?为什么要有GC?JVM一次完整的GC流程是怎样的?

         GC:垃圾回收;

         java依靠垃圾回收机制完成对分配内存空间的回收,可以有效地防止内存泄漏,有效地使用可以使用的内存。

         

    10、列举一些常用的类、包、接口,请各举5个

          

    类:1.java.lang.Object
    2.java.lang.String
    3.java.lang.System
    4.java.io.file
    5.java.io.FileInputStream
    6.java.io.FileOutputStream
    包:1.java.lang包
    2.java.io
    3.java.swt包
    4.java.util
    5.java.sql包
    接口:1.java.util.List<E>
    2.java.util.Map<E>
    3.java.util.Iterator<E>
    4.java.sql.CallableStatement
    5.java.lang.Comparable<T>
    6.java.lang.Cloneable
    7.java.io.serializable

    11、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?

    Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。

    12、多线程有几种实现方法?同步有几种实现方法?

           多线程有3种实现方法:

           1)实现Runnable接口;

           2)继承Thread类;

           3)实现Callable接口;

          同步有几种实现方法

         1)synchronized,

          2)wait与notify

    13、AutomicInteger原理,他真的是线程安全吗?

    14、写出线程池的参数,简述器运行原理

    15、Redis缓存穿透、缓存击穿、缓存雪崩解决方案

           Redis缓存穿透

           解释:大量请求查询一个缓存中不存在数据,导致所有请求每次都需要查询数据库

           解决方案:1)采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力

                              2)如果一个查询返回的数据为空,我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。

           缓存击穿

           解释:一个key可能会在某些时间点被超高并发地访问,,这个key失效时导致所有查询压力落到底层数据库

           解决方案:1)设置热点数据永远不过期。

                              2)加互斥锁

           缓存雪崩解    

           解释:缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。

           解决方案:

    1. 缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。
    2. 如果缓存数据库是分布式部署,将热点数据均匀分布在不同搞得缓存数据库中。
    3. 设置热点数据永远不过期。

    16、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他用户;

     select count(*) as num,tb.id
                      from
                      tb,
                      (select role from tb where id=xxx) as t1
                      where
                      tb.role = t1.role and tb.id != t1.id
                      group by tb.id
                      having
                      num = select count(role) from tb where id=xxx;

    17、一个用户表中有一个积分字段,假如数据库中有100多万用户,若要在每年第一天凌晨积分清零,你将考虑什么,你将想什么办法解决?

    alter table drop column score;
                      alter table add colunm score int;
                      可能会很快,但是需要试验,试验不能拿真实的环境来操刀,并且要注意,
                      这样的操作时无法回滚的,在我的印象中,只有inert update delete等DML语句才能回滚,
                      对于create table,drop table ,alter table等DDL语句是不能回滚。

                      解决方案一,update user set score=0;
                      解决方案二,假设上面的代码要执行好长时间,超出我们的容忍范围,那我就alter table user drop column
                      score;alter table user add column score int。
                      下面代码实现每年的那个凌晨时刻进行清零。
                      Runnable runnable =
                      new Runnable(){
                      public void run(){
                      clearDb();
                      schedule(this,new Date(new Date().getYear()+1,0,0));
                      }
                      };
                      schedule(runnable,
                      new Date(new Date().getYear()+1,0,1));

    18、你对Spring的理解,什么是Spring的ioc  AOP

    19、简述Springcloud各个组件作用,简要描述其中某个组件的实现原理或者源码实现

    Config:配置管理工具,支持 git 存储配置实现应用外部配置化,支持远程客户端读取配置并根据初始化参数启动项目
    Netflix:核心组件
    Eureka:服务治理组件,可以注册服务接口中心
    Hystrix:容错管理组件,实现断路器模式,服务依赖中出现的延迟和故障提供容错性
    Ribbon:客户端负载均衡服务调用组件
    Feign:基于 Hystrix 和 Ribbon 声明式服务调用组件
    Zuul:提供路由,访问过滤
    Archaius:外部化配置参数组件
    Bus:事件消息总线,用于将服务和服务实例与分布式消息传递连接在一起的事件总线。触发后续作业的业务联动性
    Cluster:针对 Zookeeper、Redis、Hazelcast、Consul 的选举算法和通用状态模式的实现
    CloudFoundry:与 pivotalCloudFoundry 的整合支持
    Consul:服务发现与配置管理工具
    Stream:通过 Redis、RabbitMQ、Kafka 实现消息微服务,通过消息队列的形式生产和消费消息
    Security:安全管理组件
    Sleuth:SpringCloud 分布式跟踪,兼容Zipkin、HTrace和基于日志的跟踪(如ELK)。
    Zookeeper:基于 Zookeeper 的服务发现和配置管理组件
    Starts:基础组件,基于 SpringBoot 风格的基础依赖模块

    20、消息队列如何防止消息不丢失、如何防止消息重复消费、消息积压如何解决

    你想拥有什么,你就去追求什么!
  • 相关阅读:
    freebsd安装mysql
    freebsd安装ports
    分布式拒绝服务攻击
    如何用命令获知当前是一年中的第多少周和今天是周几
    freebsd软件包下载地址
    mod_wsgi的两种模式
    freebsd中/etc/rc.conf配置文件导致不能启动的问题
    进程ID[PID(Process ID)]与端口号[(Port ID)]的联系
    Java EE之HttpServletRequest
    Chrome之控制台使用【转载】
  • 原文地址:https://www.cnblogs.com/lchzlp/p/15186745.html
Copyright © 2020-2023  润新知