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


    详情

    面试公司:南京中软国际
    面试时间: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 系统变量,来增大排序区的大小,提高排序的效率。
    使用连接查询代替子查询,因为连接查询不需要使用临时表

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

    单例模式,工厂模式,装饰者模式,策略模式,状态模式

    六、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是否能使用枚举?

    没使用过

  • 相关阅读:
    神经网络在控制中的应用,神经元网络控制的作用
    我遇到的bug(活动)
    强化学习--多维动作状态空间的设计
    强化学习到底是什么?它是怎么运维的
    【笔试实战】LeetCode题单刷题-编程基础 0 到 1【一】
    Nanoprobes Ni-NTA-Nanogold——用于 His 标签标记和检测
    【python】美女在召唤,python批量采集~
    go语言并发
    Java SPI 二 之 Java APT原理及APT实战 - 一步步教你写ButterKnife
    redis学习笔记(一)--redis的认识和使用
  • 原文地址:https://blog.csdn.net/weixin_48412846/article/details/125530719