热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

武汉光迅科技Java笔试题

1.Java中的override和overload的区别?override(重写):指子类继承父类,重写父类中的方法。overload(重载):指用一个类中,方法名相同,传参个数不




1.Java中的override和overload的区别?

override(重写):指子类继承父类,重写父类中的方法。

overload(重载):指用一个类中,方法名相同,传参个数不同、参数类型不同、传参顺序不同的方法,与方法返回类型无关。


2.什么是值传递什么是引用传递?

值传递:传递的是存储单元中的内容,而非地址或者引用!

引用传递:引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

Java中只有按值传递,没有按引用传递!


3.创建线程有几种方式?你喜欢哪一种,为什么?

创建线程有三种方法:

1.继承Thread类,重写run方法;

2.实现Runnable的方法;

3.使用ExecutorService、Callable、Future实现有返回结果的多线程;

但多数时间我们实现Runnable,因为java支持多实现,但不支持多继承。


4.ES是什么?简述他的优点。

ES(Elasticsearch)是一个基于Lucene的搜索服务器。

ES是分布式的不需要其他组件,分发是实时的;

ES实时搜索非常快;

ES处理多租户不需要特殊配置,学习成本较低;


5.简述你所知道的mysql的分库分表方案?


垂直拆分

垂直分表

也就是“大表拆小表”,基于列字段进行的。一般是表中的字段较多,将不常用的, 数据较大,长度较长(比如text类型字段)的拆分到“扩展表“。一般是针对那种几百列的大表,也避免查询时,数据量太大造成的“跨页”问题。

垂直分库

垂直分库针对的是一个系统中的不同业务进行拆分,比如用户User一个库,商品Producet一个库,订单Order一个库。 切分后,要放在多个服务器上,而不是一个服务器上。为什么? 我们想象一下,一个购物网站对外提供服务,会有用户,商品,订单等的CRUD。没拆分之前, 全部都是落到单一的库上的,这会让数据库的单库处理能力成为瓶颈。按垂直分库后,如果还是放在一个数据库服务器上, 随着用户量增大,这会让单个数据库的处理能力成为瓶颈,还有单个服务器的磁盘空间,内存,tps等非常吃紧。 所以我们要拆分到多个服务器上,这样上面的问题都解决了,以后也不会面对单机资源问题。


水平拆分

水平分表

针对数据量巨大的单张表(比如订单表),按照某种规则(RANGE,HASH取模等),切分到多张表里面去。 但是这些表还是在同一个库中,所以库级别的数据库操作还是有IO瓶颈。不建议采用。

水平分库分表

将单张表的数据切分到多个服务器上去,每个服务器具有相应的库与表,只是表中数据集合不同。 水平分库分表能够有效的缓解单机和单库的性能瓶颈和压力,突破IO、连接数、硬件资源等的瓶颈。

水平分库分表切分规则

RANGE

从0到10000一个表,10001到20000一个表;

HASH取模

一个商场系统,一般都是将用户,订单作为主表,然后将和它们相关的作为附表,这样不会造成跨库事务之类的问题。 取用户id,然后hash取模,分配到不同的数据库上。

地理区域

比如按照华东,华南,华北这样来区分业务,七牛云应该就是如此。

时间

按照时间切分,就是将6个月前,甚至一年前的数据切出去放到另外的一张表,因为随着时间流逝,这些表的数据 被查询的概率变小,所以没必要和“热数据”放在一起,这个也是“冷热数据分离”。


6.简述shrio实现权限控制的原理。



  • 应用代码调用Subject(当前登录用户)控制期限

  • Subject在shiro框架内部调用Shiro在shiro框架里调用Shiro SecurityManager 安全管理器

  • 安全管理器调用 Realm (程序和安全数据连接器 )。

  • Subject如果要进行任何操作都西亚哟调用安全管理(底层自动实现),而安全管理器会调用指定的Realms对象,来连接安全数据。

  • Realms用来编写安全代码逻辑和访问安全数据,是连接程序和安全数据的桥梁。


7.IOC和AOP分别是什么,原理呢?

IOC:控制反转,一种思想,将创建Bean的工作交给框架去完成;

实例化一个 java 对象有三种方式:使用类构造器,使用静态工厂方法,使用实例工厂方法,当使用 spring 时我们就不需要关心通过何种方式实例化一个对象,spring 通过控制反转机制自动为我们实例化一个 对象。

AOP:面向切面编程,一种思想,将服务,模块,方法,想象成一个个的切面,在前面的前后进行一些操作,,权限验证,事物管理,记录日志等公用操作处理的过程就是面向切面编程的思想。


8.三根不均匀的绳子,每根绳子烧完是一个小时,如何实现计时一个小时十五分钟。

第一根和第二根同时点,第一根点一头,第二根点两头

在第二根燃完后(30分钟),点燃第一根的另一头

前两根燃完后(15分钟),点燃第三根的两头

全部燃完后(30分钟)

一共就是1小时15分钟.


9.数据库:

Student(S#,Sname,Sage,Ssex)学生表,

Course(C#,Cname,T#)课程表,

SC(S#,C#,score)成绩表,

Teacher(T#,Tname)教师表。


问题


1.查询“001”课程比“002”课程成绩高的所有学生的学号;

select a.S#
from
(select s#,score from SC where C#='001')a,
(select s#,score,from SC where C#='002') b

where
a.score>b.score
and
a.s#=b.s#;

2、查询平均成绩大于60分的同学的学号和平均成绩;

select S#,avg(score)
from sc
group by S#
having avg(score) >60;

3、查询所有同学的学号、姓名、选课数、总成绩;

select Student.S#,Student.Sname,count(SC.C#),sum(score)
from Student
left Outer join SC
on
Student.S#=SC.S#
group by Student.S#,Sname

4、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分

SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分
FROM SC L ,SC AS R
WHERE L.C# = R.C# and
L.score = (SELECT MAX(IL.score)
FROM SC AS IL,Student AS IM
WHERE L.C# = IL.C# and IM.S#=IL.S#
GROUP BY IL.C#)
AND
R.Score = (SELECT MIN(IR.score)
FROM SC AS IR
WHERE R.C# = IR.C#
GROUP BY IR.C#
);


推荐阅读
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • java线程池的实现原理源码分析
    这篇文章主要介绍“java线程池的实现原理源码分析”,在日常操作中,相信很多人在java线程池的实现原理源码分析问题上存在疑惑,小编查阅了各式资 ... [详细]
  • Explain如何助力SQL语句的优化及其分析方法
    本文介绍了Explain如何助力SQL语句的优化以及分析方法。Explain是一个数据库SQL语句的模拟器,通过对SQL语句的模拟返回一个性能分析表,从而帮助工程师了解程序运行缓慢的原因。文章还介绍了Explain运行方法以及如何分析Explain表格中各个字段的含义。MySQL 5.5开始支持Explain功能,但仅限于select语句,而MySQL 5.7逐渐支持对update、delete和insert语句的模拟和分析。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 本文讨论了如何使用GStreamer来删除H264格式视频文件中的中间部分,而不需要进行重编码。作者提出了使用gst_element_seek(...)函数来实现这个目标的思路,并提到遇到了一个解决不了的BUG。文章还列举了8个解决方案,希望能够得到更好的思路。 ... [详细]
  • 部署solr建立nutch索引
    2019独角兽企业重金招聘Python工程师标准接着上篇nutch1.4的部署应用,我们来部署一下solr,solr是对lucene进行了封装的企 ... [详细]
  • java多线程获取线程返回结果
    我们在使用java多线程编写相关业务代码时,往往有这样一种情况,某个线程依赖于其他线程执行结果。也就是说,我们需要在一个线程中获取另一个线程的信息。可以分为两种情况,一种是轮询,一 ... [详细]
  • python中不同的异常类型,如何进行异常处理?
    一、错误与异常程序中难免会出现错误,而错误分为两种1.语法错误:(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正)2.逻辑错误:(逻辑错误),比如用户输入 ... [详细]
  • 科技情报开发与经济文章编号:1005-603ÿ ... [详细]
  • camel_使用Camel在来自不同来源的Solr中索引数据
    camelApacheSolr是建立在Lucene之上的“流行的,快速的开源企业搜索平台”。为了进行搜索(并查找结果),通常需要从不同的源(例如内容管理 ... [详细]
  • ES基本原理名词解释In-memorybuffer:ES内存缓冲区,新建的document写入的地方document:索引和搜索的 ... [详细]
  • 本文整理了Java中proj.zoie.impl.indexing.ZoieConfig.setMaxBatchSize()方法的一些代码示例,展示了Zoi ... [详细]
author-avatar
幸福璞子难_197
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有