培森的Blog Java Java试题

Java试题

1.java 基础概念、集合操作、IO操作、线程操作、NIO操作等 2.SpringMVC、AOP、…

1.java 基础概念、集合操作、IO操作、线程操作、NIO操作等
2.SpringMVC、AOP、 IOC 、常用注解、事务管理、hibernate、Mybatis配置、Mybatis动态sql
    Spring3 MVC的优点:<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    1、Spring3 MVC使用简单,学习成本低。学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。
    2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)
    3、Spring3 MVC的灵活是你无法想像的,Spring框架的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。
    Struts2的众多优点:
    1、老牌的知名框架,从Struts1起积累了大量用户群体。技术文档丰富。
    2、其它方面略...   (呵呵,是不是不公平?)
    核心类与接口:<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    DispatcherServlet   -- 前置控制器 ||||||||||||||||||||
    HandlerMapping接口 -- 处理请求的映射
    HandlerMapping接口的实现类:
    SimpleUrlHandlerMapping  通过配置文件,把一个URL映射到Controller
    DefaultAnnotationHandlerMapping  通过注解,把一个URL映射到Controller类上
    HandlerAdapter接口 -- 处理请求的映射 ||||||||||||||||||||
    AnnotationMethodHandlerAdapter类,通过注解,把一个URL映射到Controller类的方法上
    Controller接口 -- 控制器 ||||||||||||||||||||
    由于我们使用了@Controller注解,添加了@Controller注解注解的类就可以担任控制器(Action)的职责, 所以我们并没有用到这个接口。
    HandlerInterceptor 接口--拦截器 ||||||||||||||||||||
    无图,我们自己实现这个接口,来完成拦截的器的工作。
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    AOP 面向切面
    @Component
    @Aspect
    public class Audience {
      @Before("execution(* com.lin.controller.LoginController.test(..))")
      public void before(){
          RequestAttributes ra = RequestContextHolder.getRequestAttributes();
            ServletRequestAttributes sra = (ServletRequestAttributes) ra;
            HttpServletRequest request = sra.getRequest();  //获取request 可以从中获取参数或cookie
               System.out.println("我是切面");
      }       
    }
    IOC(控制反转和依赖注入)
    控制反转[Ioc]:就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。
    控制反转是一种思想,其具体实现就是依赖注入!
    依赖注入[DI]:组件之间的依赖关系由容器在运行期决定 ,由容器动态的将某种依赖关系注入到组件之中
    实验1:
    <!--实验1:通过IOC容器创建对象,并为属性赋值 -->
    <!-- 需要由IOC容器创建对象的全类名 -->
    <!-- 为了便于从IOC容器中获取book对象,声明一个一个唯一的id值 -->
    <bean id="book01" class="com.neuedu.spring.bean.Book">
        <property name="bookId" value="2001"></property>
        <property name="bookName" value="叁国演义"></property>
        <property name="author" value="罗贯中"></property>
        <property name="price" value="22.5"></property>
    </bean>
    @Test
    public void test01() {
        //1.创建IOC容器自身的对象
        //指定配置文件以类路径为基准的配置文件名
        ApplicationContext ioc= new ClassPathXmlApplicationContext("bean.xml");
        //2.从IOC容器中获取指定的对象
        Object bean = ioc.getBean("book01");
        System.out.println(bean);
    }
3.微服务框架(spingboot\spingcloud)
    ring 诞生时是 Java 企业版(Java Enterprise Edition,JEE,也称 J2EE)的 轻量级代替品。无需开发重量级的 Enterprise JavaBean(EJB),Spring 为企业级
    Java 开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java 对象(Plain Old Java Object,POJO)实现了 EJB 的功能。
    Spring Boot 主要目标是:
    l 为所有 Spring 的开发提供一个从根本上更快的入门体验
    l 开箱即用,但通过自己设置参数,即可快速摆脱这种方式。
    l 提供了一些大型项目中常见的非功能性特性,如内嵌服务器、安全、指标,健康检测、外部化配置等
    l 绝对没有代码生成,也无需 XML 配置。
    https://blog.csdn.net/m0_37106742/article/details/64438892
    最明显的特点是,让文件配置变的相当简单、让应用部署变的简单(SpringBoot内置服务器,并装备启动类代码),可以快速开启一个Web容器进行开发。
4.数据库(oracle、mysql)jdbc、sql、index、表分区等
    (1).表空间及分区表的概念
        表空间:
          是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间。
        分区表:
        当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。
    (2).表分区的具体作用
    Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外,分区还可以极大简化常见的管理任务,分区是构建千兆字节数据系统或超高可用性系统的关键工具。
    分区功能能够将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。每个分区有自己的名称,还可以选择自己的存储特性。从数据库管理员的角度来看,一个分区后的对象具有多个段,这些段既可进行集体管理,也可单独管理,这就使数据库管理员在管理分区后的对象时有相当大的灵活性。但是,从应用程序的角度来看,分区后的表与非分区表完全相同,使用 SQL DML 命令访问分区后的表时,无需任何修改。
    什么时候使用分区表:
    1、表的大小超过2GB。
    2、表中包含历史数据,新的数据被增加都新的分区中。
    (3).表分区的优缺点
    表分区有以下优点:
    1、改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。
    2、增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;
    3、维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;
    4、均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能。
5.Jquery选择器、Jquery事件
    1、在页面中选取所有<p>元素并隐藏所有<p>元素
    $('p').click(function(){
        $(this).hide();
    });
    2、id选择器,通过id选择指定的元素
    $('#a').click(function(){
        //选取第一个p元素
        $('p:first').hide();
    });
    3、class选择器
    $('#d').click(function(){
        $('.te').hide();
    });
    4、点击p段落触发
    $('p').click(function(){
        $(this).hide();
    });
    5、双击触发事件
    $('p').dblclick(function(){
        $(this).hide();
    });
    6、鼠标滑过触发事件
    $('#a').mouseenter(function(){
        alert('你的鼠标滑过id="a"的元素上');
    });
6.java8特性、新扩展的功能、JVM参数、设计模式
    1、Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。
    Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
    使用Lambda 表达式可以使代码变的更加简洁紧凑。
    public class Java8Tester {
        public static void main(String args[]) {
        Java8Tester tester = new Java8Tester();
        // 类型声明
        MathOperation addition = (int a, int b) -> a + b;
        // 不用类型声明
        MathOperation subtraction = (a, b) -> a - b;
        // 大括号中的返回语句
        MathOperation multiplication = (int a, int b) -> {
        return a * b;
        };
        // 没有大括号及返回语句
        MathOperation division = (int a, int b) -> a / b;
        System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
    2、变量作用域 lambda 表达式的局部变量可以不用声明为 final,但是必须不可被后面的代码修改(即隐性的具有final 的语义)
            在Lambda 表达式当中不允许声明一个与局部变量同名的参数或者局部变量。
    3、方法引用实例
        public class Java8Tester {
            public static void main(String args[]) {
                List names = new ArrayList();
                names.add("Google");
                names.add("Runoob");
                names.add("Taobao");
                names.add("Baidu");
                names.add("Sina");
                names.forEach(System.out::println);
            }
        }
        实例中我们将System.out::println 方法作为静态方法来引用。
7.大数据常用组件(hadoop、hive、hbase、spark、zookeeper)
8.常用开源项目,redis、activemq、mongdb
    启动 redis 客户端:
    启动 redis 客户端,打开终端并输入命令 redis-cli。该命令会连接本地的 redis 服务。
    $redis-cli
    redis 127.0.0.1:6379>
    redis 127.0.0.1:6379> PING
    PONG
    如果需要在远程 redis 服务上执行命令,同样我们使用的也是 redis-cli 命令。
    $ redis-cli -h host -p port -a password
    有时候会有中文乱码。
    要在 redis-cli 后面加上 --raw (redis-cli --raw)
9.linux常见命令
    ls -a 列出目录所有文件,包含以.开始的隐藏文件
    ls -A 列出除.及..的其它文件
    ls -r 反序排列
    ls -t 以文件修改时间排序
    ls -S 以文件大小排序
    ls -h 以易读大小显示
    ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
    按易读方式按时间反序排序,并显示文件详细信息 ls -lhrt
    按大小反序显示文件详细信息 ls -lrS
    列出当前目录中所有以“t”开头的目录的详细内容 ls -l t*
    列出文件绝对路径(不包含隐藏文件) ls | sed "s:^:`pwd`/:"
    列出文件绝对路径(包含隐藏文件) find $pwd -maxdepth 1 | xargs ls -ld
    查看当前路径 pwd
    查看软链接的实际路径 pwd -P
    将文件test.log重命名为test1.txt mv test.log test1.txt
    将文件log1.txt,log2.txt,log3.txt移动到根的test3目录中 mv llog1.txt log2.txt log3.txt /test3
    将文件file1改名为file2,如果file2已经存在,则询问是否覆盖 mv -i log1.txt log2.txt
    移动当前文件夹下的所有文件到上一级目录 mv * ../
    复制a.txt到test目录下,保持原文件时间,如果原文件存在提示是否覆盖 cp -ai a.txt test
    为a.txt建议一个链接(快捷方式)cp -s a.txt link_a.txt
    cat主要有叁大功能:
    1.一次显示整个文件:cat filename
    2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
    3.将几个文件合并为一个文件:cat file1 file2 > file -b对非空输出行号 -n输出所有行号

本文来自网络,不代表培森的Blog立场,转载请注明出处:https://blog.xupeisen.com/archives/109

作者: 培森

联系我们

联系我们

13262951234

在线咨询: QQ交谈

邮箱: admin@xupeisen.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部