zoukankan      html  css  js  c++  java
  • java第十次面试题

     

    一、给定一个字符串,把字符串内的字母转换成该字母的下一个字母,a换成b,z换成a,Z换成A,如aBf转换成bCg,字符串内的其他字符不改变,给定函数,编写函数。

    public static void main(String[] args) {

                Test06 t = new Test06();

                System.out.println(t.nextString("aBxyZ"));

          }

          public String nextString(String data) {

                char[] arr = data.toCharArray();

                for (int i = 0; i < arr.length; i++) {

                      if (arr[i] == 'z' && i == arr.length - 1) {

                           arr[i] = 'a';

                      } else if (arr[i] == 'Z' && i == arr.length - 1) {

                           arr[i] = 'A';

                      } else {

                           arr[i] = (char) (arr[i] + 1);

                      }

                }

                return String.valueOf(arr);

          }

    二、写一个程序,要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。

    public class Test07 {

          static int i, j, k, n = 0;

          public static void main(String[] args) {

                for (i = 0; i <= 100; i++) {

                      for (j = 0; j <= 50; j++) {

                           for (k = 0; k <= 20; k++) {

                                 if (1 * i + 2 * j + 5 * k == 100) {

                                       n++;

                                 }

                           }

                      }

                }

                System.out.println("共有" + (n++) + "个组合。");

          }

    }

    三、表结构如下
    MyTable:
    日期            日产
    1        3。3333
    2        4。2222
    3        1。5555
    4        9。8888
    5        ………
    要求用SQL语句生成如下查询
    日期             日产                        累计日产
    1                       3。3333                                     3。3333
    2                     4。2222                7。5555
    3                     1。5555                9。0000
    4                     9。8888                18。8888
    5………
    提示:2日累计日产=1日累计日产+2日累计日产
    3日累计日产=2日累计日产+3日累计日产

    SELECT a.`empno` '日期',a.`sal` '日产',

    SUM(b.`sal`) AS '累计日产' FROM MyTable a

    JOIN MyTable  b ON a.`empno`>=b.`empno`

    GROUP BY a.`empno`,a.`sal`

    四、

     已知公司的员工表EMP(EID, ENAME, BDATE, SEX, CITY),

     部门表DEPT(DID, DNAME, DCITY),

     工作表WORK(EID,DID,STARTDATE,SALARY)。各个字段说明如下:

    EID——员工编号,最多6个字符。例如A00001(主键)

    ENAME——员工姓名,最多10个字符。例如SMITH  

    BDATE——出生日期,日期型

    SEX——员工性别,单个字符。F或者M  

    CITY——员工居住的城市,最多20个字符。例如:上海

    DID——部门编号,最多3个字符。例如A01 (主键)

    DNAME——部门名称,最多20个字符。例如:研发部门

    DCITY——部门所在的城市,最多20个字符。例如:上海

    STARTDATE——员工到部门上班的日期,日期型

    SALARY——员工的工资。整型。

    请使用ORACLE的sql*plus 完成下列的操作

    1、创建表EMP,DEPT,WORK,并定义表的主键和外键。 

    2、向每个表中插入适当的数据。例如:插入三条部门的数据,分别为每个部门插入两条员工数据

    3、查询“研发”部门的所有员工的基本信息

    4、查询拥有最多的员工的部门的基本信息(要求只取出一个部门的信息),如果有多个部门人数一样,那么取出部门编号最小的那个部门的基本信息。 

    5、显示部门人数大于5的每个部门的编号,名称,人数

    6、 显示部门人数大于5的每个部门的最高工资,最低工资

    7、列出员工编号以字母P至S开头的所有员工的基本信息

    8、删除年龄超过60岁的员工 

    9、为工龄超过10年的职工增加10%的工资

    答案如下:

    1.

    create table emp1( 

    eid number(6), 

    ename varchar2(20), 

    bdate date, 

    sex char(2), 

    city varchar2(20) 

    ); 

     

    create table dept1( 

    did number(6), 

    dname varchar2(20), 

    dcity varchar2(20) 

    ); 

     

    create table work1( 

    eid number(6), 

    did number(6), 

    startdate date, 

    salary integer 

    ); 

     

    alter table emp1 

    add constraint emp1_eid_pk primary key(eid); 

     

    alter table dept1 

    add constraint dept1_did_pk primary key (did); 

     

    alter table work1 

    add constraint work1_eid_fk foreign key(eid) references emp1(eid); 

     

    alter table work1 

    add constraint work1_did_fk foreign key (did) references dept1(did); 

     

    2. 

    往emp1 表添加数据

    insert into emp1 (eid,ename, bdate) 

    select empno, ename, hiredate 

    from emp; 

     

    update emp1 

    set (sex,city) =('男','北京'); ( 这种写法是错误的,只有利用子查询更新表,可以这样)

     

    update emp1 

    set sex='男' , city='北京';  

     

    往dept1表添加数据

    insert into dept1(did,dname) 

    select deptno,dname 

    from dept; 

     

    update dept1 

    set dcity='北京'; 

     

    /把其中的一个部门改成开发,为了后面练习用

    update dept1 

    set dname='developer' 

    where did=10; 

     

    往work1表添加数据

    insert into work1 (eid,did,startdate,salary) 

    values(7369,10, '', 2500); 

     

    insert into work1 (eid,did,startdate,salary) 

    values(7499,10, '', 2501); 

     

    insert into work1 (eid,did,startdate,salary) 

    values(7521,10, '', 2500); 

     

    3. 

    select emp1.eid, emp1.ename,dept1.dname,work1.salary 

    from emp1,dept1,work1 

    where emp1.eid=work1.eid 

    and dept1.did=work1.did; 

     

    4.  

    select max(e.renshu), d.did 

    from (select did,count(eid) renshu 

    from work1 

    group by did)e,dept1 d 

    where d.did=e.did 

    group by d.did; 

     

    5. 

    select e.*, d.did, d.dname, d.dcity 

    from (select did,count(eid) 

    from work1 

    group by did 

    having count(eid)>5)e,dept1 d 

    where d.did=e.did; 

     

    6. 

    select max(salary), min(salary) 

    from work1 

    having count(eid)>5 

    group by did; 

     

    7.  

    select ename 

    from emp1  

    where ename like 'S%' 

    or ename like 'P%'   

     

    8.  

    delete from emp1 

    where months_between(sysdate, bdate)/12>60; 

     

    9. 

    update work1 

    set salary= salary*1.1 

    where months_between( sysdate ,startdate)/12>10;

     

  • 相关阅读:
    多线程操作数据库 异常抛出全部回滚的问题
    递归查询文件夹下面的指定后缀的文件 获取文件的列表
    第二次作业成绩汇总
    第五周助教小结
    第一次作业成绩汇总
    第四周助教小结
    第二次作业-评分
    第一次作业-准备点评
    系统分析与设计团队项目第二次
    系统分析与设计结对项目——WordCount
  • 原文地址:https://www.cnblogs.com/Blogyin/p/8145091.html
Copyright © 2011-2022 走看看