大家好,今天小编关注到一个比较有意思的话题,就是关于java语言经验的问题,于是小编就整理了2个相关介绍Java语言经验的解答,让我们一起看看吧。
有没有大佬能分享一下学习JAVA的经验?
作为一名从业多年的程序员,曾长期使用过J***a语言,也出版过J***a编程书籍,所以我来回答一下这个问题。
J***a语言的学习难点在学习的初期,越往后学习则越简单,因为后期的学习难度已经不在于J***a语言本身了,往往在于开发平台、算法设计、技术选型、技术验证等方面。所以,学习J***a语言的重点就在基础部分,而基础部分的重点就在于理解并建立面向对象的编程思想。
J***a面向对象编程思想的核心在于“抽象”,具体体现在类、对象、属性和方法四个基本概念上,体现的形式还包含封装、继承和多态三个重要的面向对象特征。所以说,学习J***a的重点在于如何理解J***a中的各种“抽象”。要想理解抽象,首先应该从编程过程开始,J***a的编程过程有三步,分别是类的定义(设计)、对象的创建和方法的调用,这是J***a编程的基本思路,也是首先应该建立的J***a编程思想之一。
围绕J***a的编程过程,通过大量的基础性实验,就会逐渐掌握类和对象之间的关系,这也就打开了学习J***a编程的大门,接下来需要进一步学习封装、继承和多态等概念。另外,基础部分还包括异常处理、IO、集合、序列化、多线程和网络编程基础,学习这些内容没有太多的诀窍,要想扎实的掌握这些内容唯有通过大量的实验来解决。
在学习完基础部分之后,应该确定一个发展方向,比如Web开发、大数据开发、Android开发等,对于初学者来说,建议从Web开发方向开始。Web开发的知识结构相对比较健全,另外Web开发的岗位需求量也比较大,就业比较方便。Web开发需要学习Web组件开发、数据库开发、分布式开发、框架开发(Spring系列)等内容,另外还需要学习前端开发的内容,包括html、CSS和JavaScript,其中J***aScript目前的应用范围逐渐拓展,建议重点学习一下。
我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。
如果有互联网方面的问题,或者考研方面的问题,都可以咨询我,谢谢!
一入技术深似海,日新月异拼命追!
一开始学习J***A,觉得仿佛给自己打开了一扇创造的大门,每天用学到的点点滴滴实现一个又一个的需求,很有成就感!赚的也比一般工薪族多一些!
但是很快就厌倦了没日没夜的增删改查,看着功能大相径庭,其实内里相差无几,CV***,改改对象名,改改方法名,很快就实现了一个需求!
很快的就觉得公司不大行,配不上自己的“水平”,出去面试,专门找大公司,好公司,以为信手拈来,然而事实是不断放低自己的要求,面试了很多公司都无疾而终,跪在的问题不是高并发,不是分布式,而是基本的排序算法,基本的数据结构,基本的网络知识,J***A运行[_a***_]等等这些平时用了千百遍,却说不出所以然的东西!
于是开始怀疑自己了,学J***A到底学了什么?增删改查写了几百遍,这跟实习生写三遍的差别在哪?缓存指令只会set,get,遇到问题了怎么办?服务宕机,缓存击穿?jvm底层是什么,你知道吗?
然后告诉自己,要熟悉底层,开始关注性能,可扩展性,如何优化,如何跟实习生拉开差距,不再是一个只会CV,只会增删改的“大神”!
这就是我几年前的学习写照,总是喜欢搞一些花里胡哨的东西,到最后啥也没学到!
所以我在此建议 :
①,注重底层:jdk中基本的数据结构(比如hashmap,hashtable,concurrentHashmap,synchronizedMap区别是什么?如何取舍?),jvm内存模型,内存结构,gc,并发包,反射等等!
②,不要想着啥都会:缓存有好几种,消息中间件有好几种,数据库中间件有好几种,微服务框架有好几种,如果这个学一点那个学一点,有可能最后都只是掌握皮毛,实际中用不到很快就忘了,而且看的太多容易产生倦怠心里,真真正正的搞懂几个中的一个就行了!
有5年J***a经验的人,对于JVM知之甚少,这正常吗?你如何评价?
怎么说那,j***a只是一个工具,jvm是核心。你可以不能凭脑力记住所有的配置项,但是需要明白他的架构,运作原理,大体有那些配置,有那些问题及大体的处理方案。最后可以凭借这个知识结构,遇到调优需要去翻阅资料或者笔记。
目前工作不再是单一要求了,可能做一个产品一个开发人员至少需要js,html5,css3,j***a,mongo,mysql,oracle,redis,python,kafka,activemq,nginx,openresty,lua,c,shell,bat再加上开发框架等等。
现在开发人员要求越来越高,从前端写到服务器进程,sql优化,表设计,linux或者windows服务器问题处理,服务器端自动化脚本开发和调试,以及高并发处理,都是又开发人员做,做不到就会被释放。
五年经验不懂jvm,绝对面不上bat,甚至TMD这一类一线互联网大厂!
三年以上经验的时候,不管去哪家公司面试,总会问关于jvm的东西,其实现在jvm默认配置都已经很强大了,而且在工作中实在用的很少,但终归还是要学的,我就来回忆下,到底哪些jvm相关知识容易问到!
1,jvm内存结构(堆栈等各种结构分区)与内存模型(多线程不安全的原因)的区别,具体的含义?
3,新生代,老年代,永久代对象怎么划分?什么时候处于什么代?什么时候回收?
4,怎么手动回收垃圾?1,重写falinize方法并调用,2,调用system.gc,然后等待jvm回收,也即是说永远不可能手动回收垃圾!
5,怎么判断对象是否能回收?遍历gc roots不可达的对象,就是可以回收的对象!
引用计数法为什么不能用来做为可回收对象依据?有些相互引用的对象永远不会回收!
6,垃圾收集器有哪些?有什么区别?比较常用的CMS,G1收集器,以最大吞吐量,最小响应时间,尽量少的full gc等因素进行选择!
这个很正常,因为jvm一般工作用不到,当然你要成为高手,一定要去了解jvm知识,尤其写底层框架,中间件的,是一定需要了解的。
- 当然你不要恐慌,知道jvm的技术人员,也就是个皮毛,什么新生代,老年代等。整体应用绝大数也是不懂的。
- 在一线大厂面试的时候,肯定会问到jvm;但真正工作就会少点,除了你分配到架构部等写底层组件的部门。
- 别人说的好:面试的时候要你造火车,工作的时候扭螺丝。
对于应用级程序员来说,即使从事多年J***a开发也不一定会涉及到虚拟机的知识。这主要是由工作性质决定的。所以,有5年工作经验的程序员,对于j***a虚拟机机制并不十分了解也是比较正常的情况。
对于应用级程序员来说,J***a虚拟机的作用就是一个实现J***a功能的“容器”,程序员平时虽然每天都会接触到虚拟机,但是虚拟机本身对程序员来说是“透明的”。大部分应用级程序员都是在容器之上从事功能性开发,也就是说通过J***a API来完成大部分编程任务。简单的说容器的作用就是“Don't Call me,I'll Call you”,可以理解为“在需要的时候会出现”。
对于研发级程序员来说,掌握J***a虚拟机的机制是十分有必要的,因为研发级程序员往往都是以产品为导向,性能是研发级程序员关注的核心问题之一。J***a虚拟机是J***a实现功能的基础,了J***a API的支持。J***a虚拟机考虑的核心问题有两点,一点是功能的实现如何组织(J***a字节码、方法调用原理等),另一点是优化(常量池、栈帧、执行引擎、生命周期管理等)。
其实,即使是J***a应用级程序员,了解J***a虚拟机的内部机制还是有一定必要的,因为在编写代码的时候可以更好的运用J***a虚拟机的机制来提高代码的执行效率。了解J***a虚拟机能够从更高的层次来了解J***a语言,对编程语言也会有一个更深层次的认知。
我使用J***a的时间比较久,使用J***a做过Web开发以及大数据方面的开发工作,我会陆续在头条上写一些关于J***a方面的文章,感兴趣的朋友可以关注我的头条号,相信一定会有所收获。
如果有J***a方面的问题,也可以咨询我,谢谢!
到此,以上就是小编对于j***a语言经验的问题就介绍到这了,希望介绍关于j***a语言经验的2点解答对大家有用。