栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java真实面试(南京中软国际)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java真实面试(南京中软国际)

南京-中软国际
  • 详情
  • 一、String,StringBuffer,StringBuild的区别?
  • 二、你了解序列化吗?
  • 三、你们公司使用的代码托管工具,遇到冲突时怎么解决的?
  • 四、索引有了解吗?
  • 五、有使用过设计模式吗?
    • 单例模式:
      • 饿汉式单例模式
      • 懒汉式单例模式
      • 枚举饿汉式
      • 双检锁懒汉式 DCL(Double Check Lock, 双检锁机制)
    • 工厂模式:
    • 装饰者模式:
    • 策略模式:
    • 状态模式:
  • 六、springboot有几种启动方式?
  • 七、springboot的核心配置?
  • 八、mybatis是否能使用枚举?
  • 九、linux中查询文件得命令

详情

面试公司:南京中软国际
面试时间:10min
薪资:10-20k
经验:1-3年

一、String,StringBuffer,StringBuild的区别?

String:字符串常量,不可变,String创建的字符串在常量池中,对于String类的任何改变都会返回一个新的String对象。适用于操作少量的数据。
StringBuild:在堆中创建对象,是非线程安全的,但是效率高,一般用于单线程的环境,在for循环中对字符串进行拼接。
StringBuffer:线程安全,效率比StringBuild低,底层使用同步锁,适用于多线程的环境。

二、你了解序列化吗?

概念:
序列化是把java对象转化为字节码的过程
反序列化是把字节码回复为对象的过程
作用:
正常情况下java对象是保存在内存中,是不能进行持久化,也不能进行网络传输的,如何解决呢?就是把Java对象转换为byte字节数据,以字节的方式去实现持久化保存和网络传输
序列化过程:
继承Serializable接口,这个一个空接口,告诉编译器这个类可以进行序列化的操作。这时候就可以把这个对象传输给前端或者保存在文件中
Java对象中,如果一个字段被transient修饰,或者这个字段是static静态字段,这个字段将不会被序列化,意味着,这个对象被序列化后,再次反序列化成Java对象后,对于的字段值为null。

三、你们公司使用的代码托管工具,遇到冲突时怎么解决的?

gitlap;

四、索引有了解吗?

1、索引优势:
索引类似于书籍检索目录,提高数据的检索效率,降低数据库的io成本
通过索引对数据排序,降低排序成本,降低cpu的消耗

2、索引劣势:
索引也是一张表,索引字段指向实体记录,索引占用空间,降低表的更新速度,增删改时不仅要保存数据,还要维护索引

3、 索引结构:
mysql索引是在存储引擎层实现的,默认索引是B+树(多路平衡搜索树)

4、 索引的分类:
单值索引:索引只包含一个列
唯一性索引:索引列的值唯一,但允许有空指。
复合索引:索引包含多列

5、索引设计原则:
a、对查询频次较高,且数据量比较大的表建立索引。
b、索引字段的选择,最佳候选列应当从where子句的条件中提取,如果where子句中的组合比较多,那么应当挑选最常用、过滤效果最好的列的组合。
c、使用唯一索引,区分度越高,使用索引的效率越高。
d、索引可以提高查询效率,但是索引过多的话,对于DML操作比较多的表,会增加维护代价
e、使用短索引,索引创建之后也是使用硬盘来存储的,因此提升索引访问的I/O效率,也可以提升总体的访问效率。假如构成索引的字段总长度比较短,那么在给定大小的存储块内可以存储更多的索引值,相应的可以有效的提升MySQL访问索引的I/O效率。
g、利用最左前缀法则建立索引

6、索引的使用
违反最左前缀法则索引失效
范围查询右边的列索引失效
在索引列上进行运算操作索引失效
字符串不加单引号索引失效
尽量使用覆盖所有,避免使用select *
如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,索引失效。
in 走索引, not in 索引失效
is NULL , is NOT NULL 有时索引失效
通过group by age order by null;优化分组
可以适当提高 sort_buffer_size 和 max_length_for_sort_data 系统变量,来增大排序区的大小,提高排序的效率。
使用连接查询代替子查询,因为连接查询不需要使用临时表

五、有使用过设计模式吗? 单例模式:

理论:定义⼀个单例类,保证程序中这个类只能创建唯⼀的实例对象,实现资源共享。
好处:能够避免实例对象的重复创建,减少创建实例的系统开销,节省内存。

饿汉式单例模式

所谓饿汉模式就是立即加载,一般情况下再调用getInstancef方法之前就已经产生了实例,也就是在类加载的时候已经产生了。这种模式的缺点很明显,就是占用资源
优点:
1、不需要加锁就能保证线程安全
2、类加载时就创建好了,这样程序执行效率高。性能高
缺点:
1、正是因为类加载时就已经创建好了,无论是否使用都已经创建好了,所以会浪费一定的内存。如果一个程序有大量的饿汉式单例模式,那么在类加载时,会同时创建大量单例,会浪费硬件资源。
2、可以通过反射,创建不同的实例对象。

懒汉式单例模式

懒汉模式就是延迟加载,也叫懒加载。在程序需要用到的时候再创建实例,这样保证了内存不会被浪费。针对懒汉模式,有些实现方式是线程不安全的,也就是说在多线程并发的环境下可能出现资源同步问题。

枚举饿汉式

枚举饿汉式能天然防止反射、反序列化破坏单例

public enum Singleton2 {
    INSTANCE;

    private Singleton2() {
    }

    public static Singleton2 getInstance() {
        return INSTANCE;
    }
}

双检锁懒汉式 DCL(Double Check Lock, 双检锁机制)
public class Singleton4 implements Serializable {
    private Singleton4() {
    }

    private static volatile Singleton4 INSTANCE = null; // 可见性,有序性

    public static Singleton4 getInstance() {
        if (INSTANCE == null) {
            synchronized (Singleton4.class) {
                if (INSTANCE == null) {
                    INSTANCE = new Singleton4();
                }
            }
        }
        return INSTANCE;
    }
}

工厂模式:

简单工厂模式,
工厂方法模式,
抽象工厂模式

装饰者模式:

io流。

策略模式:

理论:将每一种算法都封装到同一个接口的实现类中。包括三个角色
Context(环境类):环境类是使用算法的角色,它在解决某个问题(即实现某个方法)时可以采用多种策略。在环境类中维持一个对抽象策略类的引用实例,用于定义所采用的策略。
Strategy(抽象策略类):它为所支持的算法声明了抽象方法,是所有策略类的父类,它可以是抽象类或具体类,也可以是接口。环境类通过抽象策略类中声明的方法在运行时调用具体策略类中实现的算法。
ConcreteStrategy(具体策略类):它实现了在抽象策略类中声明的算法,在运行时,具体策略类将覆盖在环境类中定义的抽象策略类对象,使用一种具体的算法实现某个业务处理。
好处:消除if-else的结构,每个类职责单一,遵循开闭原则,逻辑也内聚,也具备扩展性。
使用场景:Comparator接口,线程池的4种拒绝策略,手机使用不同的
与状态模式的区别:主要是目的不同
在策略模式中,ConcreteStrategy角色是表示算法的类。在Strategy模式中,可以替换被委托对象的类。当然如果没有必要,也可以不替换。
而在状态模式中,ConcreteState角色是表示“状态”的类。在State模式中,每次状态变化时,被委托对象的类都必定会被替换。

状态模式:

允许一个对象在其内部状态改变时改变它的行为。一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动时,其内部状态就会改变,从而使得系统的行为也随之发生变化。

六、springboot有几种启动方式?

1、使用@SpringBootApplication
2、@EnableAutoConfiguration + @ComponentScan

七、springboot的核心配置?

@SpringBootApplication包括三个注解
@SpringBootConfiguration:继承自@Configuration,二者功能也一致,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。
@EnableAutoConfiguration:完成依赖的自动配置,比如添加了spring-boot-starter-web依赖,会自动添加tomcat和SpringMVC的依赖,那么SpringBoot会对Tomcat和SpringMVC进行自动配置。
@ComponentScan:会自动扫描@SpringBootApplication所在类的同级包(com.dpb.springboot)以及子包中的Bean,所以建议将入口类放置在groupId+arctifactID组合的包名下

八、mybatis是否能使用枚举?

没使用过

九、linux中查询文件得命令

按照文件名查找
find / -name “my.txt”
查找二进制文件
whereis nginx

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999665.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号