汇财金服面试题

     汇财金服面试题


一.选择题(不定项选择)

1. java中,下列等价于“a不等于0b不等于0”的条件表达式有___

A.!a==0|| !b==0

B.!(a==0&&b==0)

C.!(a==0||b==0)

D.a!=0&&b!=0

2. 交易系统中用于记录金额的变量可以使用___

AInteger  B.Long  C.Double  D.BigDecimal

3. 如果将选项中的函数分别加入下面的类,那些是合法()

public class Test1 {

public float aMethod(float a, float b)

{return 0.0;}

}

 

A.public int aMethod(int a, int b)

{return 0;}

B.public int aMethod(float a, float b)

{return 0.0;}

C.public float aMethod(float a, float b) throws Exception{return 0.0;}

D.private int aMethod(float c, float b)

{return 0.0;}

E.private float aMethod(float a, float b,int c)

{return 0.0;}

简答题:

1. 任选其中一题作答,写出对应的命令行指令(10points)

问题一:如何查看一台Linux服务器当前的系统资源使用情况?需要查看CPU,内存,硬盘使用情况,如何将查询结果输入到某文件夹

vmstat可以显示如CPU使用,内存使用,虚拟内存使用等,iostat可以显示磁盘的工作负载,mpstat可以显示CPU的负载情况。
当然如果要求不高,也可以使用top、uptime等工具,比较简单。

查看内存的命令: free  查看内存详细信息可以用 cat /proc/meminfo
查看cpu使用情况可以用:ps -加参数

还可以用 top 查看cpu型号信息可以用 cat /proc/cpuinfo.

Ls  >>文件夹路径/文件名

例如 

ls  >>/tmp/1.txt

问题二:假如一台Linux服务器中正在运行Tomcat服务,如何用Linux指令来查询当前正在运行的Tomcat的服务?如何查询当前正在运行的Tomcat服务并调用Kill停止服务?

#看是否已经有tomcat在运行了
ps -ef |grep tomcat

#如果有,用kill;
kill -9 pid #pid 为相应的进程号

 

2. 给定下面的类,main方法执行时,请写出输出结果(15poins)

 

public class FinallyTest {
public static void main(String[] args) {
System.out.println("return: "+test());
}
private static int test() {
int i=1;
System.out.println("A");
try{
                  ______________
 
System.out.println("B");
return i;
}finally{
System.out.println("C");
}
}
}

当前横线区域代码为i=i+1;

A

B

C

return: 2

当前横线区域代码为i=i/0;

A

C

算术异常:meticException: / by zero

当前横线区域代码为System.exit(0);

 

A

 

3. 输出下面的运行结果

//-----------------------------------
public class Base {
public Base() {
method(100);
}
 
public void method(int i) {
System.out.println("Base: :mathod" + i);
}
}
//-----------------------------------
 
 public class Sub extends Base {
public Sub() {
super.method(70);
}
 
public void method(int j) {
System.out.println("Sub: :mathod" + j);
}
 
public void method(String s) {
System.out.println("I was passed" + s);
}
 
public static void main(String args[]) {
Base b1 = new Base();
Base b2 = new Sub();
}
 
}
//-----------------------------------

当运行Sub中的main函数时,输出会是什么?

Base: :mathod 100

Sub: :mathod 100

Base: :mathod 70

4.编程题:

 编写一个类实现接口,用于对投票进行计数,在生产环境中,vote(String name)函数会被上万线程序并发调用,要避免漏记.(25poins,如果空间不足,请写在最后一页)

import java.util.List;

public interface PollCounter {

/*

 * 被调用时,对此候选人计数加一

 * @param name 候选人名字 *

 *

 */

void vote(String name);

/*

 * 返回此候选人的当前计数

 * @param name 候选人名字

 */

long get(String name);

/**

 * 查看当前候选人的得票排名情况,按计数从高到低列出候选人

 * @return

 */

List<String> showResult();

}

 

5.数据库

根据附件的数据表EMP(employee),DEPT(depertment),回答下面的问题(20points)

写出sql:列出所有员工的记录,除了对应部门的LOC字段中包含”AN”字符串的以外,(例如本例中,部门为SAN FRANCISCO LOS  ANGELES的应该排除) 

select *from emp e where DEPTNO in(SELECT  d.deptno from dept d where d.loc not like "%AN%" ) 

写出SQL:按部门列出每个部门的员工数量,并按员工数量从高到低排列,取前三个数据

SELECT d.DNAME,COUNT(*)

from emp e inner JOIN dept d

ON d.DEPTNO=e.deptno

GROUP BY e.deptno ORDER BY COUNT(*) desc  LIMIT 3

EMP表包含上万条数据记录时,如何优化以上的业务查询?

一:如果有唯一字段的,创建主键和索引,提高查询主键字段效率;
二:如果这些数据是变更的,可以通过时间来创建分区;
三:如果部分老数据都是不需要的数据(不常用),可以定期将老数据备份到其他位置;
四:如果是查询的话,可以通过分页查询的形式进行,不要一次性读取过多数据。

 

 

 

 

 

 

1、 方案设计
  将一个子系统的数据,导入到另一个子系统中。假设:
①子系统A中有三张表:、、,分别有2000,10000和1000000条数据,将这些数据分别导入到子系统B的表、、中;
②子系统A使用SqlServer数据库,子系统B使用Oracle数据库;
③表的数据基本保持不变;中的数据在每月最后一天,会新增50条左右数据;每日都会有数据更新,但是更新量并不大(新增数据<1000条);
④数据导入子系统B后,三张表每日均会使用,但均无实时性要求;
⑤子系统B三张表均无初始数据;
⑥子系统B可以访问子系统A的数据。
请分别给出、、数据导入方案及其注意事项。

2、数据库设计
  场景:证券交易中,投资人每日会购买一定数量的股票,系统每日都会统计当天各投资人的交易信息(如:当日最高股票收盘价等)。
  股票信息:股票名称,发行人
  投资人:投资人名称,投资账户
  ①请根据该场景,设计对应数据库表。注:不需详细表结构,E-R图等示意即可;
  ②假设当日的交易信息中,有对应股票的收盘价信息。请写出SQL语句(可以写多条):当日交易记录条数超过5笔的股票发行人名称和股票最高收盘价。

表结构如下:
CREATE  TABLE  user (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(255) DEFAULT NULL,
password varchar(255) DEFAULT NULL,
email varchar(255) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='投资人表';
CREATE  TABLE  stock (
id bigint(20) NOT NULL AUTO_INCREMENT,
name varchar(255) DEFAULT '' COMMENT '股票名',
publisher varchar(255) DEFAULT '' COMMENT '发行人',
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='股票表';
CREATE  TABLE  stock_deal (
id bigint(20) NOT NULL AUTO_INCREMENT,
stock_id bigint(20) NOT NULL,
type int(11) NOT NULL COMMENT '1:买入,2:卖出',
user_id bigint(20) NOT NULL,
created_time datetime DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='股票交易表';
CREATE  TABLE stock_detail (
id bigint(20) NOT NULL AUTO_INCREMENT,
stock_id bigint(20) NOT NULL,
opening_price double(10,2) DEFAULT NULL,
closing_price double(10,2) DEFAULT NULL,
created_time datetime DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='股票详情表';
 

SELECT  s.id,    s.publisher,   sd.closing_price
FROM    stock s
LEFT JOIN stock_detail sd ON sd.stock_id = s.id
WHERE    s.id IN (
SELECT
a.stock_id
FROM
(
SELECT
stock_id,
count(stock_id) AS num
FROM
stock_deal
WHERE
created_time BETWEEN DATE_FORMAT(now(), '%Y-%m-%d 00:00:00')
AND DATE_FORMAT(now(), '%Y-%m-%d 23:59:59')
) a
WHERE
a.num > 5
);
 
SELECT
s.id,
s.publisher,
sd.closing_price
FROM
stock s
LEFT JOIN stock_detail sd ON sd.stock_id = s.id
LEFT JOIN (
SELECT
stock_id,
count(stock_id) AS num
FROM
stock_deal
WHERE
created_time BETWEEN DATE_FORMAT(now(), '%Y-%m-%d 00:00:00')
AND DATE_FORMAT(now(), '%Y-%m-%d 23:59:59')
) a ON a.stock_id = s.id
WHERE
a.num > 5;

 

面试部分提问:

账户和密码是如何通过服务器实现的?账户密码通过加密存在于数据库表中,通过cookiesession实现的,session存在于服务器,所以保证的密码的安全性!

window.onbeforeunload(){session_destory();};

判断浏览器是否关闭,关闭则清除session

 

 

附件:

EMP表:

NAME                                   NULL?                                    Type

-----------                            --------------                                 -----------

EMPNO                                NOT NULL                                  INT(4)

ENAME                                                                                 VARCHAR(10)

JOB                                                                                      VARCHAR(9)

   MGR                                                                                      INT(4)

  HIREDATE                                                                               DATE

  SAL                                                                                         INT(7)

  COMM                                                                                     INT(7)

  DEPTNO                                                                                  INT(2)

 

数据库数据:

EMPNO   

ENAME  

JOB    

   MGR   

  HIREDATE    

  SAL     

COMM        

  DEPTNO    

7369

SMITH

CLERK

7902

2017-10-16

800

 

20

7499

ALLEN

SALESMAN

7698

2020-08-08

1600

300

30

7521

WARD

SALESMAN

7698

2020-08-08

1250

500

30

7566

JONES

MANAGER

7839

2021-09-08

2975

 

20

7654

MARTIN

SALESMAN

7698

2011-07-08

1250

1400

30

7698

BLAKE

MANAGER

7839

2001-08-06

2850

 

30

7782

CLARK

MANAGER

7839

2009-06-06

2450

 

10

7788

SCOTT

ANALYST

7566

2013-05-03

3000

 

20

7839

KING

PRESIDENT

 

2017-01-08

5000

 

10

7944

TURNER

SALESMAN

7698

2018-08-01

1500

0

30

 

DEPT表:

Name                          NuLL?                                     Type

---------                     --------------                           ---------------

Deptno                        not null                                      int8

Dname                                                                     varchar14

Loc                                                                           varchar20

Dept表的数据:

Deptno    

Dname    

Loc        

10

ACCOUNTING

SAN FRANCISCO

20

RESEARCH

DALLAS

30

SALES

CHICAGO

40

OPERATIONS

LOS ANGELES

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值