关闭

2012/2/20

852人阅读 评论(0) 收藏 举报


  京东面试题:
1.说说值对象与引用对象的区别? 
2.谈谈你对反射机制的理解及其用途? 
3.ArrayList、Vector、LinkedList的区别及其优缺点?HashMap、HashTable的区别及其优缺点? 
3.列出线程的实现方式?如何实现同步? 
4.sql题,是一个图表,具体忘了 
5.列出至少五种设计模式?用代码或UML类图描述其中两种设计模式的原理? 
6.谈谈你最近正在研究的技术,谈谈你最近项目中用到的技术难点及其解决思路。 
7.请以30岁程序员为话题写一篇短文,可以包括你对薪资的期望,你的经历,你的人际关系,你的职业规划等
问了个多态的作用?可复用性,可扩充性和可维护性 剥离接口和实现
态简单的说就是单接口多实现。在面向过程分析方法中,整个系统是由数据流驱动的一个组织严密的体系,
而面向对象分析方法则强调各对象是相对独立的,只有在特定场景中才会产生交互,多态特性维护了对象交互的稳定性。


嗯,浓缩成一句话的话,应该就是降低代码耦合度了。
百度面试题
对公司内部的部门,所以没有算法题,全是应用题,并且hibernate的题很多,估计应用肯定是hibernate了 
简答题 
1 spring ioc、aop 的原理 
2 hibernate 延迟加载原理 
3 事务隔离级别 什么情况下用低的或者用高的 
4 事务传播方式哪几种 
5 ajax 跨域如何实现 
6 MQ是否应该保持顺序 保持是否的优劣 
7 乐观锁与悲观锁,举例场景 
8 cookie 与session 区别和联系,http 协议是无状态的,怎么区分不同登录用户 
9 阐述opensessionview一下, 用和不用 数据库连接、transaction session 之间 开启和关闭顺序 


大题 
1.设计一个权限系统 ,要求若干(我就阐述了一下rbac的原则,简单说了一下设计的表和思路) 
2.设计 一个b/s结构 mvc框架,要求若干(我着重说明了一下控制转发这块的设计思路) 


初始化顺序:父类静态块或静态变量,子类静态块或静态变量,父类变量或者块,父类构造方法,子类变量或者块,子类构造方法


首先,等同于:String s=3+ "a" + "b" + 3 + "c"; 
又:对于String的+操作会转化为StringBuffer.append,另外String常量都是对象,并且是“不变、共享的”,因此相当于这样: 
String num3="3"; 
String a="a"; 
String b="b"; 
String c="c"; 
String s=num3+a+b+num3+c; 
String s=new StringBuffer().append(num3).append(a).append(b).append(num3).append(c).toString(); 


算式右边有4个对象,右边的2个3只对应一个String对象,整个算式算下来,产生了一个String对象“3ab3c”,
除掉被回收的那个无名的StringBuffer外(这个应该是不算在内的),总共产生了5个对象。 


我觉得这里有几点是关键: 


1 String常量是对象(虽然程序中没有引用) 


2 对String的+操作符会将非String转为String,再经由StringBuffer产生新String 


3 String是不变类,String对象是共享的。这里“3”这个String只有一个实例,并没有产生2个对象 


4 上面那个算式要先算1+2得到3 


我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造器,
它们的初始化顺序以此是(静态变量、静态初始化块)>(变量、初始化块)>构造器。
我们也可以通过下面的测试代码来验证这一点: 


华为赛门铁克面试:
1.问了很多线程方面的,就线程方面的一些吧,比如collection里面的线程安全的类列举一下
2.让我讲了一下自己涉及的设计模式,叫我写了一下单例模式
3.还有就是问了spring的aop具体是怎么实现的,这个我没打出来
4.线程还问了sleep和wait方法的区别,以及锁方面的一些东西
5.还有就是问了让我自己实现一个arraylist,自己会怎么写,说一下思路
6.自己写一个hashmap会怎么实现,hashmap查找的效率高还是排序的数组查找效率高
7.实现线程有哪些方式,有什么优缺点,这个应该很简单吧


  阿里面试题:
原来人家都把问题答案挂上来了,只是我没有去留意而矣。怎么说好呢,很死板,但也有效,很简单。
http://www.iteye.com/job/topic/1032650?page=3
支付宝杭州面试不完全攻略(附赠真题若干)
1、Cookie与Session区别 
服务端跟客户端 
2、Post与Get区别 
显示传输跟form传输 post有字节数限制 form没有限制可以传输流 
3、谈Java的垃圾回收机制 
内存分:堆 栈 方法区 垃圾回收一般指的是堆回收 堆分新区老区 新区又分伊甸区跟救济区1,救济区2 ,
里面主要是coping方式回收  回收方式分串行并行并发, 回收算法分有向图发 coping法 火车头算法。
引用计数法在jdk1.5中已经抛弃.大体上分局部垃圾回收 跟full GC 
4、如何实现线程安全、高可用的hashMap 
就是jdk1.5中的concurrentHashMap的实现原理,分块,对块加LOCK 
5、重写equal()还得实现什么方法 
hashCode() 
6、条件查询慢如何优化 
索引 分区(垂直 水平) 缓存 表优化 SQL优化 
7、写查询各学科选修人数SQL 
8、事务属性包括哪些?Spring、Jdbc举例 
ACID  原子 持久 一致 隔离 
9、JVM的最大进程数 
win32 2000 linux 1000 
10、集群部署 
11、treeMap程序运行 
存放在里面的数据是默认排序的 或者按字符串或者按整型变量大小 
12、linux指令,本人没搞过,是解析字符串之类的 
cat name.txt|grep "" 
13、mysql创建序列等几个mysql的题 


1)处理并发问题,高并发HasMap(读写HashMap),HashMap如何避免key重复
2)多线程通信问题(传值、唤醒之类)
3)JVM 内存管理,GC回收、分类
4)TCP NIO的历史bug等等
5)2Core、2G的机子对2TB文本排序
6)String的indexOf实现
7)12球的称法,3个囚犯分汤
8)项目上遇到的问题,如何解决
9)开源项目,JDK部分包的源码等


1)处理并发问题,高并发HasMap(读写HashMap),HashMap如何避免key重复
2)多线程通信问题(传值、唤醒之类)
3)JVM 内存管理,GC回收、分类
4)TCP NIO的历史bug等等
5)2Core、2G的机子对2TB文本排序
6)String的indexOf实现
7)12球的称法,3个囚犯分汤
8)项目上遇到的问题,如何解决
9)开源项目,JDK部分包的源码等


1、自我介绍。 
还有诸如是否结婚。是否有意愿来杭州发展(其实本人觉得:百万年薪,非洲都可以去) 
2、为什么离职 
3、技术方面有哪些优势?哪些不足?如何弥补? 
4、服务器有没有过宕机?为什么?如何处理 
5、如何处理并发?锁机制 
6、如何找到消耗比较大的SQL 
7、项目情况。最大困难、规模/访问量、日志如何处理、个人在项目中的最大价值、几个业务的详细处理流程。如何进行代码质量控制。 
8、你有什么问题需要了解(个人比较俗,除了money还真不知道问点什么,还请有经验的大大指教) 
二、笔试 
规定时间1小时。感觉只花了40分钟,赶时间面试就没再答了。 
1、Cookie与Session区别 
2、Post与Get区别 
3、谈Java的垃圾回收机制 
4、如何实现线程安全、高可用的hashMap 
5、重写equal()还得实现什么方法 
6、条件查询慢如何优化 
7、写查询各学科选修人数SQL 
学生    学科    选课 
id     id     学生id 
name   name   学科id 
8、事务属性包括哪些?Spring、Jdbc举例 
9、JVM的最大线程数 (这个问题的讨论http://www.iteye.com/topic/1035818) 
10、集群部署 
11、treeMap程序运行 
12、linux指令,本人没搞过,是解析字符串之类的 
13、mysql创建序列等几个mysql的题 


三、第一轮面试 
面试官两名,轮流提问,。时间:1小时 
1、项目情况。问得比较详细,系统架构、包含哪些业务啊,采用的技术啊,并发问题的解决策略等等。 
2、如何看待加班这个问题(Ps:画外音估计就是这里是常加班的,碰到这个问题,弱势一方比较有利的只能顺坡下) 


四、第二轮面试 
面试官两名,轮流提问,其中一名为部门主管,主要提问人。时间:30分钟左右 
1、自我介绍、为什么离职(最郁闷的环节,有完没完啊) 
2、数字证书相关问题 
3、之前项目的情况 
4、希望找什么公司 
5、工资待遇要求 
6、个人信息表背面还没填,请签个名(ps:汗!做题时花了点时间观察其工作环境,童鞋们要注意) 


我说我在Java上做了10年,做过了某些项目,担任了某些角色,解决了什么问题,用到了什
么技术,写过哪些通用框架。我也不知道他听懂了没有,他没有对我的简历没有任何问题,
他就开始问了让我汗颜的技术问题:“你知道Object对象有些方法?” 
我一听就呆了,我真的没有去认真记,我估计他是想问关于并发和泛形的问题吧,我说我没
特意去记,如果用到并发和多线程的话主要有wait和notify,常用的clone,toString,equals
等。他接着问我wait和sleep有什么区别,我一听又晕了,Object有sleep方法吗?我怎么不
知道的,我很淡定地说,sleep是对象自己休息了一会儿,然后时间到了就自己醒来继续干活
,而wait,是要别人通知它醒来干活。 他接着问:“inputstream和reader有什么区别?” 
我心头又一震,这么高深的问题,我还一时还真的说不出来,我继续淡定:“inputstream是
读二进制流的,reader通过指定编码而读取不同格式的编码,比如UTF8或GBK之类的。” 
第三个问题,“List有几种实现?” 
这个问题我考过无数面试者,我觉得这只是例行的问题,我很干脆地回答,ArrayList和Lin
kedList,ArrayList的数据结构是数组,LinkedArray是链表,如果插入和删除的操作较多,
可以考虑用LinkedArray,如果是修改或查询数据,用ArrayList比较合适。 
第四个问题,“如何理解Hashmap?” 
我实在看不出有什么难度,我说Hashmap就是key对应value的一种结构体,Hash是一种快速检
索算法,非顺序存储,不能前缀检索,不支持太大的数据量,一般来说几万条没问题,通常
可用来做缓存机制,而数据库索引一般用btree而不会用到hash算法。 
我觉得这些问题都是Java的基础,我应聘的是架构师,我等待着更有深度的问题。“谢谢你的
面试,如果合适我们过两天会有人跟你进一步的联系的。”我一听这话几乎晕倒,继续淡定地
问:“据我所知所有的复试都会在今天完成,听您的意思我不太合适,请问可以告诉我原因吗
?” 结果已定,我只是想知道为什么! 
面试官说了我没有一个问题回答正确,我完成不懂hashmap,hashmap在超大数据量如几千万条
记录时,会有可能出现hash碰撞,不同的key有可能被覆盖。 
我晕,我写了这么多年的java真的没遇过这事,阿里的系统就么猛连hashmap都会因为数据量
过大而出错?我直说我真的没遇过这事,我用hashmap最多就处理过10万左右的记录,2GB的
JVM内存都提示内存溢出,即使控制在5万条之内,虽没内存溢出都感觉到检索的速度慢了很
多,比数据库要慢多了,所以我认为太多的数据不应该在Hashmap处理,而是应该交给数据库
去计算,我用hashmap写业务逻辑一般控制数据量在5000条左右为上限。我回来google了关于
hashmap会出现碰撞的问题,但查到的结果是有碰撞是正常的,但绝不会出现不同的KEY会因
为hashcode相同而覆盖,这跟我的理解完全一致,碰撞会影响性能,但不会出错。另外,有
一个前提是KEY的hash算法别写错,而且hashcode()返回是int型,不知道面试官指的KEY会被
覆盖是否是因为int类型的问题了,如果是这个问题的话,我早在2003年就已经解决过,根本
就不是问题,但已经无法求证他的想法。 
面试官说我不懂处理超大数据的系统,我说如果真的有这问题也不难解决啊,换一个能处理
大数据的hashmap就好了,或者用memcached,用C写的,性能比JAVA强多了,用得着这么复杂
吗,我问那你会如何处理,他说可以考虑hashtable或vector或其他的JAVA类,我说hashtab
le和vector是线程安全的,性能比hashmap要慢,但有并发时肯定不能用hashmap。我现在想
他是否把并发问题造成的key覆盖与大数据量时hashcode所造成的KEY覆盖搞混了,否则怎么
会把问题扯到并发上来。 我说OK,我的确不知道这问题,但是就这问题你就否定我了吗? 
面试官说还有很多,比如我不懂inputstream和reader的区别,我说就是一个支持编码一个不
支持编码,我这个回答有问题吗?那正确的答案是什么呢? 
面试官说reader是按字符读取的。我又晕,只要对java有一点经验的人都知道这点吧,一个
读byte一个读char。我说我的回答也对啊,指定编码就是为了按字符读取啊。他又说我你知
道UTF8,GBK,GB18030和unicode的区别吗?reader为什么能转换不同的编码,我说UTF8就是
unicode,汉字占3个字符,GB18030包含了所有的汉字,一般来说用GB2312也就足够了,但U
TF8更通用,JAVA内核用unicode处理字符的,所以编码转换成任何编码格式都是自然而然的
事,我们开发不需要关心这细节,当出现乱码时一般就是编码有误,转换一下就行了。我感
觉我一直在跟一个java小学生在聊天,而且我还是该小学生的学生。 
我问了我很关心的一个问题,请问你们公司的Java架构师主要的责任就是写这些hashmap吗? 
面试官回答我说,我们公司的架构师都做要经常写hashmap,要处理系统的一些BUG,要明白
其中的原理才能解决问题。 
我已经有点冲动忍不住说了:每个人的知识面都是有限的,时间也是有限的,不一定所有的
场景都会接触到,这些技术问题每个公司都应该积累了不少相应的解决办法,而且网上随便
都能google一堆解决思路和办法,当遇到时自然就能解决,一个有能力的人不能光看他做过
什么,没做过什么,而是要看他的学习能力,解决问题的能力才是最重要的。架构师要考虑
的不仅仅是代码,而是要从整个系统去考虑,要分析子系统之间的关系,数据架构,开发架
构,用户需求等方面。 
面试官表示很淡定:我觉得我要求的就是要这些,你不符合我的要求。 
面试已经束,回家。 


这股不对劲的味,我想应该是官僚味吧,整个面试过程HR部门并没有参与,阿里方表现得非
常随意,感觉是较低档次的面试会,这种情况是我这两年来已经很少遇到的了,或者阿里比
较牛,高手如云,不太在意从外部招聘人才吧。但是,这样的面试,通过面试的人能感受到
阿里对人才的认同感吗?进去之后是否要面对更多的官僚问题呢?不得而知。 


我知道我自己一定做错了什么,或者我的水平真的不行,或者阿里并不需要像我这样的人,
或者阿里hr并没有告诉我,我面试的只是初级程序员的职位,或者我应聘的渠道错了,或者
我遇到了错误的面试官,或者,我没告诉阿里,其实我不懂java。 


实在让我很羞愧,让阿里的JAVA同行见笑了。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:268733次
    • 积分:1886
    • 等级:
    • 排名:千里之外
    • 原创:31篇
    • 转载:20篇
    • 译文:4篇
    • 评论:14条
    最新评论