汇财金服面试题
一.选择题(不定项选择)
1. 在java中,下列等价于“a不等于0且b不等于0”的条件表达式有___
A.!a==0|| !b==0
B.!(a==0&&b==0)
C.!(a==0||b==0)
D.a!=0&&b!=0
2. 交易系统中用于记录金额的变量可以使用___
A.Integer 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)
|
当前横线区域代码为i=i+1;
A
B
C
return: 2
当前横线区域代码为i=i/0;
A
C
算术异常:meticException: / by zero
当前横线区域代码为System.exit(0);
A
3. 输出下面的运行结果
|
当运行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笔的股票发行人名称和股票最高收盘价。
|
|
面试部分提问:
账户和密码是如何通过服务器实现的?账户密码通过加密存在于数据库表中,通过cookie和session实现的,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 int(8)
Dname varchar(14)
Loc varchar(20)
Dept表的数据:
Deptno | Dname | Loc |
10 | ACCOUNTING | SAN FRANCISCO |
20 | RESEARCH | DALLAS |
30 | SALES | CHICAGO |
40 | OPERATIONS | LOS ANGELES |