• 记录一下最近面试的总结


    本人Java岗,最近面的都是一些中小型企业,大厂还在筛选和笔试阶段(估计凉了......)面完感觉得稍微做个总结,基本上问到一个点都能扩展开来,问来问去都是那些。有一些可能忘了,想到什么就写什么。

    String类相关

    1、String和StringBuffer、StringBuilder的区别

    String有final修饰,不可变;后两个可以通过append()函数追加字符串;StringBuilder加了synchronized关键字,是线程安全的;

    2、final修饰的引用是引用不可变还是对象不可变

    是引用不可变;

    3、== 和 equals 的区别

    基本数据类型的话 == 比较数据,引用的话 == 比较地址;equals是个函数,可重写,以String为例,它重写了equals方法:先通过 == 比较引用,若不一样则对比字符串是否一致。

    详情可参考:https://mp.weixin.qq.com/s/2rTxX3Co-2bDR16wZE-WwQ

    集合类相关

    1、ArrayList 和 LinkedList的区别

    前者是基于数组,支持随即查找,查询效率高;后者基于链表,插入和删除更快。

    2、HashSet 的数据结构

    底层通过HashMap实现,add() 进去的数其实是放在 key 的位置上,value 是一个常量。

    3、HashMap数据结构

    HashMap 1.7和1.8不同,1.7使用数组加链表,使用头插法,容易造成环形链表死循环(参考:https://www.iteye.com/blog/zl378837964-2357460);1.8使用数组加链表加红黑树,使用尾插法

    4、HashMap的线程安全

    线程不安全,多线程情况可以使用 ConcurrentHashMap,ConcurrentHashMap 1.7使用分段锁;1.8 使用CAS+synchronized ,效率更高

    多线程相关

    1、Java 多线程有几种状态

    new、runnable、blocked、waiting、time-waiting、terminated

    2、run()和start()

    run() 一般写逻辑处理的代码;start() 是使一个线程处于就绪状态

    3、Java多线程实现

    (1)实现Runnable接口;(2)继承Thread类;(3)实现Callable接口;(4)线程池创建

    4、线程池参数

    corePoolSize:核心线程数;maxPoolSize:最大线程数;keepAliveTime和unit:多余线程存活时间;workQueue:任务队列;threadFactory:线程工厂;handler:拒绝策略

    它的过程:有几个任务同时过来,当不超过corePoolSize,则由核心线程处理;再来几个任务,往workQueue放,如果大于workQueue,启动其他线程;当任务数 > maxPoolSize + workQueue,则使用handler拒绝策略拒绝任务。

    数据库相关

    1、inner join 和 where 的区别

    where 会产生笛卡尔积,临时表太大

    2、平时怎么用索引

    将经常查询的、where中用到的、排序用到的字段建立索引;在写查询语句的时候,通过 explain 执行计划查看索引效果,进行修改优化

    3、一张表最多建几个索引?

    16个。索引会存在磁盘上,若太多的话占用磁盘大;插入操作受到影响。

    Spring相关

    1、AOP

    AOP基于动态代理实现了面向切面编程,一般用于事务和日志;动态代理主要有两种:JDK自带的基于接口的动态代理的Proxy、CGLib基于子类的动态代理

    2、IoC

    控制反转,将创建和管理对象的控制权交给Spring容易,降低耦合

    3、SpringMVC的流程

    (1)客户端的请求给到 DispatcherServlet ;

    (2)DispatcherServlet 调用 HandlerMapper,查询 HandlerAdapter 并给 DispatcherServlet;

    (3)DispatcherServlet 调用 HandlerAdapter 适配相应的 Controller;

    (4)Controller 处理完业务逻辑返回 ModleAndView 给 DispatcherServlet;

    (5)DispatcherServlet 将 ModleAndView 给 ViewResolver ,解析生成 View ;

    (6)DispatcherServlet 进行渲染。

    Linux相关

    1、查看进程

    ps(静态查看)、top(实时更新)

    网络相关

    这一块不多说,问的最多的就是 TCP、UDP、HTTP 等,参考 https://www.cnblogs.com/lyuzt/p/12390651.html

    如果觉得对你有帮助,可以关注公众号:Max的日常操作,或扫码关注

                              

  • 相关阅读:
    前端vscode比较好用的保存自动格式化settings.json配置
    jvm 调优
    ElasticSearch CPU和内存占用高的优化记录
    nginx 安装部署
    Windows 下Redis的部署 及key 过期事件
    Docker 部署应用过程记录
    实现鼠标悬停,div勾画div边框的动画
    html+jquery实现简单图片裁剪
    css+jquery 实现图片局部放大预览
    flex 布局 实现电商网页菜单的多级分类展示
  • 原文地址:https://www.cnblogs.com/lyuzt/p/12485847.html
Copyright © 2020-2023  润新知