测试一

  • 选择题(不定项,每题2分,共20分)

1.不能用来修饰interface的有( ACD )

A.private

B.public

C.protected

D.static

解答:ACD

修饰接口可以是public和默认

2.在关系数据库系统中,为了简化用户的查询操作,而又不增加数据的存储空间,常用的方法是创建( C )

A.表(table)

B.游标(cursor)

C.视图(view)

D.索引(index)

解析:数据库试图具有以下几个作用:简化用户操作;使用户能以多种角度看待同一数据;支持重构数据库的逻辑独立性;视图能够提供安全保护同时不增加数据的储存空间

3.下面有关SPRING的事务传播特性,说法错误的是?( B )

A.PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行

B.PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就抛出异常

C.PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起

D.PROPAGATION_NESTED:支持当前事务,新增Savepoint点,与当前事务同步提交或回滚

解析:Spring的API设计很不错,基本上根据英文翻译就能知道作用:Required:必须的。说明必须要有事物,没有就新建事物。supports:支持。说明仅仅是支持事务,没有事务就非事务方式执行。mandatory:强制的。说明一定要有事务,没有事务就抛出异常。required_new:必须新建事物。如果当前存在事物就挂起。not_supported:不支持事物,如果存在事物就挂起。never:绝不有事务。如果存在事物就抛出异常

4.下面有关struts1和struts2的区别,描述错误的是?(  B  )

A.Struts1要求Action类继承一个抽象基类。Struts 2 Action类可以实现一个Action接口

B.Struts1 Action对象为每一个请求产生一个实例。Struts2 Action是单例模式并且必须是线程安全的

C.Struts1 Action 依赖于Servlet API,Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试

D.Struts1 整合了JSTL,Struts2可以使用JSTL,但是也支持OGNL

解析:从action类上分析:
1.  Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。 
   2. Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。
从Servlet 依赖分析: 
   3. Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。 
   4. Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。
从action线程模式分析: 
   5. Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。 
   6. Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)

5.以下关于子查询和Group By的描述正确的有(   A B C D   )

A.没有出现在Group By子句后面的列名不能出现在Select字句非合计函数表达式中

B.在Select子句的后面,只能有两种类型的表达式,一种是合计函数,一种是出现在Group By子句后面的列名

C.不能在子查询中包含Order By 子句

D.如果子查询的结果为空,那么外查询条件始终不会成立

解析:group by:在select子句中只能有两种类型表达式,一种是合计函数,一种是出现在group by子句后面的列名,没有出现在group by子句后面的列名不可以出现在select 子句的非合计函数表达式中。如果在select语句中没有出现group by子句,则不能在select子句中同时出现单个列名和合计函数的混合现象。如果要限制分组中的数据,则可以使用having子句而不能使用where子句

6.以下选项属于进程间通信的是(   ABD   )

A.管道

B.套接字

C.内存

D.消息队列

解析:进程中的几种通信方式:

1)管道:管道是一种半双工的通信方式,数据只能单向流动。而且只能在具有血缘关系(父子进程之间)的的进程间使用。

2)信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问

3)消息队列:消息队列是由消息组成的链表,存放在内核中,并由消息队列标识符标识

4)信号:信号是有一种比较复杂的通信方式,用于通知接收进程某一事件已经发生

5)共享内存:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问

6)套接字:即Socket,是一种通信机制,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行

7.下面程序运行之后,x的值是( A  )

void swap(int a, int b)

{

int t = a;

a = b;

b = t;

}

int x = 2;

int y = 3;

swap(x, y);

A. 2           B.3          C.5          D.6

解析:值参数传递不能实现交换两个整数,所以X最后还是2,想要实现两个值交换可以已数组的形式实现

8.看以下代码:

文件名称:forward.jsp

  <html>

<head><title> 跳转  </title> </head>

<body>

<jsp:forward page="index.htm"/>

</body>

</html>

如果运行以上jsp文件,地址栏的内容为(  A  )

A.http://127.0.0.1:8080/myjsp/forward.jsp

B.http://127.0.0.1:8080/myjsp/index.jsp

C.http://127.0.0.1:8080/myjsp/index.htm

D.http://127.0.0.1:8080/myjsp/forward.htm

解析:

forward和redirect是最常问的两个问题:

forward,服务器获取跳转页面内容传给用户,用户地址栏不变

redirect,是服务器向用户发送转向的地址,redirect后地址栏变成新的地址

因此这个题是A

redirect:请求重定向:客户端行为,本质上为2次请求,地址栏改变,前一次请求对象消失。举例:你去银行办事(forward.jsp),结果告诉你少带了东西,你得先去警察局办(index.html)临时身份证,这时你就会走出银行,自己前往警察局,地址栏变为index.html.

forward:请求转发:服务器行为,地址栏不变。举例:你把钱包落在出租车上,你去警察局(forward.jsp)报案,警察局说钱包落在某某公司的出租车上(index.html),这时你不用亲自去找某某公司的出租车,警察局让出租车自己给你送来,你只要在警察局等就行。所以地址栏不变,依然为forward.jsp

9.下列说法错误的有(  ACD  )

A. 在类方法中可用this来调用本类的类方法

B. 在类方法中调用本类的类方法时可直接调用

C. 在类方法中只能调用本类中的类方法

D. 在类方法中绝对不能调用实例方法

解答:ACD

A.在类方法中不能使用this关键字

C.在类方法中可以调用其它类中的类方法

D.在类方法中可以通过实例化对象调用实例方法

10.下面能让线程停止执行的有(多选)(  ABDEF  )

A. sleep();

B. stop();

C. notify();

D. synchronized();

E. yield();

F. wait();

G. notifyAll();

解答:ABDEF

sleep:导致此线程暂停执行指定时间

stop: 这个方法将终止所有未结束的方法,包括run方法。

synchronized():对象锁

yield:当前正在被服务的线程可能觉得cpu的服务质量不够好,于是提前退出,这就是yield。

wait:当前正在被服务的线程需要睡一会,醒来后继续被服务

  • 填空题(每题2分,共20分)

1 Java语言的各种数据类型之间提供两种转换,自动转换和强制转换
2 Java 中使用关键字定义抽象类abstract
3 java方法中参数传递的原则有2种,一种是按值传递,另一种是按引用传递
4 用static修饰的方法,称为静态方法。它们不是对象的方法,而是整个类的方法。静态方法只能处理用关键字static  修饰的数据。

5 在Java中有一种叫作构造函数特殊方法,我们在程序中用它来对类的对象成员进行初始化。
6 被关键字___final_______修饰的方法是不能被当前类的子类重新定义的方法
7 Java程序中整数常量默认是int类型,浮点数默认的是double类型 
8 main方法的声明格式 public staticvoid main(String[] args)
9 Java中所有类都是java.lang.object的子类。
10 定义接口的关键字是interface

  • 简答题(每题5分,30分)

1.什么叫死锁,怎么解决死锁

死锁:有两个进程A和B,A持有资源a等待b资源,B持有资源b等待a资源,两个进程都在等待另一个资源的同时不释放资源,就形成死锁。

形成死锁的四个必要条件:

(1) 互斥条件:一个资源每次只能被一个进程使用。

(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

解决:

1.首先一个可行的做法是释放所有锁,回退,并且等待一段随机的时间后重试。这个和简单的加锁超时类似,不一样的是只有死锁已经发生了才回退,而不会是因为加锁的请求超时了。

2.回退和等待,但是如果有大量的线程竞争同一批锁,它们还是会重复地死锁(注:原因同超时类似,不能从根本上减轻竞争)。

3.一个更好的方案是给这些线程设置优先级,让一个(或几个)线程回退,剩下的线程就像没发生死锁一样继续保持着它们需要的锁。如果赋予这些线程的优先级是固定不变的,同一批线程总是会拥有更高的优先级。为避免这个问题,可以在死锁发生的时候设置随机的优先级。

2.什么是事务,事务的特性,什么叫ACID

  事务:逻辑单元内的一系列操作,要么全部完成执行,要么全部不执行。

事务的结果有两种:当事务中的所有步骤全部成功执行完成时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消之前到事务开始时的所有操作。

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。事务分为数据库级别的事务和应用程序级别的事务,数据库管理员处理的是数据库级别的事务,Java程序员处理的是应用程序级别的事务。Spring 事务管理分为 编程式事务管理 和 声明式事务管理 的两种方式。

    事务的四大特性(ACID):原子性(Atomicity)一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

3.Activiti和Shiro的作用

Shiro: 

      用户认证  登录   拦截器

资源授权    资源表示系统中所有的可访问的菜单

Activiti:

      解决多个任务人共同完成复杂的业务流。 他是一个业务框架

4.TCP和UDP协议的区别,什么是三次握手。

1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

所谓的“三次握手”:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。

为了提供可靠的传送,TCP在发送新的数据之前,以特定的顺序将数据包的序号,并需要这些包传送给目标机之后的确认消息。TCP总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到TCP。

5.多线程同步有几种方法。

多线程的实现方法有继承Thread类,实现Runnable接口,实现Callable接口。

同步可以使用Synchronized关键字,也可以使用可重入锁ReentrantLock,ThreadLocal同步机制也可以实现同步。

6.RPC服务和restful服务的区别(建议加深对rpc和restful的了解)

1、从本质区别上看,RPC是基于TCP实现的,RESTFUL是基于HTTP来实现的。

2、从传输速度上来看,因为HTTP封装的数据量更多所以数据传输量更大,所以RPC的传输速度是比RESTFUL更快的。

3、因为HTTP协议是各个框架都普遍支持的。在toC情况下,因为不知道情况来源的框架、数据形势是什么样的,所以在网关可以使用Restful利用http来接受。而在微服务内部的各模块之间因为各协议方案是公司内部自己定的,所以知道各种数据方式,可以使用TCP传输以使各模块之间的数据传输更快。所以可以网关和外界的数据传输使用RESTFUL,微服务内部的各模块之间使用RPC。

4、RESTFUL的API的设计上是面向资源的,对于同一资源的获取、传输、修改可以使用GET、POST、PUT来对同一个URL进行区别,而RPC通常把动词直接体现在URL上

  • 编程题(每题10分,共30)

1.题目描述

查找最晚入职员工的所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天(sqlite里面的注释为--,mysql为comment)

emp_no

birth_date

name

gender

hire_date

10008

1958-02-19

Kalloufi

M

1994-09-15

求:

(1).创建如上employee表,设置emp_no为主键(2分)

     CREATE TABLE `employee`  (`emp_no` int(11) NOT NULL,`birth_date` date NULL DEFAULT NULL,`name` varchar(16) NOT NULL,`gender` varchar(16) NOT NULL,`hire_date` date NULL DEFAULT NULL,PRIMARY KEY (`emp_no`))

(2)写SQL语句插入5条数据(2分)

INSERT INTO employee VALUES (1008,'1958-02-19','Kalloufi','M','1994-09-15');INSERT INTO employee VALUES (VALUE,'VALUE','VALUE','VALUE','VALUE');INSERT INTO employee VALUES (VALUE,'VALUE','VALUE','VALUE','VALUE');INSERT INTO employee VALUES (VALUE,'VALUE','VALUE','VALUE','VALUE');INSERT INTO employee VALUES (VALUE,'VALUE','VALUE','VALUE','VALUE');

(3)查找最晚入职员工的所有信息(3分)

SELECT *FROM employeeWHERE hire_date = (SELECT MAX(hire_date) FROM employee)

(4) 将编号为1008的员工改名为Mally(3分)

UPDATE employee SET NAME='Mally' WHERE emp_no=1008

2.输入某年某月某日,判断这一天是这一年的第几天?(10分)

  程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

参考代码:

import java.util.*;public class test {public static void main (String[]args){int day=0;int month=0;int year=0;int sum=0;int leap;   System.out.print("请输入年,月,日\n");   Scanner input = new Scanner(System.in);year=input.nextInt();month=input.nextInt();day=input.nextInt();switch(month) /*先计算某月以前月份的总天数*/  {   case 1:sum=0;break;   case 2:sum=31;break;   case 3:sum=59;break;   case 4:sum=90;break;   case 5:sum=120;break;   case 6:sum=151;break;   case 7:sum=181;break;   case 8:sum=212;break;   case 9:sum=243;break;   case 10:sum=273;break;   case 11:sum=304;break;   case 12:sum=334;break;   default:System.out.println("data error");break;}   sum=sum+day; /*再加上某天的天数*/  if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/  leap=1;   else  leap=0;   if(leap==1 && month>2)/*如果是闰年且月份大于2,总天数应该加一天*/  sum++;   System.out.println("It is the the day:"+sum);}}

3.题目描述本题知识点:二分法,10分

牛牛从小就有收集魔法卡的习惯,他最大的愿望就是能够集齐 k 种不同种类的魔法卡,现在有 n 张魔法卡,这 n 张魔法卡存在于一维坐标点上,
每张魔法卡可能属于某一种类。牛牛如果想收集魔法卡就需要从当前坐标点跳跃到另外一个魔法卡所在的坐标点,花费的代价是两个跳跃坐标点之间的距离差。

牛牛可以从任意的坐标点出发,牛牛想知道他集齐 k 种魔法卡所花费的最小代价是多少,如果集不齐 k 种魔法卡,输出-1。

第一行输入两个整数 n,k, 分别表示魔法卡的个数和种类个数。
接下来有n行,每行两个数x,y 分别表示属于哪一种魔法卡和魔法卡所在的坐标

示例1

输入

7,3,[[0,1],[0,2],[1,5],[1,1],[0,7],[2,8],[1,3]]

输出

3

说明

样例一:牛牛从坐标点5出发,经过7、8两个点就收集了3张不同种类的魔法卡,达成成就。
所需代价 (7-5)+(8-7) = 3

备注:

其中 1<=n<=10^6, 1<=k<=50
0<=x<k, 0<=y<=1e9

参考代码:

import java.util.*;public class Solution {/*** @param n int整型* @param k int整型* @param card int整型二维数组* @return int整型*/public static int solve (int n, int k, int[][] card) {if (card == null || n < k) return -1;int minDistance = -1;Arrays.sort(card,(o1, o2) -> o1[1] == o2[1] ? o1[0] - o2[0] : o1[1] - o2[1]);//Utils.print2DArray(card);HashMap<Integer,Integer> map = new HashMap<>();int right = -1,left = 0;while (right < card.length - 1) {right++;map.put(card[right][0],map.getOrDefault(card[right][0],0) + 1);//left去重while (map.get(card[left][0]) > 1) {map.put(card[left][0],map.get(card[left][0]) - 1);if (map.get(card[left][0]) == 0) {map.remove(card[left][0]);}left++;}if (map.size() == k) {//已经凑齐int end = card[right][1],start = card[left][1];minDistance = minDistance == -1 ? end - start : Math.min(minDistance,end - start);}}return minDistance;}}

java笔试题(题目+解析)相关推荐

  1. 文思海辉笔试题目java_2013文思海辉java笔试题(最新版带答案).doc

    2013文思海辉java笔试题(最新版带答案).doc 笔试题一.选择题1.关于Java类的加载过程,下面哪些描述是正确的(B)A.在Java中,有四种类型的类加载器:BootStrapClassLo ...

  2. 精选30道Java笔试题解答

    精选30道Java笔试题解答       都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进 ...

  3. java笔试题_Java面试才到笔试就没有然后了?快来签收,高频笔试57题及解答

    前言 很多人面试之前,可能没有在互联网公司工作过或者说工作过但年头较短,不知道互联网公司技术面试都会问哪些问题? 再加上可能自己准备也不充分,去面试没几个回合就被面试官几个问题打蒙了,甚至笔试都过不了 ...

  4. java笔试题分类集锦

    合格的java工程师仅仅要有技术,还要懂得产品才能少修改,懂得测试要求,才能一次通过,懂得运维问题才能减少后期维.这些大方向体现在设计模式,程序架构,小方面就是语言的准确有效性,比如effective ...

  5. 最新百度 阿里 华为 腾讯 谷歌面试笔试题及解析

    最新百度 阿里 华为 腾讯 谷歌面试笔试题及解析 8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的 i .每次从通里面拿 ...

  6. 2018科大讯飞的Java笔试题附带参考答案

    分享一下自己做过的科大讯飞的Java笔试题,题量有点大哦~(附带参考答案) 单选题 1.下列关于继承的描述错误的是(  ) A.  在Java中允许定义一个父类的引用,指向子类对象 B.  在Java ...

  7. 贵港java_贵港人才网:经典java笔试题及答案分享

    经典java笔试题及谜底,共享与参考: 1.Anonymous Inner Class (匿名里面类) 是否能够extends(秉承)别的类,是否能够implements(完成)interface(接 ...

  8. 大唐电信JAVA笔试题面试题

    为什么80%的码农都做不了架构师?>>>    大唐电信JAVA笔试题面试题 1.    描述一下public,protected,private,final关键字在Java中的用法 ...

  9. [转载] Java笔试题集锦

    参考链接: 关于Java中文件名和类名的误解 Java笔试题集锦 1.MVC的各个部分都有那些技术来实现?如何实现? 答:MVC是Model-View-Controller的简写."Mode ...

  10. 今天的Java笔试题

    今天面试做了一套Java笔试题,下面是我根据记忆,对题目进行的测试,我是把几个题目综合在一起进行测试的:          TestB.java代码: import java.util.*; clas ...

最新文章

  1. 什么是CUDA编程 统一计算架构
  2. 5.对象和面向对象3——类的定义
  3. Python3编码与转码
  4. java操练之求两数最大公约数的两种算法思路
  5. 回填用土好还是砂石料好_卫生间做回填好还是做架空好?这两者有哪些优缺点...
  6. Json数组列表中的数据分组排序、组内排序
  7. 矩形法求定积分的原理和实现
  8. C/C++获取指定网口的IP地址
  9. 楼下邻居总偷网,改密码也没用,过一会他们又能连上,该怎么办?
  10. 中国喷漆室保护膜市场趋势报告、技术动态创新及市场预测
  11. python语言翻译成汇编语言_计原 || 1计算机语言发展与计算机层次结构
  12. model 字段参数 choice
  13. 多语言在线翻译工具Translatium for Mac
  14. RouterOS利用(L2TP)实现异地组网
  15. 【图像去噪】基于马尔可夫随机场实现图像去噪附matlab代码
  16. 【工具分享】一个阿里出品的免费在线图表制作工具(ChartCube 图表魔方)
  17. 【Android】【MTK】MTK系统启动流程
  18. 技术网站 常用的技术网站
  19. Unity UGUI图集打包与动态使用(TexturePacker)
  20. Verilog实现序列信号发生器

热门文章

  1. Cool edit pro 2.1简体中文版下载
  2. 2019-11-29GPS干扰技术解析
  3. starup_stm32f10x_hd.s的作用
  4. 用RichEditableText做的一个代码编辑器
  5. db9针232接口波特率标准_DB9 公头母头引脚定义及连接
  6. velocity参数重新赋值_Velocity 语法详解
  7. 最新VS2012破解 序列号,vs2012旗舰版密钥序列号【收藏】
  8. 从Tiny-4412开箱到启动Linux内核
  9. python万年历代码带解释_带闹钟的单片机万年历代码说明(详细注释)
  10. koa2 mysql增删改查_使用nodejs-koa2-mysql-sequelize-jwt实现登录注册,文章增删改查接口...