|
第一份工作因为太心急,稀里糊涂把自己卖给了上海某家公司,干了半年,年后还是决定辞职,寻求一家薪水更高的公司,然后再次把自己卖了,因为我需要钱,很需要。。。
ps:年后辞职的时候被公司坑掉2K。。。。
第一场面试:公司类型:提供医药行业解决方案 地点:上海静安寺 时间:2012.02.07 2:00 pm
在上海半年了也,我这路痴这次找面试地点也没啥波折,很幸运的一次就找到了。尼玛!13楼!敢不敢在高点!进了公司,接待我的一男的,男的HR,其实我希望的是女孩纸额,好吧,男的也没关系,然后,HR说先笔试,让我先等着,结果等他回来,我擦!尼玛能不能不要这么残忍?有必要这么厚吗?足足六页,还半中文半英文的,足足做了我两小时。。。当然,偶尔我也抬头看了看13楼的夕阳,尼玛!都夕阳 ,我可是中午来的啊!
好吧,记录下一些面试题吧,全凭记忆了:
1.arraylist 和 vector 的区别?
vector是同步的,线程安全的,性能上比arraylist低,当两者中的元素超过其初始值大小时,vector会内存翻倍,而arraylist只会增加50%,所以说arraylist更节约内存。
2.web server对于集成不同平台的B/B应用有什么优点?
额,这个问题,自我发挥吧。。
3.有两张表,分别用left join ,right join,inner join,写出其结果。
结果不写了,直接贴概念。
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行
4.一张学生表,student(id,name,chinese,math,english,mark),用一条语句查出总分大于200的学生总分并倒序排列。
select * from student where chinese+math+english > 200 order by chinese+math+enlish desc //这个写得有点忐忑
5.EJB跟javabean的区别。
首先,EJB是一个组件框架,而Javabean只是一个组件;Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean;
EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建
和管理。客户通过容器来访问真正的EJB组件。
6.给你个int arr[23,55,1,7,65],用冒泡方式从大到小输出。
class numbublesort{
public static void main(String[] args){
int[] num=new int[args.length];
for(int i=0;i<args.length;i++){
num=Integer.parseInt(args);
}
print(num);
bublesort(num);
System.out.println();
print(num);
}
public static void print(int[] a){
for(int i=0;i<a.length;i++){
System.out.print(a);
}
}
public static void bublesort(int[] a){
for(int i=a.length-1;i>=1;i--){
for(int j=0;j<i-1;j++){
if(a[j]>a){
int temp=a;
a=a[j];
a[j]=temp;
}
}
}
}
}
第二场面试:公司类型:人肉贩子 地点:上海某某某大厦 时间:2012.02.08 2:00 pm
睡到中午才起床,没有刚出来找工作的激情了,那时候可是一天四场面试啊,现在一天一场都打不起精神。
这次面试路上转了三趟地铁,我说不蛋疼你信吗?结果到了公司,直接呗那公司的气场秒杀了,尼玛啊!这是公司还是平民窟啊,就一件小办公室就算了,还破破烂烂的,顿时咱心里就凉了一截,然后HR小MM找我谈,对了,同时在场的还有另外一小MM,也是来面试的。至于外貌咱先不讨论,俺也没注意看。说了半天才知道原来是外包公司,好吧,外包咱也不介意,咱找的就是外包。之后是笔试,下面是部分笔试题,咱只记得这么多。
1.说出常用的struts标签库,并说下jsp的循环。
bean tag,
html tag,
logic tag,
Nested Tags:这个标签库扩展了前面3个标签库,运行标签间的嵌套。
Tiles Tags:这个标签库包含的标签可用来创建Tiles样式的页面。
另外别把jsp核心标签库(jstl)给弄混淆了。
jsp循环 : 最常用的莫过于<c:foreach>
2.详细描述下Hibernate分页。
第一步:写出基本查询语句,需要两个参数firstcount(开始数),count(查询数量).返回的是一个list集合。
第二步:从页面获取基本参数(当前页数,每页数量,跳转页数)。
第三步:在后台逻辑处理后得到第一步需要的两个参数,调用第一步的方法。
3.写出一个左连接实例。
左表student(sid,sname,cid),右表class(cid,cname,teacher)
左表数据 01 sunnery 01 右表数据 01 c170 'mark'
02 summer 01 02 c171 'coco'
sql:select s.sid,s.sname,c.cname,c.teacher from student s left outer class c on (s.cid = c.cid)
result:{01,sunnery,c170,'mark';02,summer,c170,'mark'}
4.表TABLE(a,b,c,d),用一条SQL语句查出??然后以c从大到小排序。
这道题我稀里糊涂的写的,居然写对了,真神奇。。
select * from TABLE order by c desc
5.很长的题目,主要考察char和float类型。
定义一方法
static nop(float f){system.out,print("f");}
调用
nop(1);
结果会不会打印'f'
我写的会 悲剧了。。。
刚才这家公司又电话过来了,时间是19:20,尼玛!果然是狂人!电话中又问了我几个淡疼的问题。
6.说一下spring的事务处理机制。
这些问题头大啊,先贴答案链接。
http://www.blogjava.net/robbie/archive/2009/04/05/264003.html
7.说一下hibernate的事务处理。
http://bye.iteye.com/blog/177988
8.Jquery选择器方面的,问题是怎么找到表中第二行第一列。
$("tr:odd first")获取tr所有奇数然后取得第一个 不知道可不可以。
第三场面试 公司类型:花旗软件 地点:上海某某某大厦 时间:2012.02.09 4:00 pm
下午4点的面试,我提前一个半小时还是TM的迟到了,公司太大,在里面转晕了。都说外企时间观念很强,不知道有没有介意,反正我看不出来。
首先面试我的一经理,从头到尾一直用英文提问。
- Can you introduce yourself? Can you give me a brief introduction of yourself? 突出优点,扬长避短。
- Can you talk about your current project? 介绍下现在的项目或以前做过的项目:可以说些项目名称、客户名称、项目是做什么的,用到什么技术,开发是什么,你主要在当中负责做什么。
- Why do you want to change your job? 为什么想换工作
就记得这些,回答得有点语无伦次。。。。
四十分钟后换了个人,一胖子,人看起来挺好说话的,他说他已经一年没用英文给人面试,我们就用中文好了,然后瞎聊了一些,最后他给我出了个题。
一段字符串 str = '#sunnery##summer#coco ####mark'
用多种方法得到字符串中名字的数量。
我只想到三个方法。
1.用split得到所有名字的数组,然后循环遍历出来,遍历的时候注意会有空数组里会有字符串。
2.先将字符串前面的#或者空格去掉,然后用indexof("#")截取最前面的名字,然后重复操作。ps:这是最笨的办法
3.一个个读取单个字符,当找到26个字母中的其中一个,数量+1,再判断下一个是# 空格 或者字母,如果还是字母就+0,如果是空格或者#,再判断下一个,如果下一个还是字母,数量再+1,如果还是#或者空格则+0.
求补充!!!
两个人的面试持续了一个半小时总共,对了,第一个面试的还问了一些问题,我就记得一点点。
1.说一下数据库(oracle,sqlserver,mysql)中的事务。
个人理解,事务回滚,当数据操作错误之后,前面的操作将失效。
2.说一下spring的事务处理。
这个问题上面出现过,我还是没答出来。
3.说一下IOC。
不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。
这个问题是我自己不小心引出来的,自作孽啊,万幸的是我还能说一点点。
4.hibernate的两种状态。
游离,持久化 ps:这个没答出来 不堪回首啊。。。
第一个面试的问我有什么问题问他,当时我不知怎么就脑抽了,居然问他对我什么看法,我擦!脑袋被门夹了~~当然他肯定不会回答我这个问题的。最后我说没什么问题了。
最后走的时候第二个面试的说第二天会出面试结果,当时已经到下班的时间了,估计这次又挂掉了。
5.实现线程的方式,线程以什么结束,线程的生命周期。
两种方式,一是线程Thread,二是实现Runnable方法;当时我说run方法执行完毕就代表线程结束,可是他说我错了。。。;线程生命周期:开始(唤醒)-运行(挂起)-停止。
第二场面试复试:公司类型:中国电信下属集团 地点:上海中国电信信息园 时间:2012.02.10 2:00 pm
今天上海下雪了,大雪,中午十二点出发,结果三号线抛锚,等了半小时,然后转了三趟地铁,一趟公交,到达面试地点还是迟到了。总之,很累。
面试前又让我做了一套笔试题,一个公司做两套笔试,心里有点怨念了,笔试题有点偏向数据库,好吧,我承认,数据库方面我比较薄弱,有两道大题没做出来。
然后是面试,两个主考官,男女搭配。首先那女考官让我介绍上上家公司做的项目,半年了已经,我也记不太清,说的不是很连贯,当然最后还是说完了。然后问我期望薪资,我开6.5K,她说太高了,可是,我是通过外包来面试的,外包的话6.5K不高吧似乎?然后又问我最低能接受多少,我犹豫了,说5.5K,她没回应,估计还是嫌高了。然后就打了个电话,这期间那男考官发问了,问我为什么离职,我说我在上家公司偏向于做前台,我想做后台,然后他向我介绍了下他们公司的业务。最后那女的回来了,说面试就到这里,回去等通知,果断OVER。。。。
笔试+面试中的技术问题
1.spring bean 的作用域有哪些?分别在哪些范围?默认的的作用域是?
<bean id=”role” class=”spring.chapter2.maryGame.Role” scope=”作用域”/>
singleton作用域:当spring被定义为singleton时,spring IOC容器只会存在一个共享的实例,所有对Bean的请求,只要ID与Bean定义的相同,都会返回同一个实例。
pritotype作用域:与singleton相反,当prototype接受到请求后,都会重新创建一个实例,并且spring容器不会自动释放。
request作用域:当有HTTP请求时,都会产生一个新的Bean,在当前http request内有效。
session作用域:当有HTTP请求时,都会产生一个新的Bean,在当前http session内有效。
global session作用域:等同于session作用域。
自定义作用域:...
在配置request,session,global session作用域前,必须在web.xml中配置监听:
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
2.oracle tnsnames.ora 有什么作用?
监听配置文件。
3.什么是J2EE?
这种问题其实很不好回答,个人认为这种问题很大程度上能体现一个程序员的水准。
我承认我是一个很搓的程序员,我的回答是:
一个很大很大的框架,里面有各种各样的组件,节约开发成本,提高效率,保证质量,重复利用现有资源...总之,好处多多。
4.什么是webserver?
以前我一直将webserve和webservice弄混淆,webserve:网络服务器;webservice:程序对外提供的接口。
5.写出存储过程的结构。
begin...end
create procedure pr_param_in
(
in id int -- in 类型的 MySQL 存储过程参数
)
begin
if (id is not null) then
set id = id + 1;
end if;
select id as id_inner;
end;
6.简要的解释collection framework。
list(ArrayList vector) set(TreeSet HashSet) map(hashTable hashMap)
第四场面试 公司类型:上海某电气行业公司 地点:不知 时间:2012.02.11 10:30 am
早上起晚了,第一次上午去面试,结果忘了手机闹铃周末是不响的,结果可想而知, 匆匆忙忙的出门,早餐就一个苹果一根香蕉解决,路上还钻错地铁,结果可想而知,又苦逼的迟到了。
首先笔试,必须的。不过公司的人倒是挺客气的,公司虽然不大。
1.struts2的机制,struts1 和 struts2的区别?
Struts2处理机制:客户端发出请求(HttpServletRquest)——控制器(核心控制器FilterDispatcher)——询问ActionMapper调用哪个Action处理请求——FilterDispatcher将请求交给ActionProxy——ActionProxy询问configguration Manager(struts.xml)调用Action类——Action处理后返回结果(result)。
struts1和struts2的区别:
struts1的Action类必须继承一个抽象类,面向的是抽象类而不是接口;struts2可以实现Action接口,也可以实现其他接口,并且Struts2提供了一个ActionSupport基类实现常用接口。Struts2不是必须实现Action接口,任何一个有Excute的POJO对象都可作为Struts2的Action类。
Struts1 Action是单例模式且是线程安全的,而Struts2每一次请求都会新生成一个实例,不需要考虑安全问题。
Struts1的表达式是JSTL,Struts2的表达式是OGNL.
2.浅谈SOA架构。
SOA,即面向服务的体系结构(Service-Oriented Architecture,也叫面向服务架构),是指为了解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件系统架构。SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。
3.MAP集合有哪些遍历方式。
Java类遍历(for) EL表达式遍历 Strut1 jstl表达式迭代遍历
遍历实例
普通JAVA类遍历Map集合
Map map=new HashMap();
map.put("a", "1");
map.put("b", "2");
map.put("c", "3");
map.keySet();//键集合
map.values();//值集合
map.entrySet();//键值集合
//遍历键,通过键取值
Set set = map.keySet();
for (Object key : set) {
System.out.println("键:"+key+" 值:"+map.get(key));
}
//遍历键集合
Iterator it=map.keySet().iterator();
while(it.hasNext()){
System.out.println("键:"+it.next());
}
//遍历键值集合
Iterator it2=map.entrySet().iterator();
while(it2.hasNext()){
System.out.println(it2.next());
}
使用EL表达式遍历Map集合
<%
Map map=new HashMap();
map.put("a", "1");
map.put("b", "2");
map.put("c", "3");
pageContext.setAttribute("map",map);
%>
<c:forEach items="${map}" var="m">
键:${m.key}
值:${m.value}
</c:forEach>
使用EL表达式遍历Map集合(值存放的是对象)
<%
Person p=new Person();
p.setAddress("aa");
p.setName("aa");
Person p2=new Person();
p2.setAddress("bb");
p2.setName("bb");
Person p3=new Person();
p3.setAddress("cc");
p3.setName("cc");
Map map=new HashMap();
map.put("a", p);
map.put("b", p2);
map.put("c", p3);
pageContext.setAttribute("map",map);
%>
<c:forEach items="${map}" var="m">
${m.key}
${m.value.name} //m.value取得的是对象的内存地址,所以可以直接用m.value.name(name为Person对象的属性)
</c:forEach>
使用struts标签<logic:iterate />遍历
<%
List list=new ArrayList();
list.add("aa");
list.add("bb");
list.add("cc");
Map map=new HashMap();
map.put("a", list);
pageContext.setAttribute("map",map);
%>
<logic:iterate id="m" name="map">
键:${m.key}
<logic:iterate id="childm" name="m" property="value">内层标签的name对应的是外层标签的id,一定要加上property="value"
值:${childm}
</logic:iterate>
</logic:iterate>
4.说一下对IOC的理解。
以前写的
IOC也叫依赖注入或者控制反转,通俗易懂的意思就是,把本属于自己做得是交给给人去做。比如说,我要吃饭,可是我没有筷子,如果没有服务员(IOC)。那么我就只能自己动手去拿,而有服务员(IOC)的话,那么,我只需要等着服务员(IOC)给我拿来就成,如果我不满意,我可以不要(抛出异常),并告诉他们大堂经理(Spring),让经理处理(将异常交给Spring处理)。
而在spring的应用中,在处理类(比如Action)中,如果我们需要使用一个对象(UserBean),一般情况下我们必须new一个UserBean出来才能使用,而如果使用IOC的话,我们就不必再new了,Spring会自动帮我么new一个,当然,这是在我们往UserBean内有传值的前提下。
比如一个请求:http://localhost:8080/test/userAction?UserBean.name=admin
当我们在UserNean里传如参数,那么Spring会自动new一个UserBean对象
http://localhost:8080/test/userAction
如果未传入参数,则不会new。
5.说一下spring的事务处理(又是这个...)。
两种:一种是编程式事务处理;一种是声明式事务处理。
实不相瞒,小的只用过申明式事务处理,这个比较简单。
步骤:定义事务管理器——配置事务属性——配置DAO
6.student(sid=01,name=summer sid=02,name=sunnery),用json字符串表示。
json = "student":[{"sid":01,"name":summer},{"sid":02,"name":sunnery}]
7.解释下Java中反射机制。
贴链接,真心看不懂。
http://www.cnblogs.com/bingoidea/archive/2009/06/21/1507889.html
上面的题大都是面试的时候问的,笔试题记不得了,我记性真心不好。
差不多就问了半个多小时,然后说过几天可能会有二轮BOSS面试,不过我估计有没希望了。这个时候已经12点半了,我立马奔向今天第二场面试,一点半的,我可不想再迟到了。
第五场面试 公司类型:在外面接单的公司(非外包,也非自主研发) 地点:上海国际大厦 时间:2012.02.11 01:30 pm
这个笔试很变态,面试有两个人,不过没问什么技术性问题,自我介绍,项目介绍,为什么离职可不可以出差等等常规问题。最后还说我以前薪水是多少,然后说他们也许给不了我上家公司那么高的工资问我能接受否?我回答是得看具体情况,然后,没有然后。
说说他们的笔试题吧,前面两个智力题,然后两个编程题,再然后二十几个选择题,再然后七八个简答题,在然后一篇英文文档,让你翻译。
1.甲乙丙丁四个人,甲说我没有杀人,乙说丁杀了人,丙说乙杀了人,丁说我没有杀人。四人中只有一个人说真话,问,谁杀了人?
既然只有一个人说真话,那么甲和丁一定有个人说真话,然后乙丙就都是假话,乙说丁杀了人(假话),那么丁就没有杀人,丁说真话,那么,注定甲悲剧。。。
2.12个铁球,其中有一个质量不同,有一天平,用三次找出质量不同的那个。(质量不同,但不知是轻了还是重了)。
这题目我瞎忽悠了,情况没考虑清楚,写了一大堆,也不知面试官看出来没。现在求正解。。。
3.写一个2的9999次方的算法,必须考虑内存溢出的情况。
BigDecimal b2 = new BigDecimal("2");
BigDecimal b9999 = new BigDecimal(b2.pow(9999).toString);
4.餐馆中有一cooker和一water,当cooker做好菜之后water才能上菜,然后water继续等待,请用多线程模拟。
多线程
public class Restaurant {
public static void main(String[] args) {
Dish dish=new Dish();
Thread cook=new Thread(new Cook(dish));
Thread waiter=new Thread(new Waiter(dish));
cook.start();
waiter.start();
}
}
class Dish {
private int food;//表示菜名
private boolean full;//表示盘中是否有食物
public Dish() {
food = -1;
full = false;
}
public void setFood(int food) {//放食物
this.food = food;
}
public int getFood() {//取食物
return food;
}
public void changState(boolean state) {//改变full的状态
this.full = state;
}
public boolean isFull() {//判断盘中是否有食物
return full;
}
}
class Cook implements Runnable {//厨师烹饪食物
private Dish dish;
public Cook(Dish dish) {
this.dish = dish;//获取Dish对象的引用
}
public void run() {
for (int i = 0; i < 10; i++) {
synchronized (dish) {//获取dish的对象锁
while (dish.isFull()) {
try {
dish.wait();//当盘中有食物的时候厨师线程在dish对象的等待集中等待,等待服务员把盘中的食物取走,同时释放对象锁
} catch (InterruptedException ex) {
Logger.getLogger(Cook.class.getName()).log(Level.SEVERE, null, ex);
}
}
dish.setFood(i);//这时盘中没有东西,那就把做好的事物放在盘子里
System.out.println("厨师完成" + i + "号套餐");
dish.changState(true);
dish.notifyAll();//通知服务员来取食物,notifyAll()通知dish等待集中的线程运行
}
}
}
}
class Waiter implements Runnable {
private Dish dish;
public Waiter(Dish dish) {
this.dish = dish;
}
public void run() {
for (int i = 0; i < 10; i++) {
synchronized (dish) {
while (!dish.isFull()) {
try {
dish.wait();//盘中没有东西的时候就等啊
} catch (InterruptedException ex) {
Logger.getLogger(Waiter.class.getName()).log(Level.SEVERE, null, ex);
}
}
System.out.println("服务员取走"+dish.getFood()+"号套餐");
dish.changState(false);//把餐盘的状态设置成false,餐盘中没有食物
dish.notifyAll();//通知厨师,你可以做菜了
}
}
}
}
5. checked exception 和 unchecked exception 的区别。
Error和RuntimeException及其子类是unchecked exception.其他exception是checked exception.
checked能用代码解决,unchecked不可抗拒。
6.oop的三个基本原则。
继承 封装 多态 额...
7.
public class t1{
static{sysem.out.print("s1");}
public static void v1(){ststem.out.print("v1");}
}
public class t2 extend s t1{
static{sysem.out.print("s2");}
public static void main(){v1();}
}
写出运行结果。
s1 s2 v1
8.Spring MVC 的中心控制器是?
难道是我记错题目了?GOOGLE都没有答案。。
9.线程在使用sleep()后进入什么状态?
阻塞状态
10.a=6,b=5 执行 !a&&b++ 后的结果是?
a=6 b=5 //应该是这样
11.
String a,b,c;
a="a";
b="b";
c="c";
StringBuffer d = new StringBuffer("abc");
d.append("efg");
总共创建了几个对象?
4次 //也许
12.
i = 0;
word = "";
//实现序列化方法
DataObject obj = new DataObject();
obj.setword("123");
obj.seti(1);
//反序列化后i,word的值是多少?
i=1,word="" //也许
已经面了五家了,过了一周了,压力了额。。。
今天2012.2.13
下午去查工资卡的时候发现多了1K,不知道为什么,然后在窃喜的时候收到第五次面试的结果通知,说是通过了,工资比上家高,我就答应了。这次跳槽也算结束了,休息休息。。。
|
|