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


推荐阅读
  • 构建高性能Feed流系统的设计指南
    随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
  • Golang与微服务架构:构建高效微服务
    本文探讨了Golang在微服务架构中的应用,包括Golang的基本概念、微服务开发的优势、常用开发工具以及具体实践案例。 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 深入探讨:Actor模型如何解决并发与分布式计算难题
    在现代软件开发中,高并发和分布式系统的设计面临着诸多挑战。本文基于Akka最新文档,详细探讨了Actor模型如何有效地解决这些挑战,并提供了对并发和分布式计算的新视角。 ... [详细]
  • 构建Python自助式数据查询系统
    在现代数据密集型环境中,业务团队频繁需要从数据库中提取特定信息。为了提高效率并减少IT部门的工作负担,本文探讨了一种利用Python语言实现的自助数据查询工具的设计与实现。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 本文简要介绍了如何使用 Python Elasticsearch DSL 进行基本和高级查询,包括连接 Elasticsearch、执行简单和复杂查询、聚合、排序及分页等。 ... [详细]
  • 本文详细介绍了Objective-C中的面向对象编程概念,重点探讨了类的定义、方法的实现、对象的创建与销毁等内容,旨在帮助开发者更好地理解和应用Objective-C的面向对象特性。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • 一家位于长沙的知名网络安全企业,现面向全国诚聘高级后端开发工程师,特别欢迎具有一线城市经验的技术精英回归故乡,共创辉煌。 ... [详细]
  • 酷家乐 Serverless FaaS 产品实践探索
    本文探讨了酷家乐在 Serverless FaaS 领域的实践与经验,重点介绍了 FaaS 平台的构建、业务收益及未来发展方向。 ... [详细]
  • 本文详细介绍了PHP中的回调函数及其多种实现方式,包括函数字符串、匿名函数、类静态方法和类方法。同时,探讨了闭包的概念及其在PHP中的应用,通过实例展示了如何利用闭包访问外部变量。 ... [详细]
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社区 版权所有