网站建设现状 数据,中国加盟网,电商网站有那些,鹤壁搜索引擎优化找不到工作的面试者总结 提示#xff1a;写文章的时候#xff0c;我还在找工作#xff01;#xff01;#xff01; 文章目录 找不到工作的面试者总结前言一、JAVA面死题1. OOP是什么2. 重载与重写的区别3. java基本类型4. String、StringBuffer、StringBuilder的区别5. 接…找不到工作的面试者总结 提示写文章的时候我还在找工作 文章目录 找不到工作的面试者总结前言一、JAVA面死题1. OOP是什么2. 重载与重写的区别3. java基本类型4. String、StringBuffer、StringBuilder的区别5. 接口和抽象类区别6. 什么是自动拆装箱 int 和 Integer 有什么区别7. 和 equals 区别8. final 、 finally 、 finalize9.object有哪些方法10. 集合有哪些11. ArrarList 和 LinkedList 区别12. HashMap底层为什么要这样用13. HashMap 和 HashTable 区别14. 线程的创建方式15. 请写出你最常见的 5 个 RuntimeException16. java的反射你是如果理解的17. 什么是 java 序列化 如何实现 java 序列化 二、Mysql面死题1. mysql事务你了解吧和我说说2. mysql隔离级别3. 事务并发问题4. mysql的引擎5. MySQL 四种索引 前言
提示学了这些也找不到工作计算机真的崩了如果看到这篇文章别干java别干大数据肺腑之言。 一、JAVA面死题
1. OOP是什么 OOPObject Oriented Programming即面向对象编程面向对象的三大特征封装、继承、多态 2. 重载与重写的区别 方法的重载是编译时多态方法的重写是运行时多态 重载:重载发生在一个类中同名的方法不同的参数类型或者不同的参数个数 重写:重写发送在子类和父类之间要求子类的重写方法和父类的被重写方法的方法名字、方法参数个数、方法类型、返回类型相同访问权限不能比父类的低。 3. java基本类型 java基本类型八个六种数字类型(四个整数型两个浮点型)一种字符串型还有一种布尔型。 byte、short、int、long、float、double、boolean、char 注意string是引用类型
4. String、StringBuffer、StringBuilder的区别 String:字符串由final修饰的常量存在常量池中所以他是线程安全的。 StringBuffer:它使用了synchronize关键字对方法进行了同步处理所以线程是安全的。 StringBuilder:执行效率虽然高但是因为线程不安全所以不建议在多线程的环境下对同一个StringBuilder对象进行操作 5. 接口和抽象类区别 抽象类abstract:接口需要子类继承、单继承、可以有构造方法访问修饰符可以有publicprotected和default、可以有成员变量。 接口interface需要子类实现接口、多实现、不能有构造方法访问修饰符只能是public、只能有常量 。
6. 什么是自动拆装箱 int 和 Integer 有什么区别 底层是通过 Integer.valueOf()和 Integer.intValue() 方法实现 。 Integer 的默认值是 null int 的默认值是 0 所以在[-128,127]区间内比较的时候值总是相等的指向的是同一对象在这个区间外是不等的 7. 和 equals 区别 如果比较的是基本数据类型 那么比较的是变量的值 如果比较的是引用数据类型 那么比较的是地址值 两个对象是否指向同一块内 存 equals如果没重写equals方法比较的是两个对象的地址值 如果重写了比较的是内容equals是从object类中继承的默认实现方法是双等 8. final 、 finally 、 finalize final修饰符关键字被final修饰的类就意味着不能再派生出新的子类不能作为父类而被子类继承。因此一个类不能既被abstract声明又被final声明。将变量或方法声明为final可以保证他们在使用的过程中不被修改。被声明为final的变量必须在声明时给出变量的初始值而在以后的引用中只能读取。被final声明的方法也同样只能使用即不能方法重写。 finally是在异常处理时提供finally块来执行任何清除操作。不管有没有异常被抛出、捕获finally块都会被执行。try块中的内容是在无异常时执行到结束。catch块中的内容是在try块内容发生catch所声明的异常时跳转到catch块中执行。finally块则是无论异常是否发生都会执行finally块的内容所以在代码逻辑中有需要无论发生什么都必须执行的代码就可以放在finally块中。 finalize是方法名。java技术允许使用finalize方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在object类中定义的因此所有的类都继承了它。子类覆盖finalize方法以整理系统资源或者被执行其他清理工作。finalize方法是在垃圾收集器删除对象之前对这个对象调用的 9.object有哪些方法 protected Object clone()—创建并返回此对象的一个副本 。 boolean equals(Object obj)—指示某个其他对象是否与此对象“相等 protected void finalize()—当垃圾回收器确定不存在对该对象的更多引用时 由 对象的垃圾回收器调用此方法 。 Class?extendsObject getClass()—返回一个对象的运行时类。 int hashCode()—返回该对象的哈希码值 。 void notify()—唤醒在此对象监视器上等待的单个线程。 void notifyAll()—唤醒在此对象监视器上等待的所有线程。 String toString()—返回该对象的字符串表示 10. 集合有哪些 11. ArrarList 和 LinkedList 区别 ArrayList 是实现了基于动态数组的数据结构 LinkedList 基于链表的数据结构 对于随机访问 get 和 set ArrayList 效率优于 LinkedList 因为 LinkedList 要移 动指针 。 对于新增和删除操作 add 和 remove LinkedList 比较占优势 因为 ArrayList 要 移动数据 。 这一点要看实际情况的。若只对单条数据插入或删除 ArrayList 的速 度反而优于 LinkedList 。但若是批量随机的插入删除数据 LinkedList 的速度大大 优于 ArrayList. 因为 ArrayList 每插入一条数据 要移动插入点及之后的所有数 据 。 12. HashMap底层为什么要这样用 HashMap 底层是 数组链表红黑树 数组 NodeK,V[] table ,哈希表 根据对象的 key 的hash 值判断在数组里面是哪个节点 链表的作用是解决 hash 冲突 将 hash 值取模之后的对象存在一个链表放在 hash值对应的槽位 红黑树 JDK8 使用红黑树来替代超过 8 个节点的链表发送哈希碰撞会带来链化效率会变低引入红黑树会提高查找效率从原来的 O(n)到 O(logn) 当链表长度大于8且总数据量大于64的时候链表就会转化成红黑树 当前存入数据大于阈值即发生扩容或者存入数据到某一条链表时此时该链表数据个数大于8且数组总数量小于64即发生扩容每次扩容为初始容量的2倍 13. HashMap 和 HashTable 区别 HashTable 是线程安全的而 HashMap 不是。 HashMap 的性能要比 HashTable 更好因为HashTable 采用了全局同步Synchronized来保证安全性对性能影响较大 HashMap 只有 containsValue 和 containsKey 方法 HashTable 有 contains 、 containsKey 和 containsValue 三个方法 其中 contains 和 containsValue 方法功 能相同 。 Hashtable 中 key 和 value 都不允许出现 null 值 。HashMap 中 null 可以作为 键 这样的键只有一个 可以有一个或多个键所对应的值为 null。 HashTable 在不指定容量的情况下的默认容量为 11 而 HashMap 为 16 Hashtable 不要求底层数组的容量一定要为 2 的整数次幂 而 HashMap 则要求一 定为 2 的整数次幂。 Hashtable 扩容时 将容量变为原来的 2 倍加 1 而 HashMap 扩容时 将容量变 为原来的 2 倍 。 14. 线程的创建方式 线程的5种状态 新建状态、就绪状态、运行状态、阻塞状态、死亡状态 1、继承 Thread 类创建线程 2、实现 Runnable 接口创建线程 3、实现callable接口和创建Future类创建线程有返回值 4、使用线程池创建线程 5、使用匿名线程创建 15. 请写出你最常见的 5 个 RuntimeException java.lang.NullPointerException 空指针异常 出现原因 调用了未经初始化的对象或者是不存在的对象 。 java.lang.ClassNotFoundException 指定的类找不到 出现原因 类的名称和路径加载错误 通常都是程序试图通过 字符串来加载某个类时可能引发异常 。 java.lang.NumberFormatException字符串转换为数字异常 出现原因 字符型数据中包含非数字型字符 。 java.lang.IndexOutOfBoundsException 数组角标越界异常 常见于操作数组对象时发生 。 java.lang.IllegalArgumentException 方法传递参数错误 java.lang.ClassCastException 数据类型转换异常。 16. java的反射你是如果理解的 在运行状态下任何一个类你都能知道它的所有方法和属性对任何一个对象你都能调用它的方法和属性这种动态调用和获取的方法叫做反射机制 获取Class对象的三种方式 1 Object —— getClass(); 2 任何数据类型包括基本数据类型都有一个“静态”的class属性 3 通过Class类的静态方法forNameString className(常用) 17. 什么是 java 序列化 如何实现 java 序列化 序列化是一种用来处理对象流的机制 所谓对象流也就是将对象的内容进行流 化 。可以对流化后的对象进行读写操作 也可将流化后的对象传输于网络之间 序列化的实现 将需要被序列化的类实现 Serializable 接 口 该接口没有 需 要 实 现 的 方 法 implements Serializable 只是为了标注该对象是可被序列化的然后使用一个输出流(如 FileOutputStream)来构造一个 ObjectOutputStream(对象流) 对象 接着 使用 ObjectOutputStream 对象的 writeObject(Object obj)方法就可以将 参数为 obj 的对象写出(即保存其状态) 要恢复的话则用输入流。 二、Mysql面死题
1. mysql事务你了解吧和我说说 原子性Atomicity事务过程中如果其中操作出现错误所有操作全部回滚要么全嘎要么全做。 一致性Consistency事务开始和结束事务完整约束没有被破坏。比如 A 向 B 转账 不可能 A 扣了钱 B 却没收到 隔离性Isolation:同一时间只允许一个事务请求同一数据不同的事务之间彼此没有干扰比如 A 正在从一张银行卡中取钱 在A 取钱的过程结束前 B 不能向这张卡转账。 持久性Durability:事务完成后数据保存好无法回滚。 2. mysql隔离级别 3. 事务并发问题 脏读事务A读取了事务B更新的数据然后B回滚操作那么A读取到数据的脏数据。 不可重复读事务A多次读同一数据事务B在多次读取中修改了数据事务A就出现了结果不一样。 幻读事务A修改多个数据时事务B插入了一条新的数据此事出现了一条数据没有改过来出现了幻读。 注意:不可重复读的和幻读很容易混淆 不可重复读侧重于修改 幻读侧重于新增或删除 。解决不可重复读的问题只需锁住满足条件的行 解决幻读需要锁表。
4. mysql的引擎 5. MySQL 四种索引 1、普通索引最基本的索引没有任何限制 创建sql create index index_name on table(column(length)) 2、唯一索引:索引列值必须唯一运行null 创建sql create unique index indexName on table(column(length)) 3、主键索引是一种特殊的唯一索引一个表只能有一个主键不允许空值在创建的时候一般会同时创建 创建sql 创建表时加上primary key (id) 4、组合索引在多个字段上创建索引只有在查询条件中使用创建索引时的第一个字段索引才会被使用 创建sql alter table table_name add index name_city_age (name,city,age); 5、全文索引主要用来查找文本中的关键字而不是直接与索引中的值相比较 创建sql create fulltext index index_content ON article(content)