大学毕业之后java能学到啥程度?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大学毕业之后java能学到啥程度?相关的知识,希望对你有一定的参考价值。
我是一名大二的学生,不是计算机专业,现在在自学java,想在毕业之后(一年以后)找份工作(java网站方面的),想往web方面发展,但是不知道现在一般大学生毕业之后能学到什么程度,java基础加三大框架都能掌握了么? (千万不要和说看自己学多少,我就是想问老师教多少)
java是一门比较深奥的计算机语言,在互联网的推动下,应用更为广泛,学习java语言的学生也与日俱增,但很多学生在初学者入门却是一大难题,那么对于java新手如何才能攻破心里第一防线,掌握java专业技能,成为it界的精英呢?1. JVM相关(包括了各个版本的特性)
对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资深开发者来说,不会JVM几乎是不可接受的。
JVM作为java运行的基础,很难相信对于JVM一点都不了解的人可以把java语言吃得很透。我在面试有超过3年Java经验的开发者的时候, JVM几乎就是一个必问的问题了。当然JVM不是唯一决定技术能力好坏的面试问题,但是可以佐证java开发能力的高低。
在JVM这个大类中,我认为需要掌握的知识有:
JVM内存模型和结构
GC原理,性能调优
调优:Thread Dump, 分析内存结构
class 二进制字节码结构, class loader 体系 , class加载过程 , 实例创建过程
方法执行过程
Java各个大版本更新提供的新特性(需要简单了解)
2. Java的运行(基础必备)
这条可能出看很简单,java程序的运行谁不会呢?不过很多时候, 我们只是单纯通过IDE去执行java程序,底层IDE又是如何执行java程序呢?很多人并不了解。
这个知识点是最最基本的java开发者需要掌握的,初学java,第一个肯定是教你如何在命令行中执行java程序,但是很多人一旦把java学完了,IDE用上了,就把这个都忘了。为什么强调要知道这个呢,知道了java最纯粹的启动方式之后,你才能在启动出问题的时候,去分析当时启动的目录多少,执行命名如何,参数如何,是否有缺失等。 这样有利于你真正开发中去解决那些奇奇怪怪的可能和环境相关的问题。
在这里需要掌握的知识有:
javac 编译java文件为 class 文件
java 命令的使用, 带package的java类如何在命令行中启动
java程序涉及到的各个路径(classpath, java。library。path, java运行的主目录等)
3. 数据类型
这条没有什么好多说的,无非就是Java中的基本类型和对象类型的掌握。可以再了解一些JDK如何自动转换方面的知识,包括装箱拆箱等,还要注意避免装箱之后的类型相等的判断
主要知识点:
基本类型: int, long, float, double, boolean , 。。。
对应的对象类型: Integer 等类型到基本类型的转换, 装箱和拆箱
Object类型: equals, hashcode
String 类型的特点
4. 对象和实例,对象的创建
在这方面,开发者需要了解class和instance的概念以及之间的差别, 这是java面向对象特性的一个基础。主要知识点有:
Class和 Instance 的概念
Instance 创建的过程:
1。 无继承:分配内存空间, 初始化变量, 调用构造函数
2。 有继承:处理静态动作, 分配内存空间, 变量定义为初始值 , 从基类->子类, 处理定义处的初始化, 执行构造方法
需要注意的点:
静态属性等从基类->子类进行初始化
默认无参构造方法相关的特性
5. 访问控制
这也是java封装特性的一个基础,需要掌握的有:
public protected default private 对于class, method, field 的修饰作用
6. 流程控制
Java 流程控制的基础, 虽然有些语法不一定很常用,但是都需要了解,并且在合适的地方使用它们。
需要掌握的有:
if, switch, loop, for, while 等流程控制的语法
7. 面向对象编程的概念
这是一个java的核心概念,对于任何java开发者都需要熟练掌握。Java中很多特性或者说知识点都是和java面向对象编程概念相关的。在我的理解,一个好的开发者不仅仅需要了解这些特性(知识点)本身,也更需要知道这些对象在java的面向对象编程概念中是如何体现出来的,这样更有利于开发者掌握java这门开发语言,以及其他面向对象编程的语言。在这里只是简单罗列了一下,主要的知识点包括有:
面向对象三大特性:封装,继承,多态; 各自的定义概念,有哪些特性体现出来,各自的使用场景
静态多分派,动态单分派的概念
重载的概念和使用
继承:接口多实现,基类单继承
抽象,抽象类,接口
多态:方法覆盖的概念和使用
接口回调
8. Static
静态属性在java日常开发中也是经常使用,需要了解和 static 关键字相关的用法,还有和其他关键字的配合使用, 如是否可以和 abstract, final 等关键字联合使用。
主要需要掌握的有:
静态属性的定义,使用,以及类加载时如何初始化
静态方法的定义和使用
静态类的定义和使用
静态代码块的定义和初始化时机
9. 基础知识点
这里主要罗列一些散落的,没有系统归类的一些java知识点。在日常的开发中用到也不少。 这块内容其实还有很多,目前只是暂时归纳了这几个在这里:
包括有:
equals , hashcode , string/stringbuffer ,final , finally , finalize
10.集合框架
这个是一个需要多加掌握的部分,做java开发,可以说没有不用到集合框架的,这很重要。但是这里的知识点并不难,但是对于集合最好要了解内部的实现方式,因为这样有助于你在各个不同的场景选择适合的框架来解决问题,比如有1W个元素的集合,经常要进行contains判断操作,知道了集合的特性或者内部实现,就很容易做出正确的选择。
这里包括了如下内容(并发相关不包含在内):
集合框架的体系: 基础Collection ,Map
具体集合实现的内容, List ,Set ,Map 具体的实现,内部结构, 特殊的方法, 适用场景等
集合相关的工具类 Collections 等的用法
11.异常框架
异常在java的开发中可能没有那么被重视。一般遇到异常,直接上抛,或者随便catch一下处理之后对于程序整体运行也没有什么大的影响。不过在企业级设计开发中, 异常的设计与处理的好坏,往往就关系着这个系统整体的健壮性。一个好的系统的异常对于开发者来说,处理应该统一,避免各处散落很多异常处理逻辑;对于系统来说,异常应该是可控的,并且是易于运维的,某些异常出现后,应该有应对的方法,知道如何运维处理,所以虽然异常框架很简单,但是对于整个企业级应用开发来说,异常处理是很重要的,处理好异常就需要了解Java中的异常体系。
这部分需要掌握的知识点不多,主要就是:
异常的体系:
Throwable
Exception
RuntimeException
Error
RuntimeException 和 一般 Exception 的区别, 具体处理方法等
12.Java IO
IO 在java中不仅仅是文件读写那么简单,也包括了 socket 网络的读写等等一切的输入输出操作。比如说 标准HTTP请求中Post的内容的读取也是一个输出的过程,等等…
对于IO,Java不仅提供了基本Input、Output相关的api,也提供了一些简化操作的Reader、Writer等api,在某些开发(涉及大量IO操作的项目)中也很重要,一般日常的开发中也会涉及(日志,临时文件的读写等)。
在这中的知识点主要有:
基本IO的体系: 包括有InputStream , OutputStream, Reader/Writer, 文件读取,各种流读取等
NIO 的概念, 具体使用方式和使用场景
13.多线程并发
多线程是Java中普遍认为比较难的一块。多线程用好了可以有效提高cpu使用率, 提升整体系统效率, 特别是在有大量IO操作阻塞的情况下;但是它也是一柄双刃剑, 如果用不好,系统非但提升不大,或者没有提升,而且还会带来多线程之间的调试时等问题。
在多线程中内容有很多,只是简单说明一下Java中初步使用多线程需要掌握的知识点,以后有机会单独再详细介绍一些高级特性的使用场景。
多线程的实现和启动
callable 与 runable 区别
syncrhoized ,reentrantLock 各自特点和比对
线程池
future 异步方式获取执行结果
concurrent包
lock
14.网络
Java中也是提供了可以直接操作 TCP协议、UDP协议的API。在需要强调网络性能的情况下,可以直接使用TCP/UDP 进行通讯。在查看Tomcat等的源码中,就可以看到这些相关API的使用情况。不过一般也比较少会直接使用TCP,会使用诸如MINA、Netty这样的框架来进行处理,因为这个方面的开发涉及不多,所以就不再详细罗列了。
15.时间日期处理
几乎对于每个应用来说,时间日期的处理也是绕不过去的,但是JDK8 之前的时间相关API用法并不友好。在那个时代,可以选择Joda等时间框架。到了JDK8 发布之后,全新的时间API基本融合了其他框架的优点,已经可以很好的直接使用了。
对于Java开发者来说,需要熟练地使用API来对时间和日期做相关的处理。
具体知识点不再罗列,会在以后再写个专门的文章来总结一下JDK8中时间日期API的用法。
16.XML解析/ JSON解析
其实这两块内容都不是J2SE里面的内容,但是在日常开发中,和其他程序交互,和配置文件交互,越来越离不开这两种格式的解析。
不过对于一个开发者来说,能够了解一些XML/JSON具体解析的原理和方法,有助于你在各个具体的场景中更好的选择合适你的方式来使得你的程序更有效率和更加健壮。
XML: 需要了解 DOM解析和 SAX解析的基本原理和各自的适用场景
JSON: 需要了解一些常用JSON框架的用法, 如 Jackson, FastJson, Gson 等。。
17.Maven的使用
Maven也不是Java里面的内容,但是maven是革命性的,给java开发带来了巨大的便利。从依赖的引入和管理,开发流程的更新和发布产出,乃至版本的更新,使用maven可以大大简化开发过程中的复杂度,从而节省大量时间。可以说,maven已经成为java开发者的标配了。所以我把maven也作为一个java开发者对于基础必备的知识点。以后会再放上一些我的一些对于maven使用的经验和技巧等,这里就不再细说了。
这些就是java入门基础知识的干货和实践想结合的分析,由此可见java初学者只要掌握学习方法,不断的学习和研究,还是比较容易上手的。
希望对您有所帮助!~ 参考技术A
java是比较注重实操的计算机语言,大学课堂所授一般与企业所需有所差别。
想要学好Java,需要有正确的学习路线,有坚持不懈的学习毅力,也需要有专业老师的指导,这样才能学得更好。那么,学习Java需要掌握哪些知识和技能呢?这里简单列举一些。
Java学习需要掌握的知识与技能:
1、Java SE部分 初级语法,面向对象,异常,IO流,多线程,Java Swing,JDBC,泛型,注解,反射等。
2、数据库部分,基础的sql语句,sql语句调优,索引,数据库引擎,存储过程,触发器,事务等。
3、前端部分, html5 CSS3 JS, HTML DOM Jquery BootStrap等。
4、Java EE部分,Tomcat和nginx服务器搭建,配置文件,Servlet,JSP,Filter,Listener,http协议,MVC等。
5、框架部分,每个框架都可以分开学,在去学如何使用SSM 或者SSH框架,如何搭建,如何整合。开发中为什么会用框架,Rest是啥?Spring为啥经久不衰,底层如何实现等。
6、23种设计模式,掌握常用的,比如单例模式的多种实现,责任链模式,工厂模式,装饰器模式等,了解常用场景。
7、基础算法和数据结构,八大排序算法,查找算法。
8、熟练使用maven等构建工具,git等版本控制工具,熟悉常用linux命令,log4j,dubug,junit单元测试,日志打印工具,Redis等NoSql。
互联网行业目前还是最热门的行业之一,学习IT技能之后足够优秀是有机会进入腾讯、阿里、网易等互联网大厂高薪就业的,发展前景非常好,普通人也可以学习。
想要系统学习,你可以考察对比一下开设有相关专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能力,能够在校期间取得大专或本科学历,中博软件学院、南京课工场、南京北大青鸟等开设相关专业的学校都是不错的,建议实地考察对比一下。
祝你学有所成,望采纳。
参考技术B 学校里应该教不了太多东西,框架更加不会是学校里会教的东西,框架是要结合实际的商用项目,去边做边了解的。要知道,学校不是企业,不会跟着技术的发展和市场的需求而制定教材。java语言所涉及的内容很多也很杂,实际商业环境下有很多技术都是属于java领域的,但学校里是教不了的。很多商用技术连你们老师都未必了解,更遑论教你们了。
但学校里有一点好处是理论课讲得细,内容进度也不会太快,可以打好计算机方面的基础,有了扎实的底子将来到了企业再学习企业里的技术不会太过艰难。本回答被提问者和网友采纳
大专毕业半路学Python爬虫,学到什么程度可以去找工作了
首先要明确一点,python只不过是一个工具,学会了使用工具不代表你就能找到工作,要有用工具处理问题的能力才符合工作需求。
就像爬虫工程师,java也能实现,想要靠你学的python找到工作,实践经验才是加分项!
从招聘网站整理的爬虫工程师需要达到的要求:
【初级爬虫工程师】
① web 前端的知识: HTML、CSS、JavaSc1ipt、 DOM、 DHTML 、Ajax、jQuery、json 等;
② 正则表达式:能提取正常一般网页中想要的信息,比如某些特殊的文字, 链接信息, 知道什么是懒惰, 什么是贪婪型的正则;
③ 会使用 XPath 等获取一些DOM 结构中的节点信息;
④ 知道什么是深度优先, 广度优先的抓取算法, 及实践中的使用规则;
⑤ 能分析简单网站的结构, 会使用urllib或requests 库进行简单的数据抓取。
【中级爬虫工程师】
① 了解什么是HASH,会简单地使用MD5,SHA1等算法对数据进行HASH一遍存储
② 熟悉HTTP,HTTPS协议的基础知识,了解GET,POST方法,了解HTTP头中的信息,包括返回状态码,编码,user-agent,cookie,session等
③ 能设置user-agent进行数据爬取,设置代理等
④ 知道什么是Request,什么是response,会使用Fiddler等工具抓取及分析简单地网络数据包;
⑤ 对于动态爬虫,要学会分析ajax请求,模拟制造post数据包请求,抓取客户端session等信息,对于一些简单的网站,能够通过模拟数据包进行自动登录。
⑥ 对于一些难搞定的网站学会使用phantomjs+selenium抓取一些动态网页信息
⑦ 并发下载,通过并行下载加速数据爬取;多线程的使用。
【高级爬虫工程师】
① 能够使用Tesseract,百度AI,HOG+SVM,CNN等库进行验证码识别。
② 能使用数据挖掘技术,分类算法等避免死链。
③ 会使用常用的数据库进行数据存储,查询。比如mongoDB,redis;学习如何通过缓存避免重复下载的问题。
④ 能够使用机器学习的技术动态调整爬虫的爬取策略,从而避免被禁IP封禁等。
⑤ 能使用一些开源框架scrapy,scrapy-redis等分布式爬虫,能部署掌控分布式爬虫进行大规模数据爬取。
爬虫技能掌握简要对照:
【初级】
1)Python语言基础
2)相关的请求库
urllib、requests、selenium(动态网页用得上)
3)相关的解析库
BeautifulSoup、XPath、PyQuery、Re正则表达式
4)相关的数据库
MySQL、MongoDB
【中级】
1)Ajax(能通过Ajax接口获取数据)
2)了解基本的 Javascript
3)Puppeteer(基于JS的爬虫框架,可直接执行JS)
4)Pyppeteer(需要python异步知识)
5)多任务基础 & 爬虫提速
多进程、多线程、协程
6)抓取工具
fiddler、Charles、chrome、firefox
7)自动化爬取(爬App)
adb工具、Appium
8)Splash(动态渲染页面的抓取)
9)mitmproxy(中间人代理工具)
【高级】
1)爬虫框架
Scrapy、Pyspider
2)消息队列相关
RabbitMQ、Celery、Kafka
3)Redis 数据库
4)Scrapy
Redis(scrapy的redis组件)、Redis-BloomFilter(scrapy的布隆过滤器)、Cluster(分布式爬虫框架)
5)应对反爬的技术
验证码破解、IP代理池、用户行为管理
分流技术:cookies池、token池、sign池
【更高一级】
JS逆向、App逆向、运维、智能化爬虫
回到问题,针对python爬虫的面试一般会涉及到以下几个部分:
回到问题,针对python爬虫的面试一般会涉及到以下几个部分:
1、基本的编码基础Python
基础的数据结构你得会吧,数据名字和值得对应(字典),对一些url进行处理(列表)等等,爬虫给人的感觉好像对Python编程的知识要求并不高,确实,搞懂基本数据结构、语句,会写写函数好像就OK了,自己业余玩玩还行。
如果要找工作面试爬虫工程师,这远远不够,不要小瞧了爬虫工程师对编程基本功的要求,编程基本功要扎实。除了基本的函数,Python的高级特性、面向对象编程、多线程、装饰器都要熟悉。
编程的功底,以及对语言的理解,从某种程度上可以看出学习能力和发展潜力。
2、HTTP知识
必备技能,要爬的是网页,所以必须要了解网页。
首先html文档的解析方法要懂,比如子节点父节点,属性这些。我们最终看到的网页是被浏览器处理了的,原始的网页是由很多标签组成的。
处理最好使用html的解析器,如果自己用正则匹配的话坑会很多,我个人xpath用得多,跨语言,表达比较好,但是呢也有缺点,正则、逻辑判断有点别扭。
HTTP协议要理解;HTTP协议本身是无状态的,那么“登录”是怎么实现的?这就要求去了解一下session和cookies了。
GET方法和POST方法的区别;
3、浏览器要熟练
爬虫的过程其实是模拟人类去浏览器数据的过程,所以浏览器是怎么访问一个网站的,要学会去观察。
Chrome的Developer Tools提供了访问网站的一切信息;
从traffic可以看到所有发出去的请求,copy as curl功能可以给你生成和浏览器请求完全一致的curl请求!我写一个爬虫的一般流程是这样的,先用浏览器访问,然后copy as curl看看有哪些header,cookies,然后用代码模拟出来这个请求,最后处理请求的结果保存下来。
4、数据库
这个就不用多讲了,数据保存肯定会要用到数据库的。有些时候一些小数据也可以保存成json或者csv等。
推荐使用NoSQL的数据库,比如mongodb,因为爬虫抓到的数据一般是都字段-值得对应,有些字段有的网站有有的网站没有,mongo在这方面比较灵活,况且爬虫爬到的数据关系非常非常弱,很少会用到表与表的关系。
5、爬虫与反爬
这是一个不断较量的过程,就像攻击武器与防御武器一样,双方总是在不断升级。
Python学习详细路线
基础阶段视频
趣味十足的Python进阶教程
学习完上面的基础视频后,绝大部分仍是一种蒙蔽的状态,没有关系,我也同步学习了下面这套教程。
在我学习python之前,一度以为这是非常枯燥的事情,但直到我遇到这个老师的课,我才知道,原来编程可以如此有趣。
每一节课以实际案例来作为课程内容,再加上老师幽默风趣的教学风格,相信你的学习过程会趣味十足。
项目实战教学
当我上面的课程都看完了,就来做一些项目实战锻炼一下吧。学了知识,就要用,通过实际案例,会更深入地掌握这些知识。
Python就业班
如果你希望将来能找到一份高薪程序员的工作,那么这部分资料不容错过哦~
精选Python书籍
书中自有黄金屋,书中自有颜如玉,Python学习的相关书籍,想要系统学习编程的同学可以看一看。
由于篇幅原因,这里就不一一展开了,朋友们如果有需要全套《python从入门到精通》教程,点赞+评论入门即可,我都会回复的!
最后几点小Tip
① 尽量拓展自己爬虫技术的深度和广度
- 深度就是类似反反爬、加密破解、验证登录等技术
- 广度就是分布式、云计算等等,这都是加分项
② 前端部分的掌握,尤其是最常用的 js、ajax、html/xhtml、css 等相关技术,懂前端技术的爬虫工程师会有一定的优势
③ 爬虫,不是抓取到数据就完事了,还需要数据抽取、清洗、消重等方面的经验。
④ 一般公司都会有自己的爬虫系统,维护爬虫系统也是日常工作之一。
⑤ 随着手持设备的市场占比越来越高,app 的数据采集、抓包工具的熟练使用会越来越重要。
以上是关于大学毕业之后java能学到啥程度?的主要内容,如果未能解决你的问题,请参考以下文章