热门标签 | 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#
);


推荐阅读
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • java线程池的实现原理源码分析
    这篇文章主要介绍“java线程池的实现原理源码分析”,在日常操作中,相信很多人在java线程池的实现原理源码分析问题上存在疑惑,小编查阅了各式资 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 系列目录Guava1:概览Guava2:Basicutilities基本工具Guava3:集合CollectionsGuava4:GuavacacheGuava6:Concurre ... [详细]
  • Java多线程_Future设计模式
       Future模式的核心:去除了主函数的等待时间,并使得原本需要等待的时间段可以用于处理其他业务逻辑。  Future模式有点类似于商品订单。在网上购物时,提交订单后,在收货的 ... [详细]
  • elasticsearch插件如何实现类
    这篇文章主要介绍“elasticsearch插件如何实现类”,在日常操作中,相信很多人在elasticsearch插件如何实现类问题上存在疑惑,小编查阅了各式资料 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • Python 多线程popen ping指定IP是否在线 判断连通
    Python多线程popen应用场景:有多台设备需要维护,周期短,重复度高;单台设备配备多个IP,需要经常确认网络是否通常;等等其他需要确 ... [详细]
  • 大家都知道,XTransfer是最新网红外贸收款方式,无论大中小型外贸公司,还是外贸SOHO,都可以通过XTransfer的外贸收款服务得到实惠。可是也总有一些朋友会有疑问,XTr ... [详细]
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社区 版权所有