首页 > 代码库 > 2015恒生电子校招笔试详解
2015恒生电子校招笔试详解
详细解答:
一、选择题
1、BD C语言要经过编译成二进制代码,再经过连接形成.exe可执行文件。
2、D 3种遍历方式的互推。
3、D 私有成员只能本类访问
4、CD 索引不是越多越好,尤其是组合索引。
5、B 主要看SQL语句where后是否为ture。
6、B abcd直接过得A;依次全入栈再出栈得C;a入栈,bcd直接过,a出栈得D。
7、DA 值调用表示方法接收的是调用者提供的值,不改变实参;引用调用表示方法接收的是调用者提供的变量的地址,改变实参。
8、D 因为D最抽象,C是错的,还有链式、树等。
9、C 1000|0001=1001>>1=0100=4。
10、CD d表示目录,w是写,r是读,x是执行,没3个一组,分别是所有着、用户组或其他用户,即用户组为r-x,拥有读和执行权限。
二、Java语言部分
1、B
2、C
3、AB A申明了字符串,B字符多了,CD正常,可以用中文和Unicode编码申明。
4、AC (-5)%2=-1,B错;D超过int范围。
5、C 常考题,http://www.cnblogs.com/dingshilei/p/4107583.html的23题解析。
三、数据库
1、select distinct S.Sname from S,C,SC where SC.Sno=S.Sno and SC.Cno=C.Cno and C.Cname="数据库" order by S.Sname DESC;
2、select distinct SC.Sno,C.Ccredit from SC,C where C.Ccredit >80 and SC.Grade>60;
3、alter table SC add Teacher varchar(20) not null;
4、create view SCSum as select Sno,sum(Grade) from SC group by Sno ;
5、delect from SC where Sno not in(select Sno from S);
四、编程题
注意要判断是否为闰年,闰年的2月份要多加一天。
#include <stdio.h>struct date { int year; int month; int day; }; int leap_year(int a);int cal_day(struct date a);/*判断闰年*/ int leap_year(int a){ if(a%400==0||(a%4==0&&a%100!=0)) return 1; else return 0;}/*计算一年中的第几天*/ int cal_day(struct date a) { int sum=0,b[]={31,28,31,30,31,30,31,31,30,31,30,31} ; for(int i=0;i<a.month-1;i++) sum+=b[i]; if(a.month>2) sum=sum+a.day+leap_year(a.year); else sum=sum+a.day; return sum; } void main(){ struct date a; int n; printf("\n请输入日期(年 月 日)\n"); scanf("%d%d%d",&a.year,&a.month,&a.day); n=cal_day(a); printf("该日在本年中是第%d天\n",n);}
五、算法题
1、基本思路就是判断合数的因子是否为素数,然后for循环迭代完成。
import java.util.Scanner;public class Try{ static boolean is_odd(int n) //判断是否为素数 { if(n==2||n==3) return true; if(n%2==0) return false; int i; for(i=3;i<=n/2;i+=2) if(n%i==0) return false; return true; } public static void main(String[] args) { Scanner in=new Scanner(System.in); System.out.println("输入数值"); int n=in.nextInt(); int i; System.out.print(n+"="); for(i=2;i<=n;i++) { if(!is_odd(i)) continue; if(n%i==0) { while(true) { System.out.print(i); n/=i; if(n!=1) System.out.print("*"); if(n%i!=0) break; } } } System.out.println(); }}
还可以用递归的方法来实现http://blog.csdn.net/YidingHe/article/details/3952651
import java.util.List; import java.util.ArrayList; /** * 分解质因数 */ public class GetFactor { public static void main(String[] args) { List<Long> factors = getFactors(5555566666L, 2); System.out.println(factors); } /** * 通过递归实现分解质因数 * * @param n 要分解的数字 * @param factor 起始因子 * * @return 分解结果 */ private static List<Long> getFactors(long n, long factor) { // 不断增大 factor 直到能整除 n while (n % factor != 0 && factor < n) { // 得到 2,3,5,7,9,11,13,... factor = factor < 2 ? 2 : factor == 2 ? 3 : factor + 2; } List<Long> result; if (factor >= n) { // 因子已经涨到和 n 一样大,说明 n 本身就是因子。这时递归完成。 result = new ArrayList<Long>(); } else { // 因子能够整除 n,于是继续分解除以因子后的结果 result = getFactors(n / factor, factor); // 向下递归 } result.add(factor); return result; } }
2015恒生电子校招笔试详解