- 浏览: 119335 次
- 来自: ...
文章分类
最新评论
前几天被电话面试,问Java的参数传递方式,我说只有一种方式,就是by value啊,对方纠正我说,基本类型传值,对象类型传引用;呜呼,当时被噎了一下,几秒钟后回过神来,我明白他的意思,也明白我碰上新世纪的新新人类了,但我怕他不明白啊,就说我们还是先把“引用”这个概念定义清楚吧,不要同一个词两人有两个意思,或者举个例子吧,在函数里对String类型的参数赋值是不影响实际参数的啊,于是他也明白我其实也明白,电话面试就算过了
然而还不算完,正式面试的四轮:笔试题,笔试完后与leader谈,谈完后与manager谈,谈完后与VP谈,居然每一轮都有这道题!只不过换成了swap函数的形式,让你说出执行结果;我就纳了闷了,这道题在人们心目中的形象就那么高大?并且甲方答案也似是而非?
Bjarne一直认为是C++的教育害了C++,那么是什么害了Java语言呢?过度的商业宣传!
当然,商业宣传成功的帮助了Java平台,吸引了大量开发者,但对Java语言来说,先听到宣传词后再来学习的初学者,耳中充斥的是“Java取消了指针”,“Java没有内存泄露”,“Java纯面向对象”等宣传用语,先入为主的就接受了表面现象,而没有理解问题的实质
Java取消了指针?看看那个所谓的“引用”为空时抛出的异常吧,看看在Java实现者的眼中这个东西到底是啥吧:NullPointerException!不是我鄙视Sun,它的细节伪装的确实不如MS:.Net里对应的异常叫NullReferenceException,虽然也是换汤不换药;作为一种类C语言,我认为对应概念的命名还是一致较好,Java里其实全是指针,你基本无法得到对象本身,只不过这种指针功能受限,不需删除而已
指针的概念被伪装起来,不需要delete了,那么除内存之外的其它资源呢?数数你的程序里有多少个finally就可以了
Java纯面向对象?其实就这句话本身来说也无可厚非,只是它使用了<<箭鱼行动>>里定义的“错误引导”,这句话会使初学者倾向于认为用Java写出来的程序都是面向对象的,从而阻碍了理解真正的面向对象;数数你程序里有多少根据对象类型的switch/if/else就可以了
题外话:
面试时被问道面向对象的三个基本特征,我知道他想听到什么封装继承多态,但实际上传统面向对象的核心特征就是多态,继承只是用来实现多态的一种手段,并非本质特征;C语言没有继承,但照样可以进行OO风格的编程
发表评论
-
The Object Primer
2004-12-11 11:21 5951,书名 被翻译成“ ... -
错误处理规范
2004-12-11 16:47 760错误处理规范 〇、概念澄清 概念 解释 错误 ... -
Java:画蛇添足的编码规范
2005-09-02 13:13 622前几天公司培训编码规范: 第n条: ... -
synchronized : 规则, 推论与实践
2007-07-23 22:32 47214.3.Synchronization. Rule ... -
交互设计: 股市帮凶
2008-05-04 21:30 648同事 Y 在线操作股票时, 把"买入"点成 ... -
交互设计: 火车上的厕所
2008-05-26 17:17 613有人在动车组的厕所前等了很久, 直到乘务员路过说厕所是被锁住了 ... -
设计原则与模式: 案例介绍--CppUnit
2008-06-01 20:15 634设计原则与模式: 案例介绍--CppUnit CppUnit ... -
工作流:形参,实参,相关数据
2004-12-11 11:40 678关于形参,实参,相关数据 一、形参(FormalParame ... -
工作流:第一次发版,过程总结
2004-12-11 11:42 714交流 即时讨论:小组成员咫尺之遥,有问题立即提出并解决 ... -
工作流:第一次发版,设计总结
2004-12-11 11:43 614整体 面向接口:消息系统,持久系统等,其实现都是可替换 ... -
Beyond Workflow : An Introduction to Vitria BusinessWare
2005-09-26 10:13 807一、简介 Busines ... -
Vitria BusinessWare: 存储与访问安全
2006-03-26 15:45 753事实上,BusinessWare使用LDAP做为存储机制和 ... -
Vitria BusinessWare: 平台与软件总线
2006-04-01 12:59 851经过一段时间的使用 ... -
Vitria BusinessWare: Web Services
2006-04-01 14:30 743BusinessWare的Web Services ... -
Web Services:自洽,编码,交换模型
2006-04-01 16:02 6881, 自洽 以前曾经写过: 目前WebServi ... -
Web Services:WSDL 1.1 规范中的几个错误
2006-04-01 16:40 729读完了WSDL 1.1的规范,令人惊讶的是发现似乎例子中有几个 ... -
C++/CLI:被忽视的集成技术
2006-05-17 20:02 759十几行代码,就使一个重要的旧系统组件,完全融入了基于.Ne ... -
AJP/JK:异构Web平台的集成技术
2006-05-25 21:44 711Tomcat Connector 可以将Tomcat ... -
Vitria BusinessWare: 事件与端口
2006-05-27 17:24 676Event BusinessWare是一个事件驱动的系统 ... -
WS-Security Interoperability Issues: WebSphere, JBoss, Axis and .Net
2006-08-31 22:46 845检验了一下WS-Security的互操作情况,涉及到 ...
相关推荐
首先,我们来理解一下什么是浅复制和深复制。在Java中,当我们使用`clone()`方法或`System.arraycopy()`进行复制时,通常得到的是浅复制的结果。这意味着原始对象和复制对象中的引用指向内存中的同一块区域。如果...
Java API是与Elasticsearch交互的主要方式之一,使得开发者能用Java语言方便地进行索引、查询、分析等各种操作。 本压缩包文件"Java API整合ES实现深分页,高亮等操作.zip"可能包含了一个Java应用程序,该程序展示...
这份"java笔记-从浅入深的入门学习"资源旨在为初学者提供一个全面的起点,逐步掌握Java编程的基础知识。 Java的学习首先从安装Java Development Kit (JDK) 开始,它是开发和运行Java程序的基础。理解JDK中的Java...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
首先,我们需要理解“什么是Java”。Java是由Sun Microsystems(现已被Oracle公司收购)在1995年推出的面向对象的编程语言。它的设计哲学是“一次编写,到处运行”,这意味着Java代码可以在任何支持Java的平台上运行...
这是一本以面试题为入口讲解 Java 核心内容的技术书籍,书中内容极力的向你证实代码是对数学逻辑的具体实现。当你仔细阅读书籍时,会发现Java中有大量的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、...
为了理解深拷贝(深复制)和浅拷贝(浅复制),我们需要首先了解Java对象内存的分配方式以及引用的概念。 1. **对象复制的基础** 在Java中,当我们创建一个对象时,系统会在内存中为该对象分配一块空间,存储它的...
《Java Puzzlers》是Java开发领域的经典之作,由Joshua Bloch和Neal Gafter合著。这本书通过一系列精心设计的编程谜题,揭示了Java语言中容易被忽视的陷阱和误解。这些谜题覆盖了类加载、内存模型、类型转换、异常...
《Java深度历险》主要探讨了Java编程语言以外的深层次话题,包括但不限于: - **包与导入机制**:深入解析Java中的包结构和导入规则,这对于理解类的组织方式和访问控制至关重要。 - **类加载机制**:探讨Java类是...
Java is a popular and powerful language that is a virtual requirement for businesses making use of IT in their daily operations For Java programmers this reality offers job security and a wealth of ...
### Java 错误处理:java.lang.OutOfMemoryError: Java heap space 在Java应用程序开发过程中,经常遇到的一个问题就是内存溢出错误,特别是在处理大量数据或长时间运行的应用时。其中,“java.lang....
Java2Pas是一个实用工具,主要用于将Java编程语言编写的源代码转换为Pascal语言的等效代码。这个工具对于那些需要在两种语言之间迁移代码或者理解不同编程语言语法的开发者来说非常有价值。Java和Pascal虽然都是面向...
【JAVA实习报告】\n\n实习是每个计算机科学专业学生踏入职场的重要步骤,尤其是在Java软件开发领域。通过实习,学生可以将理论知识付诸实践,加深理解并积累宝贵经验。本报告将围绕Java实习的目的、实习过程以及实习...
第一章 Java语言的产生及其特点 第二章 Java程序开发与运行环境 第三章 Java程序设计基础 第四章 Java应用程序的基本框架 第五章 Java的类 第六章 Java图形用户接口 第七章 多线程 第八章 Java的"异常" 第九...
Java到Python的转换工具,如标题“java2python”所示,是编程领域中的一种实用技术,旨在帮助开发者将已有的Java代码转换为Python语言。这种转换对于那些熟悉Java但希望进入Python生态系统,或者想要利用Python特定...
Java到JavaScript转换工具有助于开发者将已有的Java代码库移植到JavaScript环境中,这在Web开发中尤其有用,因为JavaScript是浏览器端的主要脚本语言。这样的工具能够帮助开发者利用Java的强大功能来构建前端应用,...
这本书主要涵盖了Java平台上的网络应用程序开发,从基础概念到高级技术,为读者提供了一套全面的学习路径。以下是本书中涉及的一些关键知识点: 1. **Java网络编程基础**:首先,书中会介绍Java中的Socket编程,...
Java集成WebKit浏览器是一种技术实践,它允许Java应用程序利用WebKit渲染引擎来展示网页内容。WebKit是一个开源的Web浏览器引擎,被广泛应用于Safari、Chrome等知名浏览器。在Java中集成WebKit,开发者可以创建具有...
这份中文网页版的Java API文档为中国的开发者提供了便利,无需通过英文版本来学习和查找API信息,提高了开发效率。 首先,API全称为Application Programming Interface,它是软件系统中提供给开发者使用的预先定义...