• 牛客面试知识点一(泛型、多线程、MySQL索引)


    一、请你说说泛型、泛型擦除

    Java在1.5之后引入了泛型,防止在编译时产生类型转换错误,编译时就能及时发现,而不是运行。程序在编译时会将泛型去掉,这就是泛型擦除

    1)泛型:Java在jdk5引入了泛型,在没有泛型之前,每次从集合中读取的对象都必须进行类型转换,如果在插入对象时,类型出错,那么在运行时转换处理的阶段就会报错。在提出泛型之后就可以明确的指定集合接受哪些对象类型,编译器就能知晓并且自动为插入的代码进行泛化,在编译阶段告知是否插入类型错误的对象,程序会变得更加安全清晰。

    2)泛型擦除:Java泛型是伪泛型,因为Java代码在编译阶段,所有的泛型信息会被擦除,Java的泛型基本上都是在编辑器这个层次上实现的,在生成的字节码文件中是不包含泛型信息的,使用泛型的时候加上的类型,在编译阶段会被擦除掉,这个过程称为泛型擦除。

    二、请你说说MySQL索引,以及它们的好处和坏处

    MySQL索引主要有普通索引、唯一索引、主键索引、外键索引、全文索引、复合索引几种;

    优点: 1.大大加快数据的检索速度 2.通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能 缺点: 1.时间方面:创建索引和维护索引要耗费时间,索引需要动态的维护 2.空间方面:需要占物理空间

    三、请你说说多线程

     

    不知道是不可能的

    1.线程是程序执行的最小单元,一个进程可以拥有多个线程 2.各个线程之间共享程序的内存空间(代码段、数据段和堆空间)和系统分配的资源(CPU,I/O,打开的文件),但是各个线程拥有自己的栈空间 3.多线程优点:减少程序响应时间;提高CPU利用率;创建和切换开销小;数据共享效率高;简化程序结构

    四、请你说说进程间的通信方式

    1.如果线程间采用synchronized来保证线程安全,则采用wait、notify、notifyAll来实现线程通信 2.如果线程间采用Lock来保证线程安全,则采用await\singal\singalAll 3.通过消息队列

  • 相关阅读:
    第一章 人工智能专题之Python基础知识复习
    2022年阿里高频Java面试题:分布式+中间件+高并发+算法+数据库
    【leetcode刷题】剑指 Offer(第 2 版)
    Hive之DDL库操作
    SpringBoot-Shiro安全权限框架
    小程序基础
    算数运算符
    ChartMuseum的安装教程和基本配置
    用一段爬虫代码爬取高音质音频示例
    开始智能制造的第一步,系统与设备的交互
  • 原文地址:https://blog.csdn.net/lonzgzhouzhou/article/details/127231556