UTF8,GBK,GB18030和unicode的区别
死锁如何解决?
hibernate实现原理
Hibernate有啥缺点
分布式计算解决的是什么问题
多线程、反射、JVM,Spring源码交流、Spring MVC深入交流,分布式,负载均衡,高并发。。。。各种框架原理之类的
如何学习技术?
java事件监听机制 什么场景下使用?能给举个列子吗?
缓存ehcache、memcache、jvm调优、多线程、常用算法、
spring IOC、aop、事务管理、隔离性
mysql数据
sql调优
做的最好的项目
concurrent包
同步加锁有几种方法
共享锁、排他锁
【传说】广州-黑人牙膏(63021455) 10:09:18
你这样说就可以了
不用急着什么都学,珍惜每一次不同工作的机会,挖深做细,几年以后回过头来原来自己积攒了那么多!
xml解析分成几种模式,各种解析的优劣?
http 1.1协议中的Header中的缓存设置,返回头里面的trunked什么用途?
分布式计算关键问题是什么(调度,协同,数据交互)?
应用压力测试瓶颈如何评定,导致瓶颈的代码所属操作可能分成哪几类? …… 要留下更多疑问背后的答案,而不仅仅是那一点代码,那一些入门文档。
VMGC深层机制、类加载 ,包括Tomcat和Jboss的、线程相关的如 离线锁,互斥同步,java主线程和工作线程机制,concurrent包下的锁和sync关键字一些区别,然后就是concurrent包原代码的考 查、接着就是数据结构重点是hashmap的结构问题然后大到分布式缓存hash算法的一些应用、然后就是设计模式及在你们项目中的运用,你对设计模式的 理解,如一些模式之间的差别。然后就是互联网相关的东西了,如从前到后的架构,大数据量下并发同步方法,异步思想的理解,NIO的运用,CAP/BASE 思想在淘宝如订单这块的应用,还有如果你有NOSQL或Hadoop相关知识,他们可能会问Nosql中HBase中HMaster如何保证单 点,Hadoop的一些基本运用,如果你没在简历上写可能不会问的。问题可能是不同的面试官问的东西不一样,不过对java基础及思想问题都必不可少,还 有对项目的理解一定要到位,要不很容易被问得不知所措。在经历了3轮面试后,接下来就是hr的部门老大面试,这一关无非就是不按简历上来自我介绍,优点缺 点总结,职业规范,当前职位薪水,兴趣爱好等,不过最主要是的部门老大这,一般他会给你些紧张的氛围,然后故意问些你不可能不注意的领域,如你们公司做的 东西和竟争对手相比你们的优点和缺点,你对你对手公司平台的了解善等,过了这轮面试基本上就确定了你面试是否成功,然后接下来就是人品面试了,进了一个很 随和的人,谈项目,谈事业,谈人生,谈各种,反正是谈笑风声,这时基本上就确定你是否完全通过面试。
然后就开始问框架的东西(做的题目中有几个解答题也涉及了),什么Struts1的特点,Struts2的特点,Struts1和Struts2的区别,Struts1是否aciton线程安全,Struts2是否action线程安全,不安全为什么,安全又是怎么做的,Spring的设计思想,Spring的生命周期,Hibernate的什么什么(本人对Hibernate一概不通,平时都用ibatis),什么Struts2调优,什么Struts2的标签用过些什么,Strtus2的拦截器举例4-5,什么Srping的AOP应用,什么Struts2的action跳转到另一个action怎么把错误传过去等等
总结:本次面试很失败,没有认真研究主流框架底层的东西,工作中只知道拿来用就OK了,诸如框架的工作原理,设计思想,主要特征,实现方式等等,掌握不透。今后需要多花点时间研究框架代码和底层内部的东东。不能整天抱着《深入理解JVM》,《Thinking in JAVA》,《敏捷软件开发,原理,设计,实践》这些个啃了,搞点实用的。
网站架构:
CAP原则
BASE策略
异步(MessageQueue)
数据库
数据的水平切分及垂直切分
数据库读写分离
避免分布式事务
反范式的数据库设计
负载均衡
DNS负载均衡
反向代理负载均衡
LVS
缓存
数据库缓存
服务器缓存/页面缓存/数据缓存/静态化
反向代理缓存
Session/Share Nothing Architecture架构
浏览器优化
浏览器缓存/CDN/小图片合并
分布式文件系统(MogileFS)
Google搜索:
表数据量大如何处理
数据库如何分表
高并发。海量数据分析。搜索引擎。云计算。学好一样足够你进百度腾讯 阿里任何一样了。貌似今年研究生水平还行的进百度是15到20K左右,到腾讯14,5K左右
说些别的,谈谈招人,每份简历上都写的精通JAVA,精通SSH框架。偶滴个神哦,啥叫精通?连ClassLoader是什么都不知道,还好意思叫精通。真的要说精通的话,可以看看@RednaxelaFX,那才叫牛(本人感觉此人真乃技术奇才)。好吧,精通SSH,问你如何自己实现一个类似Struts1.x/2或者webwork之类的框架?对方无语!如何写个IOC框架?对方无语!Hibernate有啥缺点,实现原理?对方仍然无语! 还反问我:问这些干啥? 我崩了,好吧,我错了。
各种缓存调度算法(FIFO,LRU,LFU)
简单的同步?synchronized 怎么使用 加载方法,块,类上是什么意义? 可重入锁 为什么称为可冲重入锁? Condition 上的 await single singleAll 和Obeject 上的 wait notify notifyAll的区别? sleep 和wait的区别? 什么时候会抛出InterruptrdException。 经典同步问题 生产者与消费者问题, BlockingQueue ? 读者写者问题 读写队列? voliate 关键字什么意思? 有什么用? 原子操作什么用? 线程池为什么需要?
面试官看我mysql用的多,说他们有张表存log 有70W条了 查询性能扛不住了,居然问我怎么办,我告诉他们最简单的是做hash分表,他们才恍然大悟的感觉,这个要求是一签5年,不可能说是拿了户口就跑了,我不是那种混吃等死的人,所以我考虑的是这个
顺带说下英语学习:
唯有苦练!
说下我的经历:
每天听力洗耳二小时+,坚持2年+。
口语练习一年,每天听带模仿,看原声电影和sitcom.
至于单词量,自不必说,读硕的自然1w+以上。
找工作时,速成口语班锻炼一下!
35+后的事。没有资金和人脉,创业死的居多!
不要总想着技术牛逼,看看你周围四五十岁的长辈,靠资源(人脉,业务)吃饭的和靠技术吃饭的,那些混得好!
我的意思就是套个北京户口,对你以后长远发展有利,相信我。没有北京户口跟北京姑娘谈恋爱人家都不带理你。
=========================================
腾讯的面试十有八都是问你数据结构相关的,所以证明腾讯是家很重视基础的公司。所以如果你时间足够,除了C++,数据结构,算法外,最好能把操作系统,计算机网络,编译原理等基础课也拿下,那样你就十拿九稳了。
PS:另外英语水平一定要提高。
1、本科以上学历,3年以上Java语言开发经验;
2、熟悉Struts、Spring、Hibernate框架,熟悉JSP、Servlet、Ajax、Web Service技术;
3、熟悉TCP/IP,HTTP/S, 有网络通信编程经验;
4、掌握多线程开发;熟悉Linux操作系统,可以熟练使用常用的Linux命令完成日常工作,熟练掌握shell编程;富有创新精神,充满激情,有良好的沟通及协作能力。
不分的,不过没有C++和java 只是考了一点点C,然后很多基础知识,操作系统,编译原理,数据库,网络等,好像操作系统考的多点。我在南京考的。 有两道读程序的填空题
1、精通java语言,熟悉html/js/css以及相关web技术;
2、熟悉linux/UNIX平台,精通shell编程;
3、熟悉mysql,精于其性能优化;
4、要求有中大型分布式系统的架构设计经验与开发经验;
5、要求有4年及以上的互联网公司工作经验;
如果你符合以上条件,如果你足够自信,请把你的简历发到信箱[email protected]
说明:
1.请在邮件标题中注明:应聘腾讯java职位
2.请直接把简历贴到邮件正文中,不接受任何附件形式的简历。
互联网的东西,高并发,缓存系统,均衡负载……感觉都比较有水平
笔试题:
Java相关的工作当然是我最想要的工作。 开始工作了,问题也开始出现了:ant以前看过,不是很熟,以前都是用JBuilder(当时流行这个);struts从来没有听说过;Linux,装 过,没深入用过;JVM调优,真不懂; Oracle数据库,装过,也算用过,但是在Linux下真不会使了,当然更不了解其内部的东西;JMS,JMX知道,不熟,并发编程更是不懂了;还有操 作系统,网络通讯的底层的东西等等等等,很多东西,感觉自己不熟悉的东西太多了。
一年过去了,ant很熟了,所有项目工程的编译打包脚本都是我写的,真的很辛苦的~。Linux的很多命令也会用了。
两年过去了,struts差不多专了。可以自己原创新产品的图形界面框架了。已经用Bash Shell来写了很多脚本了,也开始逐步更深入的去了解Linux了。能解决一些Oracle的问题了。EJB,JMS,JMX之类的东西,因为都有了差 不多固定的应用模式,用起来也不难了。也开始去接触性能方面的东西了。
工作三年了,开始遇到问题了:性能问题。因为以前做的东西对这方面的要求不高了,现在要遇到了。首先是多线程编程和IO编程的问题。多线程方面的编程,虽 然可以从书上学到一些内容,还可以参照别人的代码。但是当应用程序大规模的应用起来时,问题就出来了。没有并发编程方面的理论知识,要写出高质量的代码, 真的很难,操作系统的知识也很重要。还有EJB、JMS、CORBA中出现的一些棘手问题,自己真的解决不了,因为对它们的理解都是表面的,并没有深入理 解。但是也没有办法,没有那么多时间去系统学习了,只能是出现问题的时候去Google学习来解决问题了,但是为什么那样解决,很多东西自己真不知道。这 可能工作中的必然阶段。但是这也是经验积累的重要阶段。
http://freeheron.iteye.com/blog/1159409
使用 Annotation 并对 DAO 层封装具有分页功能的 S2SH 整合实例
http://www.blogjava.net/lishunli/archive/2010/03/10/315055.html
使用Struts2上传图片存取到Mysql中并读取出来显示在页面上
http://www.blogjava.net/lishunli/archive/2010/11/14/338012.html
练了十分钟的汉字,等面试。我一直奇怪阿里的面试为什么对时间的要求是这么随便呢,我很快就找到答案了,原来阿里是海选,5个一堆地叫进去面试,5分钟叫一次,里面有10个面试官,叽叽喳喳地热闹得不得了。我很快被叫进去了,面试官是一个看起来28岁左右,稍胖的白脸男生,他用3秒就扫完我的简历,然后要求我自我介绍。我说我在Java上做了10年,做过了某些项目,担任了某些角色,解决了什么问题,用到了什么技术,写过哪些通用框架。我也不知道他听懂了没有,他没有对我的简历没有任何问题,他就开始问了让我汗颜的技术问题:“你知道Object对象有些方法?”
我一听就呆了,我真的没有去认真记,我估计他是想问关于并发和泛形的问题吧,我说我没特意去记,如果用到并发和多线程的话主要有wait和notify,常用的clone,toString,equals等。他接着问我wait和sleep有什么区别,我一听又晕了,Object有sleep方法吗?我怎么不知道的,我很淡定地说,sleep是对象自己休息了一会儿,然后时间到了就自己醒来继续干活,而wait,是要别人通知它醒来干活。
他接着问:“inputstream和reader有什么区别?”
我心头又一震,这么高深的问题,我还一时还真的说不出来,我继续淡定:“inputstream是读二进制流的,reader通过指定编码而读取不同格式的编码,比如UTF8或GBK之类的。”
第三个问题,“List有几种实现?”
这个问题我考过无数面试者,我觉得这只是例行的问题,我很干脆地回答,ArrayList和LinkedList,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类,我说hashtable和vector是线程安全的,性能比hashmap要慢,但有并发时肯定不能用hashmap。我现在想他是否把并发问题造成的key覆盖与大数据量时hashcode所造成的KEY覆盖搞混了,否则怎么会把问题扯到并发上来。
我说OK,我的确不知道这问题,但是就这问题你就否定我了吗?
面试官说还有很多,比如我不懂inputstream和reader的区别,我说就是一个支持编码一个不支持编码,我这个回答有问题吗?那正确的答案是什么呢?
面试官说reader是按字符读取的。我又晕,只要对java有一点经验的人都知道这点吧,一个读byte一个读char。我说我的回答也对啊,指定编码就是为了按字符读取啊。他又说我你知道UTF8,GBK,GB18030和unicode的区别吗?reader为什么能转换不同的编码,我说UTF8就是unicode,汉字占3个字符,GB18030包含了所有的汉字,一般来说用GB2312也就足够了,但UTF8更通用,JAVA内核用unicode处理字符的,所以编码转换成任何编码格式都是自然而然的事,我们开发不需要关心这细节,当出现乱码时一般就是编码有误,转换一下就行了。我感觉我一直在跟一个java小学生在聊天,而且我还是该小学生的学生。
我问了我很关心的一个问题,请问你们公司的Java架构师主要的责任就是写这些hashmap吗?
面试官回答我说,我们公司的架构师都做要经常写hashmap,要处理系统的一些BUG,要明白其中的原理才能解决问题。
我已经有点冲动忍不住说了:每个人的知识面都是有限的,时间也是有限的,不一定所有的场景都会接触到,这些技术问题每个公司都应该积累了不少相应的解决办法,而且网上随便都能google一堆解决思路和办法,当遇到时自然就能解决,一个有能力的人不能光看他做过什么,没做过什么,而是要看他的学习能力,解决问题的能力才是最重要的。架构师要考虑的不仅仅是代码,而是要从整个系统去考虑,要分析子系统之间的关系,数据架构,开发架构,用户需求等方面。
面试官表示很淡定:我觉得我要求的就是要这些,你不符合我的要求。
面试已经束,回家。
http://www.iteye.com/topic/1120682
习题:
栈和队的区别
数据库union ,和union all的区别,回答是 一个会去重,一个不会去重
死锁的产生原因
2个或以上线程,彼此占有某一对小的锁,在同步代码块中,却需要对方对象的锁,这种互不相让的状态,就是死锁。他问死锁如何解决????
接口和抽象类的区别
事物的抽象用类,行为的抽象用接口,抽象类可以复用,接口可以实现多态
经历:
谢谢,圈子里的兄弟们,这次找工作,其实也学到了很多东西,也为接下来,的目标确立了方向,给兄弟们忠告,如果是对技术有兴趣,一定要认定方向,如果对业务感兴趣也要抓准方向,否则就跟我四年一样,说什么,什么都会,说什么 什么都不会的那种,我大学一个同事,也是爱好编程,但是人家一门心思专研 bi这块,现在拿着20+的月薪在埃森哲爽的一沓糊涂,像我等,大部分时候是 心比天高,命比纸薄,一定要确立方向 ,并为之持续奋斗,就一定会有出头之日
技术这块,如果是java的,至少我知道的方向有 dba,大数据处理,算法,大型网站架构………………这块可以参考阿里系的平台技术部的团队,他们每个方向都有一个团队,每个团队有自己的技术博客,里面的文章,质量都蛮高的。
对如果对jvm,编译器专注的话,也可以成为大神,如撒加。