名企面试.docx
《名企面试.docx》由会员分享,可在线阅读,更多相关《名企面试.docx(41页珍藏版)》请在冰点文库上搜索。
名企面试
Sybase面试题目,2007-05
ING,sybase
以下是我在sybase面试时所涉及的部分问题:
数据库
1.事物及其四个特性,以及如何保持着四个特性,特别是并发控制有哪些算法
2.如果你设计一个数据库,需要考虑哪些问题
操作系统
1.进程和线程的定义以及实现同步的算法
2.编程实现信号量同步控制算法
JAVA和JVM
1.String和StringBuffer区别,String是如何实现immutable的
2.GC原理及其算法
OO
1.面向对象的三个特性
2.利用面向对象设计一个系统,你会怎么设计?
数据结构
1.查找算法及其时间复杂度
2.有100个数,怎么可以快速找到第30个大的数
3.8皇后问题
SAP面试题目
SQL,dow
1.extern"C"{}
2._std_afx
3.C++为何强制类型
4.staticcast,Dynamiccast,Constcast
5.C里面的函数堆栈同C++的函数堆栈的区别
6.DB2的那个端口
7、SQLserver扩展存储过程
8、ClassA{}的内存镜像
9.rrserializable怎么实现?
区别?
10、VC里面的异常机制要打开哪个选项?
11、Windows的COPYONSITE是怎么实现的
12、http协议的keepalive作用
13、Processinlinux,minix,的不同
14、数据库里的INSTANCE
15、C#调用win32的API是如何实现的?
16、数据库是怎样实现INDEX的
17、数据库DBMS设计时需要考虑的问题
18、ISOLATIONLEVEL?
是如何实现的
Google的疯狂面试题
google
发信人:
boolean(boolean),信区:
Job
Google的疯狂面试题学校班车里面能装多少高尔夫球?
几星期前,一个朋友接受了Google公司的面试,他透露了面试中的一些问题。
顺便,我把从其他几个曾经面试过的人那里听来的内容也整理在一起。
最大的互联网公司Google的一份面试题集,看看你是否能够回答出来。
其中很多问题都是开放式的,正确的解答有许多种,所以在这里就不提供答案了。
一辆学校班车里面能装多少个高尔夫球?
你被缩小到只有硬币厚度那么点高(不是压扁,是按比例缩小),然后被扔到一个空的玻璃搅拌器中,搅拌刀片一分钟后就开始转动。
你怎么办?
要是让你清洗整个西雅图的所有窗子,你会收取多少费用?
怎么才能识别出电脑的内存堆栈是向上溢出还是向下溢出?
你要向你8岁的侄子解释什么是数据库,请用三句话完成。
时钟的指针一天内会重合几次?
你需要从A地去B地,但你不知道能不能到,这时该怎么办?
好比你有一个衣橱,里面塞满了各种衬衫,你会怎么整理这些衬衫,好让你以后找衬衫的时候容易些?
有个小镇有100对夫妇,每个丈夫都在欺骗他的妻子。
妻子们都无法识破自己丈夫的谎言,但是她们却能知道其他任何一个男人是否在撒谎。
镇上的法律规定不准通奸,妻子一旦证明丈夫不忠就应该立刻杀死他,镇上所有妇女都必须严格遵守这项法律。
有一天,镇上的女王宣布,至少有一个丈夫是不忠的。
这是怎么发生的呢?
在一个重男轻女的国家里,每个家庭都想生男孩,如果他们生的孩子是女孩,就生下一个,直到孩子是男孩为止。
这样的国家,男女比例会是多少?
如果在高速公路上30分钟内到一辆车开过的几率是0.95,那么在10分钟内看到一辆车开过的几率是多少(假设为常概率条件下)
如果你看到钟的时间是3:
15,那一刻时针和分针的夹角是多少?
(肯定不是0度!
)
4个人晚上要穿过一座索桥回到他们的营地。
可惜他们手上只有一支只能再坚持17分钟的手电筒。
通过索桥必须要拿着手电,而且索桥每次只能撑得起两个人的份量。
这四个人过索桥的速度都不一样,第一个走过索桥需要1分钟,第二个2分钟,第三个5分钟,最慢的那个要10分钟。
他们怎样才能在17分钟内全部走过索桥?
你和朋友参加聚会,包括你们两人在内一共有10个人在场。
你朋友想跟你打赌,说这里每有一个人生日和你相同,你就给他1元,每有一个人生日和你不同,他给你2元。
你会接受么?
全世界有多少个钢琴调音师?
你有8个一样大小的球,其中7个的重量是一样的,另一个比较重。
怎样能够用天平仅称两次将那个重一些的球找出来。
有5个海盗,按照等级从5到1排列。
最大的海盗有权提议他们如何分享100枚金币。
但其他人要对此表决,如果多数反对,那他就会被杀死。
他应该提出怎样的方案,既让自己拿到尽可能多的金币又不会被杀死?
(提示:
有一个海盗能拿到98%的金币)
你觉得自己有把握去Google工作了么?
去用友面试时出的几道面试题(含答案)ZZ
oracle,SQL,用友
1.Hashtable和HashMap有什么区别?
2.你怎么理解MVC模式?
3.SQLServer中左联接查询用leftjoin,Oracle中用什么?
4.SQLServer中的数据库,在Oracle中对应的是什么?
5.如果SQLServer中有两个数据库,那么让你把这两个数据库对应到Oracle中,你应该怎么做?
6.有两个页面a.jsp和b.jsp,要从a.jsp传值到b.jsp有几种方法?
分别是什么?
7.有三个页面,a.jsp,b.jsp和c.jsp,流程是:
a.jsp->b.jsp->c.jsp,其中a.jsp中提交的数据要在c.jsp中访问,用最简单的方法怎么做?
注意不能放在session里
8.映射是什么?
你怎么理解映射?
9.Hibernate中:
不看数据库,不看XML文件,不看查询语句,怎么样能知道表结构?
10.SQLServer支持集群吗?
11.为什么要用MVC?
我从JSP页面直接访问数据库不是更简单吗,为什么非要先提交到控制器再做处理?
12.在struts中,假设有一个对数据库中一张表的增删改查的操作,你是写一个action还是写多个action?
为什么?
13.struts中的actionform有什么好处?
14.用过Hibernate吗,用它有什么好处?
15.通常所说的web应用程序分3层,即MVC,如果我想分4层,应该怎么分?
1.Hashtable和HashMap有什么区别?
a.Hashtable是继承自陈旧的Dictionary类的,HashMap继承自AbstractMap类同时是Java1.2引进的Map接口的一个实现。
b.也许最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。
这就意味着,
虽然你可以不用采取任何特殊的行为就可以在一个多线程的应用程序中用一个Hashtable,
但你必须同样地为一个HashMap提供外同步。
一个方便的方法就是利用Collections类的静态的synchronizedMap()方法,
它创建一个线程安全的Map对象,并把它作为一个封装的对象来返回。
这个对象的方法可以让你同步访问潜在的HashMap。
这么做的结果就是当你不需要同步时,你不能切断Hashtable中的同步(比如在一个单线程的应用程序中),
而且同步增加了很多处理费用。
c.第三点不同是,只有HashMap可以让你将空值作为一个表的条目的key或value。
HashMap中只有一条记录可以是一个空的key,但任意数量的条目可以是空的value。
这就是说,如果在表中没有发现搜索键,或者如果发现了搜索键,但它是一个空的值,那么get()将返回null。
如果有必要,用containKey()方法来区别这两种情况。
d.HashMap去掉了Hashtable的contains方法,保留了containsValue和containsKey方法
e.Hashtable中hash数组默认大小是11,增加的方式是old*2+1。
HashMap中hash数组的默认大小是16,而且一定是2的指数
2.你怎么理解MVC模式?
MVC是SUN早期提出的model2开发模式,强制的把视图控制和模型层分开
不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性
3.SQLServer中左联接查询用leftjoin,Oracle中用什么?
左连接:
select(nvl(a.c,0)-nvl(b.c,0))froma,bwherea.id(+)=b.id
右连接:
select(nvl(a.c,0)-nvl(b.c,0))froma,bwherea.id=b.id(+)
自连接:
select(nvl(a.c,0)-nvl(b.c,0))froma,bwherea.id(+)=b.id(+)
说明:
加号写在左就是左连接,写在右就是右连接,看加号的方法来定
4.SQLServer中的数据库,在Oracle中对应的是什么?
表空间
5.如果SQLServer中有两个数据库,那么让你把这两个数据库对应到Oracle中,你应该怎么做?
在Oracle中建一个用户,对应两个表空间
6.有两个页面a.jsp和b.jsp,要从a.jsp传值到b.jsp有几种方法?
分别是什么?
a:
最常用的方法是用form中的text,,然后在b.jsp页面中这样获取
Stringusername=request.getParameter("username");
b:
直接在Url地址栏里面输入第一个页面的地址,在后加问号,然后把要传的参数及值写在后面,如有多个用&隔开,然后在下一页面用
request.getParameter("参数名")来获取,例如:
在b.jsp中可用这样获取:
Stringusername=request.getParameter("username");Stringusername=request.getParameter("password");
c:
在form中放hidden,如:
,获取方法同上
说明:
传值的方法有很多种,以上是最常用最简单的几种方式,当然,如果传的值有中文的话,需另做处理
6.有三个页面,a.jsp,b.jsp和c.jsp,流程是:
a.jsp->b.jsp->c.jsp,其中a.jsp中提交的数据要在c.jsp中访问,用最简单的方法怎么做?
注意不能放在session里
用隐藏表单域,即在b.jsp页面中用N个hidden把上一页面提交过来的信息保存下来,然后和当前一起提交,再到c.jsp里面获取
说明:
尽量不要用session和少用session
7.jsp和servlet有什么区别?
a:
servlet是在java代码里面放html,jsp是在html里面放java代码(最后运行的时候服务器会把JSP解析成servlet)
b:
servlet是一个java类,有自己的映射,而jsp不是
说明:
区别太多
8.映射是什么?
你怎么理解映射?
映射即别名,通过别名可以访问
9.Hibernate中:
不看数据库,不看XML文件,不看查询语句,怎么样能知道表结构?
看表结构对应的类文件,比如UserInfo表对应的UserInfo.java文件
10.SQLServer支持集群吗?
支持,但是是属于热备份类型,不能做负载平衡。
不过符合你的条件。
首先系统做集群,数据库文件放到磁盘阵列里,双机或多机共同访问磁盘阵列,就可以了
IIS可以做集群后负载平衡。
11.为什么要用MVC?
我从JSP页面直接访问数据库不是更简单吗,为什么非要先提交到控制再做处理?
MVC各施其职,互不干涉
在MVC模式中,三个层各施其职,所以如果一旦哪一层的需求发生了变化,
就只需要更改相应的层中的代码而不会影响到其它层中的代码。
有利于开发中的分工
在MVC模式中,由于按层把系统开,那么就能更好的实现开发中的分工。
网页设计人员可以进行开发视图层中的JSP,
对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控制层。
有利于组件的重用
分层后更有利于组件的重用。
如控制层可独立成一个能用的组件,视图层也可做成通用的操作界面
说明:
这个好处就太多了!
!
!
12.在struts中,假设有一个对数据库中一张表的增删改查的操作,你是写一个action还是写多个action?
为什么?
写一个action,让这个action继承自DispatchAction,然后在struts-config.xml中给这个action映射加一参数,parameter="method"
这个在提交到这个action中时,会根据传来的参数中method的值来执行相应的action的方法,比如,http:
//localhost:
8080/login.do?
method=doLogin
这个提交到action的时会自动找方法名叫doLogin的方法,参数返回值原来一样ActionForward
13.struts中的actionform有什么好处?
struts的actionform其实不好,里面有一堆属性,虽然可以自动填充,但是你会发现,在很多情况下(比如你用到Hibernate)
你还要需要自动写一个数据库表的映射类,通常是domain.UserInfo.java,这样就和strutsform中的属性重复,所以他很多余,
struts1.1版本,保留了actionform,struts1.2中已经有了新的LazyValidatorForm,但仍然保留了原有的actionform,
而在struts2.0中已经把actionform去掉了
下面是解决方法
a:
把actionform换成DynaActionForm,和原来不同的是在dynaActionForm可以domain.UserInfo.java的一个实例做为他的一个属性
这样你就不需要在里面写一堆的get,set方法,只是在页面上绑定稍有不同
b:
把actionform换成org.apache.struts.validator.LazyValidatorForm,这样你完全不用写你的actionform这个类,直接在xml里面做
相应配置,当然也可以加上验证框架
警告:
这个问题是陷阱,实际上struts的actionform很不好,非常麻烦,用久了你会发现他其实是多余的,所以这个问题你应该说他的坏处,
和怎么把actonform去掉
14.用过Hibernate吗,用它有什么好处?
Hibernate的最大的好处就是简化数据库的操作,允许你的代码以对象模式来访问数据库内容,
比如通常我们找一个User的资料需要select出所需要的资料,而通过hibnate我们可以把这个User的资料作为一个对象来看待
,通过User.getName()或者User.getId()等操作来获得,这样就完全统一了上层JAVA或者C#等OO语言中对于数据库的非OO操作的不和谐了.
另外对于复杂的表和表之间的关联我们也不用去使用复杂的Select等SQL来操作,而使用对象可以方便获得,
比如多对多关系某用户属于的部门的名称,虽然底层数据库使用了3个表的主键关联操作,
但是我们可以通过User.getDep().getName()来简单的获得,这个就是持久化对象的好处了
说明:
好处太多,只能在用的过程中慢慢体会只能说一个字:
爽
15.通常所说的web应用程序分3层,即MVC,如果我想分四层,应该怎么分?
加一个Hibernate数据持久层
转载请注明出自应届生求职招聘论坛
中兴笔试+面试题目
面试,中兴
[此帖已被设为推荐]1>某人在某个市场某个商家买了某台电脑,请用你熟悉的计算机语言表达出里面的关系.
其中有商家类,买家类,商品类。
还要有买方法,卖方法。
2>一个完整的单例模式
3>曹操南下攻打刘备,刘备派关羽守锦州,关羽派张飞去守城门。
刘备又派诸葛亮去向孙权求援。
孙权派兵攻打曹操!
请画出UML图
2006年12月中兴在我们学校的笔试,最后的大题
(其实这些大公司的笔试不难,也不就是如此,只要学一下数据结构就可以搞定!
)
排序及查找方法
#include
#include
#defineN11
/*用监视哨查找*/
intsearch(intarray[],intn,intk)
{inti;
i=n-1;
array[0]=k;
while(array!
=k)i--;
return(i);
}
/*折半查找法*/
inthalfsearch(intarray[],intn,intk)
{inti,j,mid;
i=1;j=n;
while(i<=j)
{mid=(i+j)/2;
if(k==array[mid])return(mid);
elseif(kelsei=mid+1;
}
return(0);
}
/*冒泡排序法*/
voidmpsort(intarray[])
{inti,j,a;
a=0;
for(i=1;ifor(j=i+1;jif(array>array[j])
{a=array;
array=array[j];
array[j]=a;}
}
/*直接插入排序*/
voidinsertsort(intarray[])
{inti,j;
for(i=2;i{array[0]=array;
j=i-1;
while(array[0]{array[j+1]=array[j--];
array[j+1]=array[0];
}
}
}
/*建立*/
voidcreat(intarray[])
{inti;
printf("enterthearray:
\n");
for(i=1;iscanf("%d",&array);
}
/*显示*/
voidprint(intarray[])
{inti;
printf("Thenumbersaftersortis:
\n");
for(i=1;iprintf("%d",array);
printf("\n");
}
main()
{inta[11],i,x,chang;
/*printf("enterthearray\n");
for(i=1;i<11;i++)
scanf("%d",&a);*/
aga:
printf("\nchang:
1:
usewatchingmethodfinding\n2:
usehalfmethodfinding\n3:
usedirectnessintsertmethodsort\n4:
usebubbleupmethodsort\n5:
exit\n");
scanf("%d",&chang);
switch(chang)
{case1:
{creat(a);
printf("Pleaseintthesearchnumber:
\n");
scanf("%d",&x);
printf("Thenumberstationis:
%d\n",search(a,N,x));
gotoaga;
}
case2:
{creat(a);
insertsort(a);
print(a);
printf("Pleaseintthesearchnumber:
\n");
scanf("%d",&x);
printf("Thenumberstationis:
%d\n",halfsearch(a,N,x));
gotoaga;
}
case3:
{creat(a);
insertsort(a);
print(a);
gotoaga;
}
case4:
{creat(a);
mpsort(a);
print(a);
gotoaga;
}
case5:
{printf("exit!
\n");break;}
default:
{printf("Error!
\n");gotoaga;}
}
}
二、线性链表的存储实现
structLNODE{
ElemTypedata;
structLNODE*next;
};
typedefstructLNODELNode;
typedefstructLNODE*LinkList;
1初始化操作
StatusInit_L(LinkListL){
if(L=(LinkList*)malloc(sizeof(LNode)))
{L->next=NULL;return1;}
elsereturn0;
}
2插入操作
StatusListInsert_L(LinkList&L,inti,ElemTypee){
p=L,j=0;
while(p&&jnext;++j;}
if(!
p||j>i-1)returnERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;s->next=p->next;
p->next=s;
returnOK;
}//ListInsert_L
3删除操作
StatusListDelete_L(LinkList&L,inti,ElemType&e){
p=L,j=0;
while(p&&jnext;++j;}
if(!
p->next||j>i-1)returnERROR;
q=p->next;p->next=q->next;
e=q->data;free(q);
returnOK;
}//ListDelete_L
4取某序号元素的操作
StatusGetElem_L(LinkList&L,inti,ElemType&e){
p=L->next,j=1;
while(p&&jnext;++j;}
if(!
p||j>i)returnERROR;
e=p->data;
returnOK;