JAVA程序员面试总结,高手整整理加强版 出自“CSDN(www.csdn.net)”

来源:互联网 发布:电脑发短信软件 编辑:程序博客网 时间:2024/04/20 02:30

转载:偶然看见的一篇学习的框架宝典,不止是面试有用,也可以作为平时学习的参考。




  • VR 应用设计的 8 个建议 
    • 大数据技术人年度盛事! BDTC 2016将于12月8-10日在京举行
    • 七牛云北美存储区域上线,聚焦一站式数据管理
    • 锐捷网络综合运维中心:面向未来I...
    • 销量低客流少?换一台路由器试试
    • 亚信安全中标南方电网 把守企业...
    • Fortinet CTO谢华:今...
    • 亚信安全:2017年勒索软件与商...
    • 亚信安全中标广州白云国际机场 ...
    • Fortinet:安全信息共享迫...
    • 趋势科技:嘿!你的“苹果”已经被...
    • 烽火FitNet,面向SDN/N...
    • 烽火FitNet解决方案荣获“N...
    • 烽火光与IP协同SDN解决方案荣...
    • 亚信安全从RSA看人工智能安全:...
    • SDN/NFV峰会2017在京隆...
    • F5“We Make Apps ...
    • 亚信安全成为 “上海网络与信息安...
    • Fortinet入驻青云市场 ...
    • 亚信安全观点:企业正在从与勒索软...
    • 工信部信息通信发展司处长黄业晶发...
    • 人民邮电报社总编、中国信息产业网...
    • SDN/NFV产业大奖重磅揭晓 ...
    • 苗圩部长:加快建设工业互联网是打...
    • Fortinet再次刷新防火墙性...
    • WAF与威胁情报 参加 RSA ...
    • 可信云公布第七批评估结果-云主机...
    • Fortinet Securit...
    • 智·御未来 亚信安全巡展·20...
    • 2017全球云计算开源峰会技术前...
    • HDS发布全新视频分析软件HVA...
    • RSA2017:盛邦安全,继往开...
    • 趋势科技中国提醒 谨防“情人节”...
    • F5 提高应用安全性 为数字经济...
    • 2017中国通信行业云计算峰会3...
    • DevOpsDays 2017 ...
    • Qlik Sense Cloud...
    • u-blox收购SIMCom无线...
    • APT攻击到底有多恐怖?美国联邦...
    • 2017工业互联网峰会即将在北京...
    • F5:立足网络安全 应用驱动未来
    • 亚信安全带你涨姿势:网警如何“抓...
    • 复旦大学携手亚信安全打造云安全防...
    • SAS被Gartner评为数据质...
    • “红包”和“炸弹”只有一个二维码...
    • 取势合众•驭未来 亚信安全201...
    • F5调查显示安全问题正在推动应用...
    • 安森美和Hexius扩展下一代混...
    • Qlik收购Idevio 优化客...
    • 安森美半导体和Hexius半导体...
    • “Master”连胜世界围棋冠军...
    • 何宝宏:互联网迎来技术革命的新时...
    • 亚信安全与新华三战略合作 布局“...

    屌丝逆袭?舍我其谁!

    • 【CSDN APP】程序员必备
    • CSDN知识库-知识精华
    • 把博客放进口袋
    • CSDN移动客户端,全新亮相
    CSDN > CSDN论坛 > 扩充话题 > 职场生涯
    返回列表
    • 管理菜单
    • 结帖
    • 发帖
    • 回复
    • 取消关注

    [推荐] JAVA程序员面试总结,高手整整理加强版 [问题点数:40分]

     收藏
    楼主发表于: 2016-07-05 10:22:57
    java学习java教程java程序员
    第一阶段:三年

    我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本 上的内容迈向真正的企业级开发。我们知道如何团队协作、如何使用项目管理工具、项目版本如何控制、我们写的代码如何测试如何在线上运行等等,积累了一定的 开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段。

    第二阶段:五年

    五年又是区分程序员的第二个门槛。有些人在三年里,除了完成工作,在空余时间基本不会研究别的东西,这些人永远就是个Coder,年纪大一些势必被 更年轻的人给顶替;有些人在三年里,除了写代码之外,还热衷于研究各种技术实现细节、看了N多好书、写一些博客、在Github上分享技术,这些人在五年 后必然具备在技术上独当一面的能力并且清楚自己未来的发展方向,从一个Coder逐步走向系统分析师或是架构师,成为项目组中不可或缺的人物。

    第三阶段:十年

    十年又是另一个门槛了,转行或是继续做一名程序员就在这个节点上。如果在前几年就抱定不转行的思路并且为之努力的话,那么在十年的这个节点上,有些 人必然成长为一名对行业有着深入认识、对技术有着深入认识、能从零开始对一个产品进行分析的程序员,这样的人在公司基本担任的都是CTO、技术专家、首席 架构师等最关键的职位,这对于自己绝对是一件荣耀的事,当然老板在经济上也绝不会亏待你。

    第一部分总结一下,我认为,随着你工作年限的增长、对生活对生命认识的深入,应当不断思考三个问题:

    1、我到底适不适合当一名程序员?

    2、我到底应不应该一辈子以程序员为职业?

    3、我对编程到底持有的是一种什么样的态度,是够用就好呢还是不断研究?

    最终,明确自己的职业规划,对自己的规划负责并为之努力。

    关于项目经验

    在网上经常看到一些别的朋友有提出项目经验的问题,依照我面试的感觉来说,面试主要看几点:项目经验+基本技术+个人潜力(也就是值不值得培养)。

    关于项目经验,我认为并发编程网的创始人方腾飞老师讲的一段话非常好:介绍产品时面试官会考察应聘者的沟通能力和思考能力,我们大部分情况都是做产品的一个功能或一个模块,但是即使是这样,自 己有没有把整个系统架构或产品搞清楚,并能介绍清楚,为什么做这个系统?这个系统的价值是什么?这个系统有哪些功能?优缺点有哪些?如果让你重新设计这个 系统你会如何设计?

    我觉得这就已经足以概括了。也许你仅仅工作一年,也许你做的是项目中微不足道的模块,当然这些一定是你的劣势且无法改变,但是如何弥补这个劣势?

    从方老师的话中我总结几点:

    1、明确你的项目到底是做什么的,有哪些功能。

    2、明确你的项目的整体架构,在面试的时候能够清楚地画给面试官看并且清楚地指出从哪里调用到哪里、使用什么方式调用。

    3、明确你的模块在整个项目中所处的位置及作用。

    4、明确你的模块用到了哪些技术,更好一些的可以再了解一下整个项目用到了哪些技术。

    在你无法改变自己的工作年限、自己的不那么有说服力的项目经验的情况下(这一定是扣分项),可以通过这种方式来一定程度上地弥补并且增进面试官对你的好感度。

    关于专业技能

    写完项目接着写写一名3年工作经验的Java程序员应该具备的技能,这可能是Java程序员们比较关心的内容。我这里要说明一下,以下列举的内容不是都要会的东西—-但是如果你掌握得越多,最终能得到的评价、拿到的薪水势必也越高。

    1、基本语法

    这包括static、final、transient等关键字的作用,foreach循环的原理等等。今天面试我问你static关键字有哪些作 用,如果你答出static修饰变量、修饰方法我会认为你合格,答出静态块,我会认为你不错,答出静态内部类我会认为你很好,答出静态导包我会对你很满 意,因为能看出你非常热衷研究技术。

    最深入的一次,我记得面试官直接问到了我Volatile关 键字的底层实现原理(顺便插一句,面试和被面试本身就是相对的,面试官能问这个问题同时也让面试者感觉到面试官也是一个喜爱研究技术的人,增加了面试者对 公司的好感,我最终选择的就是问了这个问题的公司),不要觉得这太吹毛求疵了—-越简单的问题越能看出一个人的水平,别人对你技术的考量绝大多数都是以深度优先、广度次之为标准的,切记。

    2、集合

    非常重要,也是必问的内容。基本上就是List、Map、Set,问的是各种实现类的底层实现原理,实现类的优缺点。

    集合要掌握的是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、 HashSet的实现原理,能流利作答,当然能掌握CopyOnWrite容器和Queue是再好不过的了。另外多说一 句,ConcurrentHashMap的问题在面试中问得特别多,大概是因为这个类可以衍生出非常多的问题,关于ConcurrentHashMap, 我给网友朋友们提供三点回答或者是研究方向:

    (1)ConcurrentHashMap的锁分段技术。

    (2)ConcurrentHashMap的读是否要加锁,为什么。

    (3)ConcurrentHashMap的迭代器是强一致性的迭代器还是弱一致性的迭代器。

    3、设计模式

    本来以为蛮重要的一块内容,结果只在阿里巴巴B2B事业部面试的时候被问了一次,当时问的是装饰器模式。

    当然咱们不能这么功利,为了面试而学习,设计模式在工作中还是非常重要、非常有用的,23种设计模式中重点研究常用的十来种就可以了,面试中关于设计模式的问答主要是三个方向:

    (1)你的项目中用到了哪些设计模式,如何使用。

    (2)知道常用设计模式的优缺点。

    (3)能画出常用设计模式的UML图。

    4、多线程

    这也是必问的一块了。因为三年工作经验,所以基本上不会再问你怎么实现多线程了,会问得深入一些比如说Thread和Runnable的区别和联 系、多次start一个线程会怎么样、线程有哪些状态。当然这只是最基本的,出乎意料地,几次面试几乎都被同时问到了一个问题,问法不尽相同。

    总结起来是 这么一个意思:

    假如有Thread1、Thread2、ThreaD3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现?

    聪明的网友们对这个问题是否有答案呢?不难,java.util.concurrent下就有现成的类可以使用。

    另外,线程池也是比较常问的一块,常用的线程池有几种?这几种线程池之间有什么区别和联系?线程池的实现原理是怎么样的?实际一些的,会给你一些具体的场景,让你回答这种场景该使用什么样的线程池比较合适。

    最后,虽然这次面试问得不多,但是多线程同步、锁这块也是重点。synchronized和ReentrantLock的区别、 synchronized锁普通方法和锁静态方法、死锁的原理及排查方法等等。

    5、JDK源码

    要想拿高工资,JDK源码不可不读。上面的内容可能还和具体场景联系起来,JDK源码就是实打实地看你平时是不是爱钻研了。我面试过程中被问了不 少JDK源码的问题,其中最刁钻的一个问了我,String的hashCode()方法是怎么实现的,幸好我平时String源代码看得多,答了个大 概。

    JDK源码其实没什么好总结的,纯粹看个人,总结一下比较重要的源码:

    (1)List、Map、Set实现类的源代码

    (2)ReentrantLock、AQS的源代码

    (3)AtomicInteger的实现原理,主要能说清楚CAS机制并且AtomicInteger是如何利用CAS机制实现的

    (4)线程池的实现原理

    (5)Object类中的方法以及每个方法的作用

    这些其实要求蛮高的,我去年一整年基本把JDK中重要类的源代码研究了个遍,真的花费时间、花费精力,当然回头看,是值得的—-不仅仅是为了应付面试。

    6、框架

    老生常谈,面试必问的东西。一般来说会问你一下你们项目中使用的框架,然后给你一些场景问你用框架怎么做,比如我想要在Spring初始化bean 的时候做一些事情该怎么做、想要在bean销毁的时候做一些事情该怎么做、MyBatis中$和#的区别等等,这些都比较实际了,平时积累得好、有多学习 框架的使用细节自然都不成问题。

    如果上面你的问题答得好,面试官往往会深入地问一些框架的实现原理。问得最多的就是Spring AOP的实现原理,当然这个很简单啦,两句话就搞定的的事儿,即使你不会准备一下就好了。我遇到的最变态的是让我画一下Spring的Bean工厂实 现的UML图,当然面对这样一个有深度的问题,我是绝对答不出来的/(ㄒoㄒ)/~~

    7、数据库

    数据库十有八九也都会问到。一些基本的像union和union all的区别、left join、几种索引及其区别就不谈了,比较重要的就是数据库性能的优化,如果对于数据库的性能优化一窍不通,那么有时间,还是建议你在面试前花一两天专门 把SQL基础和SQL优化的内容准备一下。

    不过数据库倒是不用担心,一家公司往往有很多部门,如果你对数据库不熟悉而基本技术又非常好,九成都是会要你的,估计会先把你放到对数据库使用不是要求非常高的部门锻炼一下。

    8、数据结构和算法分析

    数据结构和算法分析,对于一名程序员来说,会比不会好而且在工作中绝对能派上用场。数组、链表是基础,栈和队列深入一些但也不难,树挺重要的,比较 重要的树AVL树、红黑树,可以不了解它们的具体实现,但是要知道什么是二叉查找树、什么是平衡树,AVL树和红黑树的区别。记得某次面试,某个面试官和 我聊到了数据库的索引,他问我:你知道索引使用的是哪种数据结构实现吗?

    我答到用的Hash表吧,答错。他又问,你知道为什么要使用树吗?我答到因为Hash表可能会出现比较多的冲突,在千万甚至是上亿级别的数据面 前,会大大增加查找的时间复杂度。而树比较稳定,基本保证最多二三十次就能找到想要的数据,对方说不完全对,最后我们还是交流了一下这个问题,我也明白了 为什么要使用树,这里不说,网友朋友们觉得索引为什么要使用树来实现呢?

    至于算法分析,不会、不想研究就算了,记得某次面试对方问我,Collections.sort方法使用的是哪种排序方法,额,吐血三升。当然为了 显示我的博学,对算法分析也有一定的研究(⊙﹏⊙)b,我还是硬着头皮说了一句可能是冒泡排序吧。当然答案肯定不是,有兴趣的网友朋友们可以去看一下 Collections.sort方法的源代码,用的是一种叫做TimSort的排序法,也就是增强型的归并排序法。

    9、Java虚拟机
    •  
    •  
    对我有用[5] 丢个板砖[0] 引用 | 举报 | 管理
    回复次数:61
    #1 得分:0回复于: 2016-07-05 10:23:35
    出乎我的意料,Java虚拟机应该是很重要的一块内容,结果在这几家公司中被问到的概率几乎为0。要知道,我去年可是花了大量的时间去研究Java虚拟机的,光周志明老师的《深入理解Java虚拟机:JVM高级特性与最佳实践》,我就读了不下五遍。

    言归正传,虽然Java虚拟机没问到,但我觉得还是有必要研究的,我就简单地列一个提纲吧,谈谈Java虚拟机中比较重要的内容:

    (1)Java虚拟机的内存布局

    (2)GC算法及几种垃圾收集器

    (3)类加载机制,也就是双亲委派模型

    (4)Java内存模型

    (5)happens-before规则

    (6)volatile关键字使用规则

    也许面试无用,但在走向大牛的路上,不可不会。

    10、Web方面的一些问题

    Java主要面向Web端,因此Web的一些问题也是必问的。

    我碰到过问得最多的两个问题是:

    谈谈分布式Session的几种实现方式。

    常用的四种能答出来自然是让面试官非常满意的。

    另外一个常问的问题是:讲一下Session和Cookie的区别和联系以及Session的实现原理。这两个问题之外,web.xml里面的内容是重点,Filter、Servlet、Listener,不说对它们的实现原理一清二楚吧,至少能对它们的使用知根知底。另外,一些细节的方面比如get/post的区别、forward/重定向的区别、HTTPS的实现原理也都可能会被考察到。

    最后,如果有兴趣有时间,建议学习、研究一下SOA和RPC,面向服务体系,大型分布式架构必备,救命良方、包治百病、屡试不爽。
    对我有用[2] 丢个板砖[0] 引用 | 举报 | 管理
    #2 得分:0回复于: 2016-07-05 10:23:52
    楼主在哪里瞎编的?
    对我有用[0] 丢个板砖[6] 引用 | 举报 | 管理
    #3 得分:0回复于: 2016-07-05 10:27:06
    如果你感觉是瞎编的就是吧
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #4 得分:0回复于: 2016-07-05 10:52:06
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #5 得分:0回复于: 2016-07-05 17:10:08
    总结的不错 有一点水准 应该有多年的经验
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #6 得分:0回复于: 2016-07-18 20:51:52
    谢谢楼主,我正准备从嵌入式转java呢(嵌入式6年),看了楼主的帖子感谢万分,希望楼主多发些技术贴,让我们可以多学习一下
    对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
    #8 得分:0回复于: 2016-09-07 11:20:49
    引用 2 楼 jhdxhj 的回复:
    楼主在哪里瞎编的?
    看来你是小白或者就是初创公司出身
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #9 得分:0回复于: 2016-11-11 15:33:21
    楼主很有水平,这篇总结帖对java工作多年的人很有指导意义,包含了所有常用的知识面
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #10 得分:0回复于: 2016-11-11 20:01:17
    我觉得lz是瞎编 的,并且楼主感觉不靠谱,不知道哪个机构的
    对我有用[3] 丢个板砖[4] 引用 | 举报 | 管理
    #11 得分:0回复于: 2017-02-07 13:40:34
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #12 得分:0回复于: 2017-02-10 14:53:04
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #13 得分:0回复于: 2017-02-15 05:46:31
    这应该比较适合开发人员!
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #14 得分:0回复于: 2017-02-15 17:17:17
      总结的很好,受教了。
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #15 得分:0回复于: 2017-02-17 21:28:04
    楼主工作多少年了?现在是什么职位呢?
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #16 得分:0回复于: 2017-02-20 15:02:14
    “XXXX的源代码是通过哪种算法实现的”这种面试题,我是挺无语的。。。
    对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
    #17 得分:0回复于: 2017-02-20 17:15:23
    理论性太强。java这玩意,技术性的东西越来越少了,因为很多东西都被封装了,开源了,你想要一个东西,往往都有现成的,比你自己搞的要好的多。公司要的是解决问题的的,而不是研究问题的。
    对我有用[1] 丢个板砖[2] 引用 | 举报 | 管理
    #18 得分:0回复于: 2017-02-20 20:20:31
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #19 得分:0回复于: 2017-02-21 08:14:40
    呵呵,似乎在某个人的博文上看过其中的几段
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #20 得分:0回复于: 2017-02-21 09:47:57
    写的很实在,是干货
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #21 得分:0回复于: 2017-02-21 10:28:43
    我感觉说的挺好,对我挺有帮助
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #22 得分:0回复于: 2017-02-21 10:36:58
    不管是不是瞎编的,但是从面试经历来看确实问到了其中一些,看了之后感觉还有很多地方要提高
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #23 得分:0回复于: 2017-02-21 13:01:11
    今天面试去了,确实没有出这个圈。只不过我研究不深,没通过。被问了一个注解的问题,自定义注解怎么声明,什么时候需要用到自定义注解。
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #24 得分:0回复于: 2017-02-21 15:13:42
    得努力啊,按着这个标准走吧
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #25 得分:0回复于: 2017-02-21 16:04:48
    任重而道远啊
    对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
    #26 得分:0回复于: 2017-02-21 16:34:10
    我也想问楼主工作多少年了?
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #27 得分:0回复于: 2017-02-21 18:39:25
    原文地址  http://www.cnblogs.com/xrq730/p/5260294.html   楼主是作者吗?
    对我有用[3] 丢个板砖[0] 引用 | 举报 | 管理
    #28 得分:0回复于: 2017-02-22 11:36:57
    看完楼主这些 深感惭愧   
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #29 得分:0回复于: 2017-02-22 11:41:02
    引用 10 楼 fengyufuchen 的回复:
    我觉得lz是瞎编 的,并且楼主感觉不靠谱,不知道哪个机构的
    为啥
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #30 得分:0回复于: 2017-02-22 13:20:13
    居然上首页?
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #31 得分:0回复于: 2017-02-22 13:46:13
    楼主还是总结的比较实在
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #32 得分:0回复于: 2017-02-22 15:15:55
    感觉好有道理!
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #33 得分:0回复于: 2017-02-23 10:33:51
    4年JAVA coder路过,路过觉得写得挺好。这里还是有很多我不懂得东西,文章带走了。
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #34 得分:0回复于: 2017-02-23 13:21:48
    面试时直接上项目,http://www.ofmonkey.com/
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #35 得分:0回复于: 2017-02-23 18:04:01
    经验值得学习
    对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
    #36 得分:0回复于: 2017-02-24 07:20:12
    学java就两个问题。
    java是面向对象的语言。
    这东西是国外的。

    搞清楚面向对象的历史演变,java的每个特性都是基于面向对象产生的。java就是面向对象而生的,
    java就是一种思想。你们人手不是有一本启蒙书籍叫think in java麽?。国外书籍用的是think,,国内的书籍都是深入理解/学习/深入浅出/30天掌握/教程XXXX。字眼的书籍。。脑袋没毛病吧,随便一本书平均下来都有500页,各种深入理解,掌握过后。你的年龄也到该入土的时候了。(此处应该有掌声)不是流行大数据麽?Hadoop是因为一篇论文诞生的,论文的作者是google公司的员工。但是Hadoop 得诞生要比google公司来得快。在这点只能说java干得漂亮,要不然你们要想体会这种黑科技至少需要5年以上。。有时候真的很羡慕国内写代码的人,这些小学没毕业的人居然可以拿到国外那些至少要初中毕业才能拿到的工资。。而国外那些高中毕业的人只能去帮JAVA写些源代码义务劳动。

    其实学习java就是学习面向对象和多线程。
        精通java的最终目标就是学习面向对象,在JAVA的类库里面有很多的骨架实现。设计模式的出现要比java早很多年。设计模式的思想的作者或鼻祖是缘于一个砖匠,搬砖的砖。你们应该很庆幸设计模式就只有20几种,终归到底是缘于java的特性也就这么几个。国外做过研究人能同时记住的东西是7±2.。很巧的是java的特性也就7±2。但是7±2也就最多组成20几种设计模式。好了问题来了,你能记住几个java特性(java特性最多也就是9个哦),如果你能全部记住,那么问题升华了,你精通多少种设计模式。如果你们背的话,我能从1背到10亿。

         还有就是多线程。多线程只能说太难了。java在多线程的上很落后的。Volatile关键字反反复复跟新了几次背后原理实现,对于伪共享的实现也是在1.8才加入@sun.misc.Contended的。。多线程,伪共享,锁机制,同步机制。重锁机制。这些在15年前是高级课题,也是为什么很多java书籍都把多线程放在最后一章节。也是15年前存在的东西。。看到没有,就算是人家把java开源你们在技术上也会落后15年,因为JDK现在才到1.8。。为什么是15年前,因为15年前摩尔定律不再适用了,intel的老板跪在地上说,如果CPU超过4.0G我公司要倒闭了。所以多核的时代来临了。。。回过头来为什么说多线程难,学习多线程,你要搞清楚同步,异步。管程(什么是管程,就是java文件代码上加了synchronized关键字后,变成class文件后。synchronized关键字变成了java虚拟机的Moniters命令的中文翻译)。锁机制,阻塞,以及线程的几种状态。什么顺序一致性,原子性,有锁,无锁。安全性,读写同步/读不用同步,写同步。多核,compareAndSet(),getAndSet(),伪共享,高速缓存,Volatile关键字,系统总线。等等等等。。多线程机制虽然多,但是这不是思想的重要性。再我看来最重要的就是为什么10年就有AtomicInteger为什么现在只在原来的基础上跟新了一个LongAdder, 为什么这两个类都是同一个老头写的而不是年轻人。为什么这两个类都引用了sun.misc.Unsafe这个非公开类。为什么是不安全的。现在发现多线程是有多难了吧,没有发现这段话比上面那段面向对象的字数都多了一倍麽。。
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #37 得分:0回复于: 2017-02-24 16:08:53
    其实说了一大堆,就特么没有一个可以参考的回答,跟没说一样
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #38 得分:0回复于: 2017-02-24 17:27:54
    很有指导意义
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #39 得分:0回复于: 2017-02-27 16:17:54
    引用 27 楼 baosxie 的回复:
    原文地址  http://www.cnblogs.com/xrq730/p/5260294.html   楼主是作者吗?
    明显是转载的博客园的一部分文章,那有原著发贴只发一半的
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #40 得分:0回复于: 2017-03-02 09:19:44
    楼主总结的不错
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #41 得分:0回复于: 2017-03-02 12:59:17
    我觉得楼主写的非常的好谢谢你的分享
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #42 得分:0回复于: 2017-03-02 17:03:16
    谢谢java妞妞,正值跳槽犹豫期,这样的整理譬如任务清单
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #43 得分:0回复于: 2017-03-02 17:26:03
    感觉楼主写的不错,挺好的,我有两年经验吧,还真是那么回事
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #44 得分:0回复于: 2017-03-02 17:27:50
    http://www.cnblogs.com/xrq730/p/5260294.html
    转载别人的博文至少要附上原文链接啊,复制两段话就当你的了?
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #45 得分:0回复于: 2017-03-02 23:04:36  来自移动客户端
    谢谢楼主,我正准备从嵌入式转java呢

    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #46 得分:0回复于: 2017-03-03 14:36:39
    引用 17 楼 xieyunchao 的回复:
    理论性太强。java这玩意,技术性的东西越来越少了,因为很多东西都被封装了,开源了,你想要一个东西,往往都有现成的,比你自己搞的要好的多。公司要的是解决问题的的,而不是研究问题的。

    理解里面的原理用起来才顺手,不然永远都是别人告诉你怎么用,而不是自己琢磨这个东西可以用在什么地方
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #47 得分:0回复于: 2017-03-03 17:17:37
    刚工作的小白,感觉好难啊
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #48 得分:0回复于: 2017-03-04 13:56:09
    引用 45 楼 q525093551_ 的回复:
    谢谢楼主,我正准备从嵌入式转java呢
    嵌入式前景不好吗?为什么要转呢?
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #49 得分:0回复于: 2017-03-04 17:00:54
    写的挺好的啊
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #50 得分:0回复于: 2017-03-05 10:27:11
    学习了。。。
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    返回列表
    • 管理菜单
    • 结帖
    • 发帖
    • 回复
    • 取消关注
    yu
    • 晒图谱,涨知识,得好礼
    • Swift 问题与解答
    • 视频直播技术免费课
    • 专家问答-Android老司机帮你进阶

    回复内容   移动客户端回帖所得专家分翻倍,下载体验!
    • 编辑
    • 预览
    • 粗体
    • 斜体
    • 下划线
    • ---------------
    • 字体大小
    • 字体颜色
    • ---------------
    • 图片
    • ---------------
    • 左对齐
    • 居中对齐
    • 右对齐
    • ---------------
    • 引用
    • 代码
    • ---------------
    • QQ
    • monkey
    • onion
    • ---------------
    • 押宝
    • ---------------
    • 清除格式
    每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分 你还可以输入10000个字符(Ctrl+Enter)
    1. 请遵守CSDN用户行为准则,不得违反国家法律法规。
    2. 转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

  • VR 应用设计的 8 个建议
  •  

    • 大数据技术人年度盛事! BDTC 2016将于12月8-10日在京举行
    • 七牛云北美存储区域上线,聚焦一站式数据管理
    • 锐捷网络综合运维中心:面向未来I...
    • 销量低客流少?换一台路由器试试
    • 亚信安全中标南方电网 把守企业...
    • Fortinet CTO谢华:今...
    • 亚信安全:2017年勒索软件与商...
    • 亚信安全中标广州白云国际机场 ...
    • Fortinet:安全信息共享迫...
    • 趋势科技:嘿!你的“苹果”已经被...
    • 烽火FitNet,面向SDN/N...
    • 烽火FitNet解决方案荣获“N...
    • 烽火光与IP协同SDN解决方案荣...
    • 亚信安全从RSA看人工智能安全:...
    • SDN/NFV峰会2017在京隆...
    • F5“We Make Apps ...
    • 亚信安全成为 “上海网络与信息安...
    • Fortinet入驻青云市场 ...
    • 亚信安全观点:企业正在从与勒索软...
    • 工信部信息通信发展司处长黄业晶发...
    • 人民邮电报社总编、中国信息产业网...
    • SDN/NFV产业大奖重磅揭晓 ...
    • 苗圩部长:加快建设工业互联网是打...
    • Fortinet再次刷新防火墙性...
    • WAF与威胁情报 参加 RSA ...
    • 可信云公布第七批评估结果-云主机...
    • Fortinet Securit...
    • 智·御未来 亚信安全巡展·20...
    • 2017全球云计算开源峰会技术前...
    • HDS发布全新视频分析软件HVA...
    • RSA2017:盛邦安全,继往开...
    • 趋势科技中国提醒 谨防“情人节”...
    • F5 提高应用安全性 为数字经济...
    • 2017中国通信行业云计算峰会3...
    • DevOpsDays 2017 ...
    • Qlik Sense Cloud...
    • u-blox收购SIMCom无线...
    • APT攻击到底有多恐怖?美国联邦...
    • 2017工业互联网峰会即将在北京...
    • F5:立足网络安全 应用驱动未来
    • 亚信安全带你涨姿势:网警如何“抓...
    • 复旦大学携手亚信安全打造云安全防...
    • SAS被Gartner评为数据质...
    • “红包”和“炸弹”只有一个二维码...
    • 取势合众•驭未来 亚信安全201...
    • F5调查显示安全问题正在推动应用...
    • 安森美和Hexius扩展下一代混...
    • Qlik收购Idevio 优化客...
    • 安森美半导体和Hexius半导体...
    • “Master”连胜世界围棋冠军...
    • 何宝宏:互联网迎来技术革命的新时...
    • 亚信安全与新华三战略合作 布局“...

    屌丝逆袭?舍我其谁!

    • 【CSDN APP】程序员必备
    • CSDN知识库-知识精华
    • 把博客放进口袋
    • CSDN移动客户端,全新亮相
    <iframe id="iframeu2394820_0" src="http://pos.baidu.com/ocqm?rdid=2394820&amp;dc=3&amp;di=u2394820&amp;dri=0&amp;dis=0&amp;dai=2&amp;ps=201x929&amp;dcb=___adblockplus&amp;dtm=HTML_POST&amp;dvi=0.0&amp;dci=-1&amp;dpt=none&amp;tsr=0&amp;tpr=1489326645402&amp;ti=JAVA%E7%A8%8B%E5%BA%8F%E5%91%98%E9%9D%A2%E8%AF%95%E6%80%BB%E7%BB%93%EF%BC%8C%E9%AB%98%E6%89%8B%E6%95%B4%E6%95%B4%E7%90%86%E5%8A%A0%E5%BC%BA%E7%89%88-CSDN%E8%AE%BA%E5%9D%9B-CSDN.NET-%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E7%9A%84IT%E6%8A%80%E6%9C%AF%E7%A4%BE%E5%8C%BA&amp;ari=2&amp;dbv=2&amp;drs=3&amp;pcs=1349x667&amp;pss=1349x20381&amp;cfv=13&amp;cpl=23&amp;chi=1&amp;cce=true&amp;cec=UTF-8&amp;tlm=1489297847&amp;rw=667&amp;ltu=http%3A%2F%2Fbbs.csdn.net%2Ftopics%2F391979685&amp;ltr=http%3A%2F%2Fwww.csdn.net%2F&amp;ecd=1&amp;uc=1366x728&amp;pis=-1x-1&amp;ccd=24&amp;cja=true&amp;cmi=28&amp;col=zh-CN&amp;cdo=-1&amp;sr=1366x768&amp;tcn=1489326647&amp;qn=801c08cd49ffa110&amp;tt=1489326645380.1817.1817.1822" width="220" height="120" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="box-sizing: content-box; margin: 0px; padding: 0px; list-style: none; border-width: 0px; vertical-align: bottom; width: 220px; height: 120px;"></iframe>
    CSDN > CSDN论坛 > 扩充话题 > 职场生涯
    返回列表
    • 管理菜单
    • 结帖
    • 发帖
    • 回复
    • 取消关注

    [推荐] JAVA程序员面试总结,高手整整理加强版 [问题点数:40分]

     收藏
    楼主发表于: 2016-07-05 10:22:57
    java学习java教程java程序员
    第一阶段:三年

    我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本 上的内容迈向真正的企业级开发。我们知道如何团队协作、如何使用项目管理工具、项目版本如何控制、我们写的代码如何测试如何在线上运行等等,积累了一定的 开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段。

    第二阶段:五年

    五年又是区分程序员的第二个门槛。有些人在三年里,除了完成工作,在空余时间基本不会研究别的东西,这些人永远就是个Coder,年纪大一些势必被 更年轻的人给顶替;有些人在三年里,除了写代码之外,还热衷于研究各种技术实现细节、看了N多好书、写一些博客、在Github上分享技术,这些人在五年 后必然具备在技术上独当一面的能力并且清楚自己未来的发展方向,从一个Coder逐步走向系统分析师或是架构师,成为项目组中不可或缺的人物。

    第三阶段:十年

    十年又是另一个门槛了,转行或是继续做一名程序员就在这个节点上。如果在前几年就抱定不转行的思路并且为之努力的话,那么在十年的这个节点上,有些 人必然成长为一名对行业有着深入认识、对技术有着深入认识、能从零开始对一个产品进行分析的程序员,这样的人在公司基本担任的都是CTO、技术专家、首席 架构师等最关键的职位,这对于自己绝对是一件荣耀的事,当然老板在经济上也绝不会亏待你。

    第一部分总结一下,我认为,随着你工作年限的增长、对生活对生命认识的深入,应当不断思考三个问题:

    1、我到底适不适合当一名程序员?

    2、我到底应不应该一辈子以程序员为职业?

    3、我对编程到底持有的是一种什么样的态度,是够用就好呢还是不断研究?

    最终,明确自己的职业规划,对自己的规划负责并为之努力。

    关于项目经验

    在网上经常看到一些别的朋友有提出项目经验的问题,依照我面试的感觉来说,面试主要看几点:项目经验+基本技术+个人潜力(也就是值不值得培养)。

    关于项目经验,我认为并发编程网的创始人方腾飞老师讲的一段话非常好:介绍产品时面试官会考察应聘者的沟通能力和思考能力,我们大部分情况都是做产品的一个功能或一个模块,但是即使是这样,自 己有没有把整个系统架构或产品搞清楚,并能介绍清楚,为什么做这个系统?这个系统的价值是什么?这个系统有哪些功能?优缺点有哪些?如果让你重新设计这个 系统你会如何设计?

    我觉得这就已经足以概括了。也许你仅仅工作一年,也许你做的是项目中微不足道的模块,当然这些一定是你的劣势且无法改变,但是如何弥补这个劣势?

    从方老师的话中我总结几点:

    1、明确你的项目到底是做什么的,有哪些功能。

    2、明确你的项目的整体架构,在面试的时候能够清楚地画给面试官看并且清楚地指出从哪里调用到哪里、使用什么方式调用。

    3、明确你的模块在整个项目中所处的位置及作用。

    4、明确你的模块用到了哪些技术,更好一些的可以再了解一下整个项目用到了哪些技术。

    在你无法改变自己的工作年限、自己的不那么有说服力的项目经验的情况下(这一定是扣分项),可以通过这种方式来一定程度上地弥补并且增进面试官对你的好感度。

    关于专业技能

    写完项目接着写写一名3年工作经验的Java程序员应该具备的技能,这可能是Java程序员们比较关心的内容。我这里要说明一下,以下列举的内容不是都要会的东西—-但是如果你掌握得越多,最终能得到的评价、拿到的薪水势必也越高。

    1、基本语法

    这包括static、final、transient等关键字的作用,foreach循环的原理等等。今天面试我问你static关键字有哪些作 用,如果你答出static修饰变量、修饰方法我会认为你合格,答出静态块,我会认为你不错,答出静态内部类我会认为你很好,答出静态导包我会对你很满 意,因为能看出你非常热衷研究技术。

    最深入的一次,我记得面试官直接问到了我Volatile关 键字的底层实现原理(顺便插一句,面试和被面试本身就是相对的,面试官能问这个问题同时也让面试者感觉到面试官也是一个喜爱研究技术的人,增加了面试者对 公司的好感,我最终选择的就是问了这个问题的公司),不要觉得这太吹毛求疵了—-越简单的问题越能看出一个人的水平,别人对你技术的考量绝大多数都是以深度优先、广度次之为标准的,切记。

    2、集合

    非常重要,也是必问的内容。基本上就是List、Map、Set,问的是各种实现类的底层实现原理,实现类的优缺点。

    集合要掌握的是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、 HashSet的实现原理,能流利作答,当然能掌握CopyOnWrite容器和Queue是再好不过的了。另外多说一 句,ConcurrentHashMap的问题在面试中问得特别多,大概是因为这个类可以衍生出非常多的问题,关于ConcurrentHashMap, 我给网友朋友们提供三点回答或者是研究方向:

    (1)ConcurrentHashMap的锁分段技术。

    (2)ConcurrentHashMap的读是否要加锁,为什么。

    (3)ConcurrentHashMap的迭代器是强一致性的迭代器还是弱一致性的迭代器。

    3、设计模式

    本来以为蛮重要的一块内容,结果只在阿里巴巴B2B事业部面试的时候被问了一次,当时问的是装饰器模式。

    当然咱们不能这么功利,为了面试而学习,设计模式在工作中还是非常重要、非常有用的,23种设计模式中重点研究常用的十来种就可以了,面试中关于设计模式的问答主要是三个方向:

    (1)你的项目中用到了哪些设计模式,如何使用。

    (2)知道常用设计模式的优缺点。

    (3)能画出常用设计模式的UML图。

    4、多线程

    这也是必问的一块了。因为三年工作经验,所以基本上不会再问你怎么实现多线程了,会问得深入一些比如说Thread和Runnable的区别和联 系、多次start一个线程会怎么样、线程有哪些状态。当然这只是最基本的,出乎意料地,几次面试几乎都被同时问到了一个问题,问法不尽相同。

    总结起来是 这么一个意思:

    假如有Thread1、Thread2、ThreaD3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现?

    聪明的网友们对这个问题是否有答案呢?不难,java.util.concurrent下就有现成的类可以使用。

    另外,线程池也是比较常问的一块,常用的线程池有几种?这几种线程池之间有什么区别和联系?线程池的实现原理是怎么样的?实际一些的,会给你一些具体的场景,让你回答这种场景该使用什么样的线程池比较合适。

    最后,虽然这次面试问得不多,但是多线程同步、锁这块也是重点。synchronized和ReentrantLock的区别、 synchronized锁普通方法和锁静态方法、死锁的原理及排查方法等等。

    5、JDK源码

    要想拿高工资,JDK源码不可不读。上面的内容可能还和具体场景联系起来,JDK源码就是实打实地看你平时是不是爱钻研了。我面试过程中被问了不 少JDK源码的问题,其中最刁钻的一个问了我,String的hashCode()方法是怎么实现的,幸好我平时String源代码看得多,答了个大 概。

    JDK源码其实没什么好总结的,纯粹看个人,总结一下比较重要的源码:

    (1)List、Map、Set实现类的源代码

    (2)ReentrantLock、AQS的源代码

    (3)AtomicInteger的实现原理,主要能说清楚CAS机制并且AtomicInteger是如何利用CAS机制实现的

    (4)线程池的实现原理

    (5)Object类中的方法以及每个方法的作用

    这些其实要求蛮高的,我去年一整年基本把JDK中重要类的源代码研究了个遍,真的花费时间、花费精力,当然回头看,是值得的—-不仅仅是为了应付面试。

    6、框架

    老生常谈,面试必问的东西。一般来说会问你一下你们项目中使用的框架,然后给你一些场景问你用框架怎么做,比如我想要在Spring初始化bean 的时候做一些事情该怎么做、想要在bean销毁的时候做一些事情该怎么做、MyBatis中$和#的区别等等,这些都比较实际了,平时积累得好、有多学习 框架的使用细节自然都不成问题。

    如果上面你的问题答得好,面试官往往会深入地问一些框架的实现原理。问得最多的就是Spring AOP的实现原理,当然这个很简单啦,两句话就搞定的的事儿,即使你不会准备一下就好了。我遇到的最变态的是让我画一下Spring的Bean工厂实 现的UML图,当然面对这样一个有深度的问题,我是绝对答不出来的/(ㄒoㄒ)/~~

    7、数据库

    数据库十有八九也都会问到。一些基本的像union和union all的区别、left join、几种索引及其区别就不谈了,比较重要的就是数据库性能的优化,如果对于数据库的性能优化一窍不通,那么有时间,还是建议你在面试前花一两天专门 把SQL基础和SQL优化的内容准备一下。

    不过数据库倒是不用担心,一家公司往往有很多部门,如果你对数据库不熟悉而基本技术又非常好,九成都是会要你的,估计会先把你放到对数据库使用不是要求非常高的部门锻炼一下。

    8、数据结构和算法分析

    数据结构和算法分析,对于一名程序员来说,会比不会好而且在工作中绝对能派上用场。数组、链表是基础,栈和队列深入一些但也不难,树挺重要的,比较 重要的树AVL树、红黑树,可以不了解它们的具体实现,但是要知道什么是二叉查找树、什么是平衡树,AVL树和红黑树的区别。记得某次面试,某个面试官和 我聊到了数据库的索引,他问我:你知道索引使用的是哪种数据结构实现吗?

    我答到用的Hash表吧,答错。他又问,你知道为什么要使用树吗?我答到因为Hash表可能会出现比较多的冲突,在千万甚至是上亿级别的数据面 前,会大大增加查找的时间复杂度。而树比较稳定,基本保证最多二三十次就能找到想要的数据,对方说不完全对,最后我们还是交流了一下这个问题,我也明白了 为什么要使用树,这里不说,网友朋友们觉得索引为什么要使用树来实现呢?

    至于算法分析,不会、不想研究就算了,记得某次面试对方问我,Collections.sort方法使用的是哪种排序方法,额,吐血三升。当然为了 显示我的博学,对算法分析也有一定的研究(⊙﹏⊙)b,我还是硬着头皮说了一句可能是冒泡排序吧。当然答案肯定不是,有兴趣的网友朋友们可以去看一下 Collections.sort方法的源代码,用的是一种叫做TimSort的排序法,也就是增强型的归并排序法。

    9、Java虚拟机
    • <iframe id="iframeu1636200_0" src="http://pos.baidu.com/ocqm?rdid=1636200&amp;dc=3&amp;di=u1636200&amp;dri=0&amp;dis=0&amp;dai=3&amp;ps=5205x385&amp;dcb=___adblockplus&amp;dtm=HTML_POST&amp;dvi=0.0&amp;dci=-1&amp;dpt=none&amp;tsr=0&amp;tpr=1489326645402&amp;ti=JAVA%E7%A8%8B%E5%BA%8F%E5%91%98%E9%9D%A2%E8%AF%95%E6%80%BB%E7%BB%93%EF%BC%8C%E9%AB%98%E6%89%8B%E6%95%B4%E6%95%B4%E7%90%86%E5%8A%A0%E5%BC%BA%E7%89%88-CSDN%E8%AE%BA%E5%9D%9B-CSDN.NET-%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E7%9A%84IT%E6%8A%80%E6%9C%AF%E7%A4%BE%E5%8C%BA&amp;ari=2&amp;dbv=2&amp;drs=3&amp;pcs=1349x667&amp;pss=1349x20381&amp;cfv=13&amp;cpl=23&amp;chi=1&amp;cce=true&amp;cec=UTF-8&amp;tlm=1489297847&amp;rw=667&amp;ltu=http%3A%2F%2Fbbs.csdn.net%2Ftopics%2F391979685&amp;ltr=http%3A%2F%2Fwww.csdn.net%2F&amp;ecd=1&amp;uc=1366x728&amp;pis=-1x-1&amp;ccd=24&amp;cja=true&amp;cmi=28&amp;col=zh-CN&amp;cdo=-1&amp;sr=1366x768&amp;tcn=1489326647&amp;qn=aa8ec0d387ce6655&amp;tt=1489326645380.1840.1840.1841" width="200" height="22" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="box-sizing: content-box; border-width: 0px; vertical-align: bottom; margin: 0px; width: 200px; height: 22px;"></iframe>
    •  
    • <iframe id="iframeu1636201_0" src="http://pos.baidu.com/ocqm?rdid=1636201&amp;dc=3&amp;di=u1636201&amp;dri=0&amp;dis=0&amp;dai=4&amp;ps=5205x639&amp;dcb=___adblockplus&amp;dtm=HTML_POST&amp;dvi=0.0&amp;dci=-1&amp;dpt=none&amp;tsr=0&amp;tpr=1489326645402&amp;ti=JAVA%E7%A8%8B%E5%BA%8F%E5%91%98%E9%9D%A2%E8%AF%95%E6%80%BB%E7%BB%93%EF%BC%8C%E9%AB%98%E6%89%8B%E6%95%B4%E6%95%B4%E7%90%86%E5%8A%A0%E5%BC%BA%E7%89%88-CSDN%E8%AE%BA%E5%9D%9B-CSDN.NET-%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E7%9A%84IT%E6%8A%80%E6%9C%AF%E7%A4%BE%E5%8C%BA&amp;ari=2&amp;dbv=2&amp;drs=3&amp;pcs=1349x667&amp;pss=1349x20392&amp;cfv=13&amp;cpl=23&amp;chi=1&amp;cce=true&amp;cec=UTF-8&amp;tlm=1489297847&amp;rw=667&amp;ltu=http%3A%2F%2Fbbs.csdn.net%2Ftopics%2F391979685&amp;ltr=http%3A%2F%2Fwww.csdn.net%2F&amp;ecd=1&amp;uc=1366x728&amp;pis=-1x-1&amp;ccd=24&amp;cja=true&amp;cmi=28&amp;col=zh-CN&amp;cdo=-1&amp;sr=1366x768&amp;tcn=1489326647&amp;qn=40c207a517d7cdc5&amp;tt=1489326645380.1852.1852.1853" width="200" height="22" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="box-sizing: content-box; border-width: 0px; vertical-align: bottom; margin: 0px; width: 200px; height: 22px;"></iframe>
    •  
    • <iframe id="iframeu1636204_0" src="http://pos.baidu.com/ocqm?rdid=1636204&amp;dc=3&amp;di=u1636204&amp;dri=0&amp;dis=0&amp;dai=5&amp;ps=5205x893&amp;dcb=___adblockplus&amp;dtm=HTML_POST&amp;dvi=0.0&amp;dci=-1&amp;dpt=none&amp;tsr=0&amp;tpr=1489326645402&amp;ti=JAVA%E7%A8%8B%E5%BA%8F%E5%91%98%E9%9D%A2%E8%AF%95%E6%80%BB%E7%BB%93%EF%BC%8C%E9%AB%98%E6%89%8B%E6%95%B4%E6%95%B4%E7%90%86%E5%8A%A0%E5%BC%BA%E7%89%88-CSDN%E8%AE%BA%E5%9D%9B-CSDN.NET-%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E7%9A%84IT%E6%8A%80%E6%9C%AF%E7%A4%BE%E5%8C%BA&amp;ari=2&amp;dbv=2&amp;drs=3&amp;pcs=1349x667&amp;pss=1349x20392&amp;cfv=13&amp;cpl=23&amp;chi=1&amp;cce=true&amp;cec=UTF-8&amp;tlm=1489297847&amp;rw=667&amp;ltu=http%3A%2F%2Fbbs.csdn.net%2Ftopics%2F391979685&amp;ltr=http%3A%2F%2Fwww.csdn.net%2F&amp;ecd=1&amp;uc=1366x728&amp;pis=-1x-1&amp;ccd=24&amp;cja=true&amp;cmi=28&amp;col=zh-CN&amp;cdo=-1&amp;sr=1366x768&amp;tcn=1489326647&amp;qn=062a38f7c6c4d8f0&amp;tt=1489326645380.1861.1861.1862" width="200" height="22" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="box-sizing: content-box; border-width: 0px; vertical-align: bottom; margin: 0px; width: 200px; height: 22px;"></iframe>
    对我有用[5] 丢个板砖[0] 引用 | 举报 | 管理
    回复次数:61
    #1 得分:0回复于: 2016-07-05 10:23:35
    出乎我的意料,Java虚拟机应该是很重要的一块内容,结果在这几家公司中被问到的概率几乎为0。要知道,我去年可是花了大量的时间去研究Java虚拟机的,光周志明老师的《深入理解Java虚拟机:JVM高级特性与最佳实践》,我就读了不下五遍。

    言归正传,虽然Java虚拟机没问到,但我觉得还是有必要研究的,我就简单地列一个提纲吧,谈谈Java虚拟机中比较重要的内容:

    (1)Java虚拟机的内存布局

    (2)GC算法及几种垃圾收集器

    (3)类加载机制,也就是双亲委派模型

    (4)Java内存模型

    (5)happens-before规则

    (6)volatile关键字使用规则

    也许面试无用,但在走向大牛的路上,不可不会。

    10、Web方面的一些问题

    Java主要面向Web端,因此Web的一些问题也是必问的。

    我碰到过问得最多的两个问题是:

    谈谈分布式Session的几种实现方式。

    常用的四种能答出来自然是让面试官非常满意的。

    另外一个常问的问题是:讲一下Session和Cookie的区别和联系以及Session的实现原理。这两个问题之外,web.xml里面的内容是重点,Filter、Servlet、Listener,不说对它们的实现原理一清二楚吧,至少能对它们的使用知根知底。另外,一些细节的方面比如get/post的区别、forward/重定向的区别、HTTPS的实现原理也都可能会被考察到。

    最后,如果有兴趣有时间,建议学习、研究一下SOA和RPC,面向服务体系,大型分布式架构必备,救命良方、包治百病、屡试不爽。
    对我有用[2] 丢个板砖[0] 引用 | 举报 | 管理
    #2 得分:0回复于: 2016-07-05 10:23:52
    楼主在哪里瞎编的?
    对我有用[0] 丢个板砖[6] 引用 | 举报 | 管理
    #3 得分:0回复于: 2016-07-05 10:27:06
    如果你感觉是瞎编的就是吧
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #4 得分:0回复于: 2016-07-05 10:52:06
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #5 得分:0回复于: 2016-07-05 17:10:08
    总结的不错 有一点水准 应该有多年的经验
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #6 得分:0回复于: 2016-07-18 20:51:52
    谢谢楼主,我正准备从嵌入式转java呢(嵌入式6年),看了楼主的帖子感谢万分,希望楼主多发些技术贴,让我们可以多学习一下
    对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
    #8 得分:0回复于: 2016-09-07 11:20:49
    引用 2 楼 jhdxhj 的回复:
    楼主在哪里瞎编的?
    看来你是小白或者就是初创公司出身
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #9 得分:0回复于: 2016-11-11 15:33:21
    楼主很有水平,这篇总结帖对java工作多年的人很有指导意义,包含了所有常用的知识面
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #10 得分:0回复于: 2016-11-11 20:01:17
    我觉得lz是瞎编 的,并且楼主感觉不靠谱,不知道哪个机构的
    对我有用[3] 丢个板砖[4] 引用 | 举报 | 管理
    #11 得分:0回复于: 2017-02-07 13:40:34
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #12 得分:0回复于: 2017-02-10 14:53:04
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #13 得分:0回复于: 2017-02-15 05:46:31
    这应该比较适合开发人员!
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #14 得分:0回复于: 2017-02-15 17:17:17
      总结的很好,受教了。
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #15 得分:0回复于: 2017-02-17 21:28:04
    楼主工作多少年了?现在是什么职位呢?
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #16 得分:0回复于: 2017-02-20 15:02:14
    “XXXX的源代码是通过哪种算法实现的”这种面试题,我是挺无语的。。。
    对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
    #17 得分:0回复于: 2017-02-20 17:15:23
    理论性太强。java这玩意,技术性的东西越来越少了,因为很多东西都被封装了,开源了,你想要一个东西,往往都有现成的,比你自己搞的要好的多。公司要的是解决问题的的,而不是研究问题的。
    对我有用[1] 丢个板砖[2] 引用 | 举报 | 管理
    #18 得分:0回复于: 2017-02-20 20:20:31
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #19 得分:0回复于: 2017-02-21 08:14:40
    呵呵,似乎在某个人的博文上看过其中的几段
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #20 得分:0回复于: 2017-02-21 09:47:57
    写的很实在,是干货
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #21 得分:0回复于: 2017-02-21 10:28:43
    我感觉说的挺好,对我挺有帮助
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #22 得分:0回复于: 2017-02-21 10:36:58
    不管是不是瞎编的,但是从面试经历来看确实问到了其中一些,看了之后感觉还有很多地方要提高
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #23 得分:0回复于: 2017-02-21 13:01:11
    今天面试去了,确实没有出这个圈。只不过我研究不深,没通过。被问了一个注解的问题,自定义注解怎么声明,什么时候需要用到自定义注解。
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #24 得分:0回复于: 2017-02-21 15:13:42
    得努力啊,按着这个标准走吧
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #25 得分:0回复于: 2017-02-21 16:04:48
    任重而道远啊
    对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
    #26 得分:0回复于: 2017-02-21 16:34:10
    我也想问楼主工作多少年了?
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #27 得分:0回复于: 2017-02-21 18:39:25
    原文地址  http://www.cnblogs.com/xrq730/p/5260294.html   楼主是作者吗?
    对我有用[3] 丢个板砖[0] 引用 | 举报 | 管理
    #28 得分:0回复于: 2017-02-22 11:36:57
    看完楼主这些 深感惭愧   
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #29 得分:0回复于: 2017-02-22 11:41:02
    引用 10 楼 fengyufuchen 的回复:
    我觉得lz是瞎编 的,并且楼主感觉不靠谱,不知道哪个机构的
    为啥
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #30 得分:0回复于: 2017-02-22 13:20:13
    居然上首页?
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #31 得分:0回复于: 2017-02-22 13:46:13
    楼主还是总结的比较实在
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #32 得分:0回复于: 2017-02-22 15:15:55
    感觉好有道理!
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #33 得分:0回复于: 2017-02-23 10:33:51
    4年JAVA coder路过,路过觉得写得挺好。这里还是有很多我不懂得东西,文章带走了。
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #34 得分:0回复于: 2017-02-23 13:21:48
    面试时直接上项目,http://www.ofmonkey.com/
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #35 得分:0回复于: 2017-02-23 18:04:01
    经验值得学习
    对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
    #36 得分:0回复于: 2017-02-24 07:20:12
    学java就两个问题。
    java是面向对象的语言。
    这东西是国外的。

    搞清楚面向对象的历史演变,java的每个特性都是基于面向对象产生的。java就是面向对象而生的,
    java就是一种思想。你们人手不是有一本启蒙书籍叫think in java麽?。国外书籍用的是think,,国内的书籍都是深入理解/学习/深入浅出/30天掌握/教程XXXX。字眼的书籍。。脑袋没毛病吧,随便一本书平均下来都有500页,各种深入理解,掌握过后。你的年龄也到该入土的时候了。(此处应该有掌声)不是流行大数据麽?Hadoop是因为一篇论文诞生的,论文的作者是google公司的员工。但是Hadoop 得诞生要比google公司来得快。在这点只能说java干得漂亮,要不然你们要想体会这种黑科技至少需要5年以上。。有时候真的很羡慕国内写代码的人,这些小学没毕业的人居然可以拿到国外那些至少要初中毕业才能拿到的工资。。而国外那些高中毕业的人只能去帮JAVA写些源代码义务劳动。

    其实学习java就是学习面向对象和多线程。
        精通java的最终目标就是学习面向对象,在JAVA的类库里面有很多的骨架实现。设计模式的出现要比java早很多年。设计模式的思想的作者或鼻祖是缘于一个砖匠,搬砖的砖。你们应该很庆幸设计模式就只有20几种,终归到底是缘于java的特性也就这么几个。国外做过研究人能同时记住的东西是7±2.。很巧的是java的特性也就7±2。但是7±2也就最多组成20几种设计模式。好了问题来了,你能记住几个java特性(java特性最多也就是9个哦),如果你能全部记住,那么问题升华了,你精通多少种设计模式。如果你们背的话,我能从1背到10亿。

         还有就是多线程。多线程只能说太难了。java在多线程的上很落后的。Volatile关键字反反复复跟新了几次背后原理实现,对于伪共享的实现也是在1.8才加入@sun.misc.Contended的。。多线程,伪共享,锁机制,同步机制。重锁机制。这些在15年前是高级课题,也是为什么很多java书籍都把多线程放在最后一章节。也是15年前存在的东西。。看到没有,就算是人家把java开源你们在技术上也会落后15年,因为JDK现在才到1.8。。为什么是15年前,因为15年前摩尔定律不再适用了,intel的老板跪在地上说,如果CPU超过4.0G我公司要倒闭了。所以多核的时代来临了。。。回过头来为什么说多线程难,学习多线程,你要搞清楚同步,异步。管程(什么是管程,就是java文件代码上加了synchronized关键字后,变成class文件后。synchronized关键字变成了java虚拟机的Moniters命令的中文翻译)。锁机制,阻塞,以及线程的几种状态。什么顺序一致性,原子性,有锁,无锁。安全性,读写同步/读不用同步,写同步。多核,compareAndSet(),getAndSet(),伪共享,高速缓存,Volatile关键字,系统总线。等等等等。。多线程机制虽然多,但是这不是思想的重要性。再我看来最重要的就是为什么10年就有AtomicInteger为什么现在只在原来的基础上跟新了一个LongAdder, 为什么这两个类都是同一个老头写的而不是年轻人。为什么这两个类都引用了sun.misc.Unsafe这个非公开类。为什么是不安全的。现在发现多线程是有多难了吧,没有发现这段话比上面那段面向对象的字数都多了一倍麽。。
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #37 得分:0回复于: 2017-02-24 16:08:53
    其实说了一大堆,就特么没有一个可以参考的回答,跟没说一样
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #38 得分:0回复于: 2017-02-24 17:27:54
    很有指导意义
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #39 得分:0回复于: 2017-02-27 16:17:54
    引用 27 楼 baosxie 的回复:
    原文地址  http://www.cnblogs.com/xrq730/p/5260294.html   楼主是作者吗?
    明显是转载的博客园的一部分文章,那有原著发贴只发一半的
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #40 得分:0回复于: 2017-03-02 09:19:44
    楼主总结的不错
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #41 得分:0回复于: 2017-03-02 12:59:17
    我觉得楼主写的非常的好谢谢你的分享
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #42 得分:0回复于: 2017-03-02 17:03:16
    谢谢java妞妞,正值跳槽犹豫期,这样的整理譬如任务清单
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #43 得分:0回复于: 2017-03-02 17:26:03
    感觉楼主写的不错,挺好的,我有两年经验吧,还真是那么回事
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #44 得分:0回复于: 2017-03-02 17:27:50
    http://www.cnblogs.com/xrq730/p/5260294.html
    转载别人的博文至少要附上原文链接啊,复制两段话就当你的了?
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #45 得分:0回复于: 2017-03-02 23:04:36  来自移动客户端
    谢谢楼主,我正准备从嵌入式转java呢

    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #46 得分:0回复于: 2017-03-03 14:36:39
    引用 17 楼 xieyunchao 的回复:
    理论性太强。java这玩意,技术性的东西越来越少了,因为很多东西都被封装了,开源了,你想要一个东西,往往都有现成的,比你自己搞的要好的多。公司要的是解决问题的的,而不是研究问题的。

    理解里面的原理用起来才顺手,不然永远都是别人告诉你怎么用,而不是自己琢磨这个东西可以用在什么地方
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #47 得分:0回复于: 2017-03-03 17:17:37
    刚工作的小白,感觉好难啊
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #48 得分:0回复于: 2017-03-04 13:56:09
    引用 45 楼 q525093551_ 的回复:
    谢谢楼主,我正准备从嵌入式转java呢
    嵌入式前景不好吗?为什么要转呢?
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #49 得分:0回复于: 2017-03-04 17:00:54
    写的挺好的啊
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    #50 得分:0回复于: 2017-03-05 10:27:11
    学习了。。。
    对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
    返回列表
    • 管理菜单
    • 结帖
    • 发帖
    • 回复
    • 取消关注
    <iframe id="iframeu2748465_0" src="http://pos.baidu.com/ocqm?rdid=2748465&amp;dc=3&amp;di=u2748465&amp;dri=0&amp;dis=0&amp;dai=1&amp;ps=19013x194&amp;dcb=___adblockplus&amp;dtm=HTML_POST&amp;dvi=0.0&amp;dci=-1&amp;dpt=none&amp;tsr=0&amp;tpr=1489326645402&amp;ti=JAVA%E7%A8%8B%E5%BA%8F%E5%91%98%E9%9D%A2%E8%AF%95%E6%80%BB%E7%BB%93%EF%BC%8C%E9%AB%98%E6%89%8B%E6%95%B4%E6%95%B4%E7%90%86%E5%8A%A0%E5%BC%BA%E7%89%88-CSDN%E8%AE%BA%E5%9D%9B-CSDN.NET-%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E7%9A%84IT%E6%8A%80%E6%9C%AF%E7%A4%BE%E5%8C%BA&amp;ari=2&amp;dbv=2&amp;drs=1&amp;pcs=1349x667&amp;pss=1349x19022&amp;cfv=13&amp;cpl=23&amp;chi=1&amp;cce=true&amp;cec=UTF-8&amp;tlm=1489297845&amp;rw=667&amp;ltu=http%3A%2F%2Fbbs.csdn.net%2Ftopics%2F391979685&amp;ltr=http%3A%2F%2Fwww.csdn.net%2F&amp;ecd=1&amp;uc=1366x728&amp;pis=-1x-1&amp;ccd=24&amp;cja=true&amp;cmi=28&amp;col=zh-CN&amp;cdo=-1&amp;sr=1366x768&amp;tcn=1489326645&amp;qn=c6a4ef3d28e0cf93&amp;tt=1489326645380.26.26.29" width="960" height="190" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="box-sizing: content-box; border-width: 0px; vertical-align: bottom; margin: 0px; width: 960px; height: 190px;"></iframe>
    • 晒图谱,涨知识,得好礼
    • Swift 问题与解答
    • 视频直播技术免费课
    • 专家问答-Android老司机帮你进阶

    回复内容   移动客户端回帖所得专家分翻倍,下载体验!
    • 编辑
    • 预览
    • 粗体
    • 斜体
    • 下划线
    • ---------------
    • 字体大小
    • 字体颜色
    • ---------------
    • 图片
    • ---------------
    • 左对齐
    • 居中对齐
    • 右对齐
    • ---------------
    • 引用
    • 代码
    • ---------------
    • QQ
    • monkey
    • onion
    • ---------------
    • 押宝
    • ---------------
    • 清除格式
    每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分 你还可以输入10000个字符(Ctrl+Enter)
    1. 请遵守CSDN用户行为准则,不得违反国家法律法规。
    2. 转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。
    0 0