要是一个牛B的面试试仅凭JDK里面的东西大概就可以考察出一个Java程序员的功底。
记得以前笔试的时候一道题目是[String str=”a”+”b”+”c”,会创建几个对象];当时毫不犹豫的写了4个。一道题目就看出了我的水平在哪个层次上。
笔试题很多被固化,面试刚毕业的学生可以,所以毕业的时候搞几个题海战术基本找工作是没有问题的。如果工作几年后还在拿这个题目面试你是不是太有失水准。记得笔试题里总有说用StringBuilder的,这样效率高,导致这个类泛滥。很多地方都是没有必要。
以前说数学好的和一些底子好的同学后劲更足,当时还不信,说学计算机组成原理有什么用,学数据库原理有什么用?后来我信了,我突然明白培训机构出来的学生有天生的弊端。他们看起来面试很容易通过,只不过似懂非懂的强记而已,根基不好,房子能建多高?
为什么Java的培训机构这么多,而很少有说几个月速成C++的。Java是一门相当容易入门的语言,基本上简单的应用从业务上不太会写出大毛病的代码,只是代码本身狗屎一点。所以几个月突击一下当个码农基本没问题。C++很多应用都是游戏,各种引擎,各种算法,对于速度的要求非常高。语言层面C++也比Java也难掌握的多,光内存那一块就让你够呛。Java程序员可能根本不关心内存的问题,如果开发中内存(其实是性能)已经是你重点关心的问题,恭喜你,你的级别可能有那么高了。算法?Java里有算法吗?当然如果把算法泛化肯定是有的,如果狭义的从语言角度优化来讲Java根本没什么算法。JDK封装的排序也够你用的,况且工作中还很少用到。很多程序员说我会个增删改查基本够用了,确实很多场景都是这样的。我好像一直在做这个工作,真衰~~~
有多少Java程序员用到位移运算?看到与或非门?说实话很少看到,上次看到这样的写法[if(a & 0x00010000==0x00010000)]还觉得TMD的真变态,干嘛不直接等于。如果看到这个就更郁闷了[(a<<5>>(5+18) ],尼玛直接右移会死啊。真实的业务场景这些运算其实很少用到,至少Java Web层很少用到。所以这一块Java程序员知之甚少,而这里更多的是与底层打交道。比如位移运算本身是对二进制操作。我突然想到面试题有一道是a=2,怎么用最快的效率让它等于8,本来这道题目是考位移。出这样的题目可能就是C出身的。因为Java场景下用位移确实很少,而且Java对于性能也没有苛刻到那个地步。Java的很多性能问题也不在语言层面。花时间去优化语言性能还不如花时间去看一下逻辑有没有问题。当然一个好的程序员总能写出高质量的代码。而菜鸟总是写出屎一样的代码。
对于杂家还是专家,其实这样的讨论一直在进行。上次还在网上看到一篇帖子还在说这个问题。其实我觉得跟领域有关系。比如说互联网方面的可能技术会杂一点。而游戏开发还有嵌入式开发技术相对单一(主要是语言,其实也不单一)。所以互联网方面程序员往往会是一专多杂的情况。比如说Java程序员可能会写一些简单的JS和页面布局,写一些不太复杂的SQL。甚至还会一些其他的脚本语言。一门语言学的稍微专业一点,其他语言入门都不是什么问题。只是写出来的代码体现不出那门语言的特性。看懂别人的代码还是不成问题的。
但是这并不代表在这几个领域都要精通,也是不可能的(主要是看到哪个层次)。所以一专多能是大多数人的选择。比如说Java也不是把Java本身学好就够了。不过要学的深还是够呛的。如果是Java程序员如果再去花太多时间学前端就有点本末倒置了。毕竟这两者的分工还是比较明确的。Java程序员可能学一些对技术本身(主要是内功)有提升方面的,比如说把基础打牢,大学学的计算机组成原理,操作系统,甚至是数据结构都可以提升自己的内功。这样各层之间打通之后很多东西自然理顺了。这样很多技术就是透明的,对于后期的提升应该有比较大的帮助。
分享到:
相关推荐
### 高并发架构设计 ...综上所述,高并发架构的设计涉及到多个层面的技术,需要根据实际情况选择合适的技术栈和实施方案。通过综合运用以上提到的各种技术手段,可以构建出稳定、高效且可扩展的高并发系统。
【Java动态加载机制】 在Java编程中,动态加载机制是一个至关重要的特性,它使得程序在运行时能够根据需要加载类,而不是在启动时一次性...通过不断实践和探索,我们可以更好地掌握这些核心技术,提高自己的编程技能。
例如,Python有PEP 8,Java有Google Java Style Guide,这些都是值得遵循的编码规范。 最后,项目管理在大型项目中扮演着重要角色。了解敏捷开发理念,如Scrum或Kanban,可以帮助团队有效地组织和管理任务。同时,...
其中,Java开发人员的需求按照技术级别分为高级1人、中级2人和初级3到4人。根据项目需求,移动端可能需要Android和iOS开发人员,而Web前端需要至少1名专业人员。美工设计人员虽然可以复用,但至少应配置一名。对于...
《Java陈国君(第二版)课件》是一本备受推崇的Java入门教材,由资深Java专家陈国君精心编著,旨在帮助初学者系统、全面地掌握Java编程技术。这本书以深入浅出的方式介绍了Java的核心概念和实战技巧,对于想要踏入...
"高并发场景杂谈.zip"这个压缩包文件集成了多种处理高并发问题的策略和技术,旨在为开发者提供解决高并发问题的思路和实践案例。下面将详细讨论其中涉及的知识点。 首先,我们来看"Redis专场:如何利用Redisson...
**1.6 JAVA面试题解惑系列(六)——字符串(String)杂谈** - **知识点**:深入探讨字符串处理技术,包括字符串拼接、比较、格式化等常见操作的内部实现,以及性能优化建议。 **1.7 JAVA面试题解惑系列(七)——...
在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是一个广泛使用的开源企业级应用开发平台,由Oracle...通过深入学习和实践这两个技术,开发者可以更好地应对复杂的业务场景,打造健壮、可维护的Java应用。
C++或Java则适合深入理解面向对象编程。 3. **算法与数据结构**:程序设计的核心是解决问题,这往往涉及算法的选择和应用。基础算法如排序(冒泡、快速、归并)、查找(线性、二分)以及递归等,是每个程序员必备的...
标题为“hibernate杂谈”的文章主要探讨了Hibernate框架在特定场景下的使用技巧和解决方案。Hibernate是一个强大的Java对象关系映射框架,它简化了数据库的访问和管理,允许开发者使用面向对象的编程方式来操作...
薛立功先生的《嵌入式开发杂谈》不仅是一本技术指南,更是嵌入式开发者的良师益友。通过深入浅出的讲解,本书帮助读者理解嵌入式开发的基本原理和技术要点,同时也提供了实用的解决方案和技巧,对于初学者来说是一份...
Spring框架是Java开发领域中最重要的技术之一,它是一个开源的轻量级框架,提供了全面的编程和配置模型。Spring框架的核心特性包括依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问抽象等。本杂谈将围绕...
### Java框架知识学习 #### Struts 1.x **手写MVC框架** - **概念理解**:在探讨Struts框架之前,先了解MVC(Model-View-Controller)架构模式...通过这些知识点的学习,可以深入理解Java Web开发的核心技术和实践。
收藏的技术网文, 汇总; 包括 java javascrpt 前端, linux , 数据库, 面试技巧, 杂谈感想,---Java框架---算法---工具
第9节Java技术体系00:08:46分钟 | 第10节jdk8的新特性00:07:31分钟 | 第11节lanmbda表达式简介00:07:02分钟 | 第12节Java虚拟机-classic vm00:06:06分钟 | 第13节Java虚拟机-ExactVM00:03:35分钟 | 第14节Java...
现架构设计(码农)兼创业技术顾问,不羁平庸,热爱开源,杂谈程序人生与不定期干货。 视频教程地址 第一章 从传统单体架构走向微服务 Hello,大家好,我是猫叔MySelf,本课程将带领大家入门微服务。 各位年轻又帅气...
综上所述,“java俄罗斯方块”项目涵盖了Java编程中的许多核心概念和技术,是学习和实践Java GUI编程、多线程、游戏开发和数据处理的绝佳案例。通过这个项目,开发者不仅可以掌握Java编程基础,还能深入理解游戏开发...
以上是对Spring框架的一些核心特性和实践的讨论,这些内容涵盖了Spring的事务管理、AOP、扩展点、依赖注入、Web MVC、数据验证以及与其他技术的集成等多个方面,有助于开发者全面理解并有效地利用Spring。