几道java面试题,不止如何回答,望前辈虚心指导

韭零后张子游 发布于 2013/08/02 22:24
阅读 1K+
收藏 3

本人学java有3,4个年头到现在。毕业1年。

面试遇到几个问题,真不知如何回答。希望前辈虚心指点。我不是求骂的。希望那些2,3年经验的前辈,留口德。

一下为面试原话或者原来的意思。

1.什么是java?

2.为什么要面向对象?面向对象有啥好处。

3.什么是j2ee?什么叫企业级应用?

希望前辈虚心指点一下。我知道,哪里都有喷子。如果前辈真心看不惯我,无视就可以了,留些口德就好。对了,还有些面试官,我拿他给我的笔试题问他,他说,他也不会。

加载中
3
南湖船老大
南湖船老大

引用来自“中山野鬼”的答案

引用来自“好大的凶兆”的答案

面试官傻×或脑残或装逼,都不要紧,能搞定他就行。

这几个问题虽然没什么技术含量,但摊开来谈,也可以看出一个人对Java这门语言认识的深度。

    比如说为什么要面向对象,对于一些知识老旧且害怕新知识、技术生涯已经走到尽头的老古董,会立马开喷,举出面向过程的各种简单和好处,以随心所欲的惯用风格,痛斥OO;
    而对于成长期的新人,能说出OO中的常用专业术语,能写出OO的代码,但是做出OO的架构,就难了;
    对于有多年开发经验、架构经验的一线开发者,能从项目的角度说明代码组织的必要性,强调代码的可维护性,后续者的进入和退出成本,并且举出不同的例子来证明自己的观点。

无知者无畏啊。。。面向对象是一种设计思想。而不是所有编程的高级版本。面向对象的设计思想和设计目标有关。对于桌面系统,这种虚拟世界,具备大量相似相同行为特性的设计应用,是有效的,这就是为什么,桌面系统出来后,面向对象编程被广泛应用的原因,但面向对象解决不了很多其他问题。例如面向数据的处理。此时数据是平铺的,数据生命周期中存在差异性的动态处理工作。还有面向对象不能解决资源调配问题。你以为面向对象是新知识?当年我在c/c++同时学习中发现会出现思维混乱,因为两种编程模式的对思维的要求完全不一样,又觉得做底层比做桌面系统技术生命力要更持久,而且那是vhdl,verlog等编程也在学习,所以放弃了c++的学习。你当真以为c++是我学不会的语言而放弃?用c语言按照面向对象的设计思想设计代码,我也试验过。无非,面向对象能做的事情,我不太愿意做了而已。当然不代表这些事情没有价值。只是不是我喜欢做的事情。

别以为java是万能的,java适合做它应该做的事情。就是前端。因为前端一则要桌面系统,适合面向对象,二则存在跨平台的概率更大,可以通过虚拟机环境,有效降低开发重复度。

如果说面向对象是万能的,java在c++面前就是个玩具。因为c++才是真正的万能怪物。即便如此,c++写操作系统,也是个灾难。

年轻人,要知道计算机编程设计,都包含那些方面,都有什么目标,需要什么思想,适合用什么语言,再选择哪个适合自己。而不要会一样,就认为包打天下了。

再额外多喷一句事实,如果这里有it公司的高层,可以站出来说说是否认同,小朋友就别反驳了。java在中国流行的一个重要原因是,让java做的事情,技术难度并不大,学习它的起步门槛比较低,因此可以达到用工门槛的技术水平的人力便于培训。就程序员平均素质而言,java的并不怎么样。

    很多C语言写的程序,复杂到一定程度时,也是在自己构建一套OO的语法,比如linux驱动部分,就有很大篇幅的代码实际上干的是OO的事情。

    我也没彻底否认面向过程,但是在某些领域,确实存在一些还在坚持面向过程的顽固派,写出一些无法控制的代码。

    有一个真实案例,一个35岁的PHPer,从PHP4过来的老程序员,不愿意也不肯学习OO,而且其本身能力也没达到框架架构者的水平,坚持用其最熟悉的面向过程的写法,好吧,架构算是出来了。到了后期,随着软件规模扩大,他自己包括后期加入的人在这个完全没有约束的框架里,随意发挥,导致其在8核16G服务器上只能支持100个并发。相反的是,一个25岁的PHP新手,水平很差,用ThinkPHP框架写的程序,在1G内存上的并发有200,秒杀大叔的程序。由于框架的约束,性能始终在一个可以接受的范围。

    面向对象的好处,就是有一定的约束,再加以框架的限制,代码质量不会太离谱。当一个人开发的时候,无所谓。人一多的时候,这种约束的必要性就出来了。代码规范?职业道德?这些都是约束不住后来者的。面向过程能写出好的代码,但太多的取决于每个人的因素,而OO,只要架构者写好了,后来者烂一点,也不会太离谱。所以特别适合比较大的、业务复杂、参与人数多的开发。

问题的矛盾就在于:水平顶尖的程序员只有2%,水平不错的8%,90%的程序员只是混饭的普通人或菜鸟。在这种实际情况下,面向过程在多人开发时,就很难保障整个软件的质量。除非全部牛人参与。

至于说就程序员平均素质而言,java的并不怎么样,那其它一些语言的程序员,就真的烂大街了

银古
银古
受益匪浅的回答!
0
Allen1984
Allen1984
好比现实中造机器 先做宏观设计 然后根据这个规划来造零件 如果市场上有轮子卖 自己就不要再造了 买来直接用 面向对象是米国工业标准化模块化在软件中的体现
0
南湖船老大
南湖船老大

面试官傻×或脑残或装逼,都不要紧,能搞定他就行。

这几个问题虽然没什么技术含量,但摊开来谈,也可以看出一个人对Java这门语言认识的深度。

    比如说为什么要面向对象,对于一些知识老旧且害怕新知识、技术生涯已经走到尽头的老古董,会立马开喷,举出面向过程的各种简单和好处,以随心所欲的惯用风格,痛斥OO;
    而对于成长期的新人,能说出OO中的常用专业术语,能写出OO的代码,但是做出OO的架构,就难了;
    对于有多年开发经验、架构经验的一线开发者,能从项目的角度说明代码组织的必要性,强调代码的可维护性,后续者的进入和退出成本,并且举出不同的例子来证明自己的观点。

姑妄听之
姑妄听之
回复 @liangtee : 有人会对号入座啊,哈哈哈
liangtee
liangtee
有人会对号入座啊,哈哈哈
韭零后张子游
韭零后张子游
第3题呢?
0
李国刚
李国刚
二楼说的到位了!
0
李国刚
李国刚

这几个题确实很开放!


0
明月照大江
明月照大江

我是新手,我是这么理解的。

1.java是一个编程语言,是驱动计算机按照指定规则进行运算的工具中的一种。java的诞生,是计算机科学家在如何更方便更快捷地使用编程工具来描述显示问题和进行运算并解决问题这个问题上进行的一个探索和尝试。

2.面向对象是相对于面向过程而言的,是如何将一个复杂的运算过程进行分割的一种尝试。尽管面向对象号称更符合人类的思维模型,但是无论如何,面向对象也只是一个方法论,目的就是如何将一个人脑不能完全掌握的流程,分割成一个能理解的单元。

3.javaEE,字面上是java企业版。实际上就是一个官方的指导标准,其中比较典型的就是java 对HTTP协议的处理和封装,他订立这个标准,就是为了让基于java开发的HTTP相关系统,都能遵循此标准,在标准之下更方便企业的培训,开发和生产。

综合起来就是,第一个问题是生产工具的问题,第二个问题是生产理念的问题,第三个问题是生产标准的问题。

0
中山野鬼
中山野鬼

引用来自“好大的凶兆”的答案

面试官傻×或脑残或装逼,都不要紧,能搞定他就行。

这几个问题虽然没什么技术含量,但摊开来谈,也可以看出一个人对Java这门语言认识的深度。

    比如说为什么要面向对象,对于一些知识老旧且害怕新知识、技术生涯已经走到尽头的老古董,会立马开喷,举出面向过程的各种简单和好处,以随心所欲的惯用风格,痛斥OO;
    而对于成长期的新人,能说出OO中的常用专业术语,能写出OO的代码,但是做出OO的架构,就难了;
    对于有多年开发经验、架构经验的一线开发者,能从项目的角度说明代码组织的必要性,强调代码的可维护性,后续者的进入和退出成本,并且举出不同的例子来证明自己的观点。

无知者无畏啊。。。面向对象是一种设计思想。而不是所有编程的高级版本。面向对象的设计思想和设计目标有关。对于桌面系统,这种虚拟世界,具备大量相似相同行为特性的设计应用,是有效的,这就是为什么,桌面系统出来后,面向对象编程被广泛应用的原因,但面向对象解决不了很多其他问题。例如面向数据的处理。此时数据是平铺的,数据生命周期中存在差异性的动态处理工作。还有面向对象不能解决资源调配问题。你以为面向对象是新知识?当年我在c/c++同时学习中发现会出现思维混乱,因为两种编程模式的对思维的要求完全不一样,又觉得做底层比做桌面系统技术生命力要更持久,而且那是vhdl,verlog等编程也在学习,所以放弃了c++的学习。你当真以为c++是我学不会的语言而放弃?用c语言按照面向对象的设计思想设计代码,我也试验过。无非,面向对象能做的事情,我不太愿意做了而已。当然不代表这些事情没有价值。只是不是我喜欢做的事情。

别以为java是万能的,java适合做它应该做的事情。就是前端。因为前端一则要桌面系统,适合面向对象,二则存在跨平台的概率更大,可以通过虚拟机环境,有效降低开发重复度。

如果说面向对象是万能的,java在c++面前就是个玩具。因为c++才是真正的万能怪物。即便如此,c++写操作系统,也是个灾难。

年轻人,要知道计算机编程设计,都包含那些方面,都有什么目标,需要什么思想,适合用什么语言,再选择哪个适合自己。而不要会一样,就认为包打天下了。

再额外多喷一句事实,如果这里有it公司的高层,可以站出来说说是否认同,小朋友就别反驳了。java在中国流行的一个重要原因是,让java做的事情,技术难度并不大,学习它的起步门槛比较低,因此可以达到用工门槛的技术水平的人力便于培训。就程序员平均素质而言,java的并不怎么样。

中山野鬼
中山野鬼
回复 @缪斯的情人 : go从我看到的资料,并不是面向对象的。更多是为了分布式计算使用的。单机很难想想它比c++强,毕竟能多的越多,往往越要相互制约,无法把某个方面做到极致。go编译器的效率,很难说短期有较大的改善。更何况,编译器只能让平庸的代码不出错,但不会把平庸的代码变高效。
缪斯的情人
缪斯的情人
回复 @中山野鬼 : go呢?
中山野鬼
中山野鬼
@缪斯的情人 死不太可能。确实有跨界的东西,没有其他面向对象语言能替代c++。
缪斯的情人
缪斯的情人
这恰是一门高级语言的特性,门槛低,效率高。当然java在这些方面欠缺很多,这不得不承认,但是c++这个万能怪物必死,这也是趋势
0
liangtee
liangtee
楼主你好!我本科毕业出去找工作的时候也遇上过类似问题,我当时回答是采取以下策略: 1.首先,认真回答每个问题的基本概念,就是用自己的话把书本定义阐述清楚 2.举重若轻的讲些自己对这些问题的理解,比如这些技术的优缺点,自己在实践中的体会等
0
王瑞平
王瑞平
死记硬背
0
aiasfina
aiasfina
第二题面试的时候被问过,人事问的...
返回顶部
顶部