软件工程师面试题(一)
一、选择题
1.找出数列规律选择,1,4,8,14, 24,42,( A )
A.76 B.66 C.64 D.68
2. 6,14,30,62,( C )
A.85 B.92 C.126 D.250
二、简答题
1.类的三大特性是什么?
继承(inheritence)、封装(encapsulation)、多态(polymophism)。
2.如何用三元运算符表达两个整型变量a,b并将较大的值赋予变量a?
a=a>b?a:b
3.如果在一个B/S结构的系统中需要传递变量值,但是又不能使用Session、Cookie、Application,您有几种方法进行处理?(至少三种)
Ajax(get、post)、Server.Transfer、Request.QueryString(url传参)
4.Override和重载的区别
方法的重载是指函数名相同,但参数列表不同,用来实现多种功能,是多态的一种表现形式.
方法的重写就是重新实现原方法的过程,函数名和参数列表保持一致.
5.抽象类和接口有什么区别?
抽象类是指将共同的行为(方法)单独提取出来,建立一个抽象的类,用来被子类继承。抽象类必须要有抽象方法。
接口是指一类方法的定义,但并不包含实现,是实现多重继承的有效方式。
6.存储过程相比于sql语句有什么优点,大数据分析时,除使用存储过程代替sql外还有哪些有效方法?
存储过程比较安全(数据库层)、高效(网络传输数据量小,预编译)。
优化SQL语句,多用临时表,少用或者不用游标;根据业务合理分库分表,建立索引;使用NOSQL。
三、编程题
1.列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少?(用递归实现)
答案:斐波拉契数列
int F(int n)
{
if (n == 1 || n == 2)
return 1;
else
return F(n - 1) + F(n - 2);
}
2.已知表: course
courseid coursename score
1 java 70
2 oracle 90
3 xml 40
4 jsp 30
5 servlet 80
为了便于阅读, 查询此表后的结果显式如下( 及格分数为60):
courseid coursename score mark
1 java 70 pass
2 oracle 90 pass
3 xml 40 fail
4 jsp 30 fail
5 servlet 80 pass
写出此查询语句:
select courseid,coursename,Score, (case when Score>=60 then 'pass' else 'fail' end) mark from course
3.学生表S(S_ID,S_Name),课程表B(B_ID,B_Name),成绩表C(S_ID,B_ID,C_Score),现需要将成绩表中选了课程名称为a的学生成绩低于60的同学的成绩乘以1.1。
with a as(
select S_ID,C_Score from C,B where C.B_ID = B.B_ID and B.B_Name = 'a')
update a set C_Score = C_Score*1.1 where C_Score<60