您的位置:首页 > 职场人生

各软件公司面试题汇总(持续更新中……)

2009-09-14 22:26 471 查看
一直想做一个面试题汇总的帖子,收集各大软件公司的笔试、口试等技术方面的面试题。

这个帖子将不断更新,包括新的题目和解答……

W公司(ASP.NET


第一轮笔试

算法题:可以使用c,c#和java

1. 已知m和n是已经排序好的数组,从小到大,现在要合并这两个数组内的数到一个数组,仍然要求是从小到大排序

2. 使用递归求n的阶乘

3. 有1,2,2,3,4,5六个数,要求输出他们组合的全排列,4不能在第三位,5和3不能相邻

4. 请解释HTTP,Cookie和Session

5. 请解释视图,存储过程,左连接

6. 请简单描述三层架构

7. 写一段HTML页面完成注册功能

看了题目,没有给答题纸,只能在背面写了,

先从第四题开始写起,写HTTP协议的时候心里有点嘀咕,他不会等会真问我HTTP协议的细节吧。Cookie和Session先讲了最重要的,都是
Web应用程序中保存特定用户信息的。Cookie信息存放在客户端(大小限制4K,只能存放string类型,不安全,但可以考虑使用加密和验
证),Session信息在服务器端(安全性好,占服务器资源,除InProc方式存放的对象需要可序列化),然后简单说明临时Cookie和永久
Cookie,Session的三种存放方式(InProc、StateServer、SQLServer)

第五题,分别说明视图和存储过程的概念/优点/可能使用它们的主要场景

第六题,简单地描述三层架构,从代码重用/团队协作/系统维护/测试等上面说了下,网上相信能找到很多更好的答案。

第七题,写标记的时候尽量按照xhtml的规范来写,表单的提交,简单的样式和javascript验证的代码

这时有人进来,我赶紧又要了一张纸(后面的算法题肯定需要),这4个题目的答案大概写了A4纸的1面。

回过来写了算法中最简单的第二题:

C# code

public

static

int
Func(
int
n)

{

if
(n
<

0
)

{

throw

new
ArgumentException(
"
不能小于0
"
);

}

if
(n
==

0

||
n
==

1
)

{

return

1
;

}

return
n
*
Func(n
-

1
);

}


看了一下第一题和第三题,还是感觉第一题更简单,尽量考虑了算法的复杂度,但这个不是本人的强项,不过常识是算法题只应该用一个循环,当时大致写的代码如下:

C# code

public

static

int
[] Func(
int
[] m,
int
[] n)

{

if
(m
==

null

||
n
==

null
)

{

throw

new
ArgumentException(
"
传入数组不能为空
"
);

}

int
[] result
=

new

int
[m.Length
+
n.Length];

int
mIndex
=

0
;

int
nIndex
=

0
;

for
(
int
index
=

0
; index
<
result.Length; index
++
)

{

if
(mIndex
>=
m.Length)

{

result[index]
=
n[nIndex];

continue
;

}

if
(nIndex
>=
n.Length)

{

result[index]
=
m[mIndex];

continue
;

}

if
(m[mIndex]
<
n[nIndex])

{

result[index]
=
m[mIndex];

mIndex
++
;

}

else

{

result[index]
=
n[nIndex];

nIndex
++
;

}

}

return
result;

}


写第三题到一半的时候MM过来问了一下是否做完,估计自己应该能写出来,就说还要一回就好。

现在已经忘记当初具体怎么写的了,不过肯定是完成了功能,还记得当时判断5和3不能相邻时用的技巧是:相邻的两个数字之和不能等于8。

下面这个版本是根据http://blog.csdn.net/qianling3439/archive/2008/08/07/2781041.aspx 修改的C#版本:

C# code

public

static

void
Main()

{

char
[] number
=

new

char
[] {
'
1
'
,
'
2
'
,
'
2
'
,
'
3
'
,
'
4
'
,
'
5
'
};

Func(number,
0
, number.Length
-

1
);

Console.WriteLine(list.Count);

foreach
(String s
in
list)

{

Console.Write(s
+

"

"
);

}

}

public

static
List
<
string
>
list
=

new
List
<
string
>
();

public

static

void
Func(
char
[] n,
int
beg,
int
end)

{

if
(beg
==
end)

{

string
result
=

new

string
(n);

if
(result[
2
]
==

'
4
'
)

return
;

if
(result.Contains(
"
35
"
)
||
result.Contains(
"
53
"
))

return
;

list.Add(result);

return
;

}

for
(
int
i
=
beg; i
<=
end; i
++
)

{

Swap(n, beg, i);

Func(n, beg
+

1
, end);

Swap(n, beg, i);

}

}

public

static

void
Swap(
char
[] n,
int
a,
int
b)

{

char
temp
=
n[a];

n[a]
=
n;

n[b]
=
temp;

}


关于本题的其他参考:
http://rjx2008.javaeye.com/blog/339645 http://www.javaeye.com/topic/55873 http://blog.csdn.net/qianling3439/archive/2008/08/07/2781041.aspx
[b]第二轮面试


答完题目之后,一个年轻人(25岁左右)给我面试,根据我的经验估计对方应该是项目小组中的技术骨干

1. ASP.NET页面生命周期

这个问题我本身比较熟悉,出门前还看过 :)。

说了几个自己认为比较重要的PreInit、LoadViewState、
LoadPostData、Load、RaisePostDataChangedEvent(所有实现了IPostBackDataHandler接口的
控件)、RaisePostBackEvent(实现 IPostBackEventHandler 接口的控件,如 Button,
LinkButton等)、PreRender、SaveViewState。当然包括每个事件主要做什么,尤其是LoadViewState和
SaveViewState是实现ASP.NET了保持状态的假象。

(相信这个问题回答的超出对方想象)

2. 母版页的作用

这个问题比较简单,简单介绍并提及自己不喜欢用母版页,用javascript找控件比较麻烦,对方颇有同感。

3. 简单查询,考勤表id(PK int) name(varchar) time(datetime),求迟到次数最多的员工的最后一次迟到时间

答案就不贴了

4. 经典的第M条到第N条记录

先问了一下要SQL Server 2000还是SQL Server 2005的版本,对方马上笑了,说还是SQL Server 2000的吧,给了一个top的版本

(我的blog上写过类似的东东http://blog.csdn.net/amandag/archive/2008/07/14/2646472.aspx)

5. 算法:最长升序降序序列,7 5 6 8 10 7 9 3 8 7 4 1 8 9 4,则最长的升序序列为5, 6, 8, 10,最长的降序序列为8,7,4,1

个人的答案是用了一个循环,这里就不贴了。

顺便提一句,手写算法题的时候,对方会一直盯着看,压力比平时写程序大很多

6. 无限级分类数据库设计及节点查找

最近写了一篇类似的blog,当时的思想也差不多是这样
http://blog.csdn.net/amandag/archive/2009/12/16/5021126.aspx
7. 二叉树查找

个人感觉由于前面的问题回答的还不错,后面的这两个问题对方也只是要求我说了一下思想,并未写具体的代码

第三轮面试

面试官是一个年约28~29的女孩,问了一些关于我做的项目的问题,个人感觉她的技术不如前面一个面试官,而且表达思路也不是很清楚,略聊了一会对方告诉我下面会有项目经理面试。

第四轮面试

面试官应该是个技术性的PM,问了一下网站架构的问题,和其聊了一会数据处理中需要考虑的问题(并发、索引、安全、分布式、缓存、海量数据)。

做技术的还是比较坦诚,他认可我的技术水平(这点让我颇为开心),并建议我应聘PM的岗位(其实对方招聘的时候只有SDE、Senior SDE这两个岗位),此时我也意识到如果仅仅应聘Senior SDE看来并不匹配。

第五轮面试

面试官应该是个部门经理,很能聊,主要谈了两个问题

1. 如何控制项目管理中的风险(主要提到了项目进度的控制和客户的交流)

2. 如何打造一个高效的开发团队、如何评估你的团队开发人员

针对我的回答又问了些相关问题,说句老实话,对方显然很有经验,这轮不知深浅。

第六轮面试

对方显然更有经验,感觉不到对方在问问题,基本就是在聊天,他的回答经常是笑着说"我了解了"或者"我明白了",我也只能见招拆招了,最后对方问了一下薪资的问题,我努力踢过去一个皮球,被对方轻易地踢了回来,只好先翻底牌了。

迅雷


一、笔试题:

A)JAVA基础多项选择题,比较简单,略

B)问答:

1)ajax原理、如何实现刷新数据及优点?

2)门面模式的解释、适用场合?

3)写6个linux常用命令?

4)SQL语句题,较简单

C)编程:

1)有三个线程ID分别是A、B、C,请有多线编程实现,在屏幕上循环打印10次ABCABC…

2)假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,不能用java内置字符串方法(indeOf,substring,replaceAll等)?

二、上机题:

Java上机实现统计某一目录下每个文件中出现的字母个数、数字个数、空格个数及行数?

三、面试题:

1、说说JVM原理?内存泄露与溢出区别,何时产生内存泄露?

2、用java怎么实现有每天有1亿条记录的DB存储?mysql上亿记录数据量的数据库如何设计?

3、mysql支持事务吗?DB存储引擎有哪些?

4、mvc原理,mvc模式的优缺点,如果让你设计你会怎么改造MVC?

5、hibernate支持集群吗?如何实现集群?

6、tomcat 最多支持并发多少用户?

7、map原理,它是如何快速查找key的?map与set区别?

8、描术算法,如何有效合并两个文件:一个是1亿条的用户基本信息,另一个是用户每天看电影连续剧等的记录,5000万条。内存只有1G???

9、在1亿条用户记录里,如何快速查询统计出看了5个电影以上的用户?

10、Spring如何实现IOC与AOP的,说出实现原理?

东软

1) 把“20020730”转换为时间格式,并且与当前系统时间比较,然后得到相差的天数。

解答待续……

2)生成50个1到100之间的随机数,并且对其中的偶数进行降序排列。

解答待续……

3)对一个int num[52] 数组先排序,然后让他里面的数能够打乱,类似洗牌效果。

解答待续……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: