• Java面试题(外包公司)


    来深圳发展呢,开始了面试之旅,年底啦,可能机会并不多,本来自己也是个小菜鸟。听说学Java的女生很少,我就去碰碰运气啦。

    2019年1月8号下午去哒

    这次面试去了一家外包公司,人事还是比较和气哒,是个漂亮的小姐姐,没有笔试,就直接去所谓的经理那里啦。

    大概问了我这几个问题

    一、SpringMVC的执行流程?

    1、客户端将请求提交给DispatcherServlet

    2、DispatcherServlet查询一个或多个HanderMapping,找到处理请求的的Controller

    3、DispatcherServlet将请求提交给Controller

    4、Controller调用逻辑处理后,返回相应的ModelAndView

    5、DispatcherServlet查询一个或多个ViewResolver视图解析器,找到ModelAndView指定的视图

    6、视图解析器渲染后返回到客户端

    二、AOP原理

    aop 面向切面编程 其底层原理就是动态代理,就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对已有方法进行增强。

    三、SpringBoot好处

    使用Java或Groovy开发基于Spring的应用程序非常容易。

    减少了大量的开发时间并提高了生产力。避免了编写大量的样板代码,注释和XML配置。

    Spring Boot应用程序与其Spring生态系统集成非常容易。

    遵循“自用默认配置”方法,以减少开发工作量。提供嵌入式HTTP服务器,如Tomcat,Jetty等,以开发和测试Web应用程序非常容易。

    提供了许多插件来开发和测试Spring启动应用程序非常容易使用构建工具,如Maven和Gradle。

    提供了许多插件,以便与嵌入式和内存数据库工作非常容易。

    四、项目中常用注解

    @Autowired -自动装配

    @Component -支持自动装配

    @Service -Service层实现

    @Repository - DAO层实现

    @Controller -Web层实现

    五、Shiro框架重要组件

    1、Subject - 本质就是当前访问用户的抽象描述

    2、SecurityManager - Shiro架构中的核心组件,通过它可以协调其他组件完成用户认证和授权

    3、Realm - 定义了访问数据的方式,用来连接不同的数据源

    六、Redis支持的数据类型

    string 、 list 、 set 、zset 、hash

    七、Linux常用命令,启动TomCat命令

    ls - 查看目录中文件

    pwd - 显示工作路径

    yum - list - 列出当前系统中安装的所有包

    yum clean all - 删除所有缓存的包和头文件

    date - 显示日期

    ./startup.sh - 启动TomCat

    八、Mybatis分页怎么实现

    1、项目搭建完成后,引入pagehelper依赖

    2、在Mybatis.xml里面配置拦截器插件

    3、在mapper文件添加sql

    4、dao添加对用方法(@Param)

    5、Service添加分页查询方法,并实现实现类

    九、SpringBoot怎么修改修改端口

    在applicatoin.properties配置文件加入server.port = 修改的端口号

    十、简单谈谈单例模式

    单例模式是最Java中简单的设计模式之一,属于创建型模式。模式提供一个单一的类,该类负责自己创建对象,并提供唯一的一个访问方式

    单例模式分为懒汉式和饿汉式,懒汉式在用到的时候才会去创建单例对象。饿汉式在程序启动被加载时,单例模式就已经被创建。

    十一、HashMap和Hashtable区别

    - HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口

    - 主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高Hashtable

    - HashMap允许将null作为一个entry的key或者value,而Hashtable不允许

    - 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是

    十二、创建线程方式,有什么区别

    第一种方式:使用Runnable接口创建线程

    第二种方式:直接继承Thread类创建对象

    使用Runnable接口创建线程

    1.可以将CPU,代码和数据分开,形成清晰的模型

    2.线程体run()方法所在的类可以从其它类中继承一些有用的属性和方法

    3.有利于保持程序的设计风格一致

    直接继承Thread类创建对象

    1.Thread子类无法再从其它类继承(java语言单继承)。

    2.编写简单,run()方法的当前对象就是线程对象,可直接操作。

    嗯嗯,记得就这些了,还有一些项目相关的问题就不描述了。问的还是比较基础的,可能不想怼我吧。

  • 相关阅读:
    【SpringCloud】02-服务注册与发现-Zookeeper
    人工智能学习相关笔记
    Lepton 无损压缩原理及性能分析
    E语言基本特征码/时钟反调试/窗体push大法
    fail-safe 机制与 fail-fast 机制
    eBay买家号注册下单容易死号?是什么原因导致?
    《QEMU/KVM源码分析与应用》读书笔记3 —— 第一章 QEMU与KVM概述
    Qt窗口无标题栏拖动放大
    Vsftp安装配置(超详细版)
    2023年中国负极材料分类、产量及市场规模分析[图]
  • 原文地址:https://blog.csdn.net/m0_67391401/article/details/126741891