面试题


1.以下属于Redis支持的数据类型是( )

  • Strings
  • Lists
  • Sets
  • 集合排序

解析:

redis一共包含5种数据类型

①字符串 String (最基本的类型,可包含任意数据)

②哈希 Hash (String类型的field、value映射表)

③列表 List (字符串列表,有序不唯一)

④集合 set (字符串集合,无序唯一)

⑤集合排序 (有序集合sorted sets)(字符串集合,可以通过设置分数score进行排序)

2.当你在浏览器地址栏输入一个URL后回车,将会发生的事情?


    1.浏览器向DNS服务器查找输入URL对应的IP地址。
    2.DNS服务器返回网站的IP地址。
    3.浏览器根据IP地址与目标web服务器在80端口上建立TCP连接
    4.浏览器获取请求页面的html代码。
    5.浏览器在显示窗口内渲染HTML。
    6.窗口关闭时,浏览器终止与服务器的连接。

这其中最有趣的是第1步和第2步(域名解析)。我们输入的网址(域名)是IP地址的一个别名, 在一个DNS内,一个域名对应一个IP地址。域名系统(DNS) 的工作就是将域名与它的IP地址对应起来。DNS是分布式的,同时也是具有层级关系的。

一个域名服务器虽然只记录一个小的子网内的主机名和IP地址, 但所有的域名服务器联合起来工作,就能将全网内的域名与它们的IP地址对应起来。 这也就意味着,如果一个域名服务器无法找到某个请求域名所对应的IP地址, 它就会向其它的域名服务器发出请求进行寻找。

image-20220119113922644

3.如何提高服务器响应速度

一、服务器周围环境
  服务器通常放置于机房,所说的周围环境也正是指机房。服务器基本是一天24小时不间断运行,所需要的电量如果没有得到足够保证,那么宕机的可能性就会增加。
  其次,一台不停运转的机器,会产生大量的热量,如果机房不能给予足够的散热与湿度保持,机器便会故障,对运行速度也会有很大影响。
  最后,在服务器配置相同的情况下,机房的带宽越大,访问速度相对越快。
 二、本身配置
  服务器对非专业人员一直是难以理解的机器,但如果将其转化为我们熟知的东西就很好理解了。我们可以将服务器看做一台普通计算机,计算机中的处理器、内存和宽带都直接影响了其运行速度。
  因此,想要提升服务器速度,可以对这些硬件进行升级,做好维护,如果速度下降,也可以从这些方面进行排查。
三、网站程序
  程序代码对速度影响也很大。代码越精简,所占用空间便会越小,访问速度便会越快。通常来说,编码人员都会有一个书写标准,但因为个人习惯问题而凭空多出许多冗余代码,导致速度被拖慢。壹基比观观 
  1. 对传输数据进行压缩处理,降低了网络传输的数据量。
  2. (减少HTTP请求数我们可以通过减少外部各类文件的数量调用次数来达到其目的)减少http:js、css、图片和flash等文件每一类下载都相当于一次HTTP请求,使用外部的JS和CSS,将内联的JS和CSS做成外部的JS、CSS。减少重复下载内联的JS和CSS。也可一可以直接把css和js写入到html页面中,避免了外部的调用;   
  3.使用浏览器缓存,在用户浏览网站的不同页面时,很多[[在本地缓存这些文件,将大大降低页面产生的流量,从而降低页面载入时间。
  4.减少与数据库的交互。
  5.控制程序的优化。
  6.采用多台服务器提高并行加载量
四、优化服务器并发处理能力,提高吞吐量,提高CPU并发计算能力(多进程&多线程)

4.java基本数据类型

1、整型:byte 、int 、long 、short

2、浮点型:float 、 double

3、字符型:char

4、布尔型:boolean

5.下面有关SPRING的事务传播特性,说法错误的是?

A)PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行
B)PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就抛出异常
C)PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起
D)PROPAGATION_NESTED:支持当前事务,新增Savepoint点,与当前事务同步提交或回滚

    答案:B

    解析:Spring的API设计很不错,基本上根据英文翻译就能知道作用:Required:必须的。说明必须要有事物,没有就新建事物。supports:支持。说明仅仅是支持事务,没有事务就非事务方式执行。mandatory:强制的。说明一定要有事务,没有事务就抛出异常。required_new:必须新建事物。如果当前存在事物就挂起。not_supported:不支持事物,如果存在事物就挂起。never:绝不有事务。如果存在事物就抛出异常

6.switch 是否能作用在 byte 、longString ?

  • switch可作用于byte int short char
    switch可作用于byte int short char 对应的包装类
  • switch中可以是枚举类型(JDK1.5之后)
  • switch中可以是字符串类型,String(JDK1.7之后才可以作用在string上)

7.抽象类(abstract class)和接口(interface)有什么异同?

同:1.抽象类和接口都不能实例化,但可以定义抽象类和接口的引用。

​ 2.一个类如果实现了某个抽象类或者接口都需要对其中的抽象方法全部实现,否则该类仍然需要声明抽象类。

异:1.接口比抽象类更加抽象,抽象类可以定义构造器,可以有抽象方法和具体方法。而接口全部都是抽象方法。

​ 2.抽象类的成员可以是private,protected,public,而接口中的成员变量全部是public。

​ 3.抽象类中可以定义成员变量,而接口定义的成员变量实际上都是常量。

​ 4.有抽象方法的类必须声明抽象类,抽象类未必有抽象方法。

在抽象类中定义构造方法
abstract class Person{
    private String name;
    public Person(){
    System.out.println("hello,jack");
}

public String getName(){
    return name;
}
public void setName(String name){
    this.name = name;
}
public abstract void getPersoninfo();
}
class Student extends Person(){
    public Student(){
        System.out.println("helllo,tom");
    }
    public void getPersoninfo(){
        }
    }

     public class Test8(){
    public static void main(String[] args){
        Person per = new Person();
      per.Person();
      Student stu = new Student();
       stu.Student();
    }
}

8.静态嵌套类(static nested class)和内部类(inner class)的不同?

静态嵌套类是被声明为静态的内部类,他可以不依赖外部类实例被实例化。而通常的内部类需要在外部实例化后才能实例化。


文章作者: 艾茶叶蛋
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 艾茶叶蛋 !
  目录