java基础面试 java面试一问三不知怎么办
一、自学java
“这是一篇完整的java程序员学习线路图,一共分为六个阶段。
我以java为例,展示完整的学习步骤。
希望对于想通过java自学的朋友有帮助。
java程序员学习线路流程第一步:Java语言基础从最简单的开始,helloworld开始Java之旅
1.编程基础
常量与变量
数据类型
运算符
流程控制语句
方法
数组
2.面向对象
面向对象思想
类与对象
成员变量和局部变量
封装
this关键字
构造方法
3.集合
集合概述
集合特点
ArrayList集合
HashMap集合
常用集合优劣比较
4.输入/输出IO
字符输入流
字符输出流
字符缓冲输入流
字符缓冲输出流
复制文件
集合与文件中数据相互读写
5.练习阶段
属于你自己的helloword
第二步:java语言高级再结合java高级部分,里面的部分内容,这个阶段你不一定能理解很彻底。但有一点,如果你今后想进入高阶俱乐部,这些内容你必须掌握牢固。
举个栗子,如果你面试通过进入了公司,我一定会在早期仔细review你的代码。代码的功力是欺骗不了人的,不同人写一个接口,呈现的结果也是千差万别(所以才有了规范)。
1.面向对象
继承
多态
重写(Override)
重载(Overload)
封装
接口
java包package
2.异常处理
异常概述
异常分类
异常处理方案
自定义异常
3.多线程
Java线程:概念与原理
Java线程:创建与启动
Java线程:多线程的实现方案
Java线程:线程生命周期
Java线程:线程池
Java线程:线程状态的转换
Java线程:线程的同步与锁
Java线程:线程的交互等等
线程的几个主要概念
在多线程编程时,你需要了解以下几个概念
线程同步
线程间通信
线程死锁
线程控制:挂起、停止和恢复
4.输入与输出IO
文件和I/O
读写文件
Java流(Stream)
文件(File)
缓冲流
5.泛型(Generic)
泛型的使用场景
泛型类型
泛型方法
泛型通配符?
6.网络编程
网络机制
Socket原理机制
UDP、TCP传输等
7.反射(reflection)
类加载机制原理
反射构造方法、字段、方法
Properties配置文件
8.注解(annotation)
注解的使用和原理
三种内置annotation
自定义annotation
注解类的反射调用
动态代理类如何处理
9.Java高级特性和类库
java类加载器classloader
java程序运行的基础知识,java编译后的bytecode的整个运行机制,这一点对应.net的IL(intermediatelanguage)。
理解Javanio,关于这一点网上有非常多的教程,这一条需要重点掌握,对于高并发的掌握很重要。
javajuc(java.util.concurrent)等等
10.JVM原理和调优
JVM最重要的三个部分必须要非常清楚,内存划分、class加载机制以及GC策略。搞清楚这三部分不仅仅是为了面试,也是为了让你对于Java有更深刻的理解,这对于你的Java生涯非常有帮助。
内存划分简单说分为三个部分,YoungGeneration(年轻代)、OldGeneration(年老代)以及PermGeneration(永久代)。其中的YoungGeneration(年轻代),又分为Eden、From和To,其中From和To又统称为SurvivorSpaces(幸存区)。
关于classloader机制的学习,可以结合tomcat去学习,了解清楚tomcat的classloader机制,看tomcat是如何保证各个APP之间的类隔离的。如果可能的话,看一下tomcat中classloader的源码,当中也包含了与tomcat类加载机制相似的部分。
至于GC,需要清楚GCRoots都有哪些,以及如何判断一个对象可以被回收。此外,GC的算法和策略也要有大概的了解。
第三步:javaweb阶段1.前段技术掌握
html
css
js
jquery
bootstrap
2.动态网页技术
JavaServletAPI
Velocity
FreeMarker
JSP等常用模板引擎
比如,淘宝前端层使用的是velocity模板,部分公司采用jsp、freemarker等,基本类似。
3.linux服务器基本命令
在个阶段,也可以结合自己的情况,学习linux系统底层原理。
第四步:java框架阶段1.SSH(struts2+spring+hibernate)
2.SSM(springmvc+spring+mybatis)
备注:如果你仔细,网上有部分叫SSI,I为ibatis,后来ibatis改名为mybatis了。
框架组合,我首推SSM,比SSH灵活强大。
框架的优缺点,我会再单独写文。
如果你还有兴趣,可以自己搭建Lucene、solr框架,以及memcached/redis、activeMQ、hadoop等等搜索、分布式缓存、异步消息、数据等。
我一般建议自己搭建,从学习效果再到理解深度都不一样。有兴趣,就开始自己搭建。
第五步:开发工具阶段1.web调试工具
firefox
firebug
webdeveloper
yslow
httpwatch
ietester等
这些都是开发必用。
2.集成开发工具
eclipse(首推),STS,myEclipse,Idea
eclipse里的插件太多,推荐几个必装插件:
JadClipse、run-jetty-run(很牛的热部署调试)、veloctiy、freemarkerIDE、Subclipse、m2eclipse、mybatisEditor、EasyExplorer等等。
3.版本控制工具
svn、git(首推)
4.构建工具
maven、nexus搭建maven私服
建议自己搭建一套nexusmaven私服,成为你们公司的代码仓库员。
5.java调试工具
jProfiler(性能跟踪)
jClarity(性能监控和日志分析)
Visualvm(性能分析和调优)等
优知学院是IT人的进阶站,提供系统的互联网产品&技术的入门指南以及进阶干货。二、两年的java工作经验,面试时会被问到些什么问题
java程序都会被问到的面试问题,月薪20k+
多线程相关问题实现多线程有哪些方式?有什么异同?线程的生命周期线程池常用的有哪些?线程池的工作原理如何启动和销毁线程什么是线程死锁悲观锁和乐观锁,公平锁和非公平锁Java集合原理集合的类图集合的数据结构实现集合的效率集合的遍历JVM虚拟机java的内存模型是什么样的jvm内存分为哪些区域内存溢出有些类型,如何解决垃圾回收器有哪些垃圾回收算法有哪些jvm常用的参数如何定位分析jvm线上问题有哪些分析jvm的工具数据库索引的分类索引的优化索引的原理事物的类型联合查询,子查询效率问题如何实现读写分离框架类spring(aop,依赖注入)springmvc(原理)dubbo(原理,支持哪些协议)mybites(原理,常用的配置)算法类常见排序原理和实现(8种)求二叉树的高度二叉树的遍历平衡二叉树和红黑树b树,b+树递归和分治思想贪婪算法linux服务器你常用的linux命令有哪些linux权限系统如何写tomcat重启脚本如何用命令搜索日志,分析日志web服务器nginx配置反向代理nginx配置负载均衡(哪几种)apache配置反向代理tomcat参数调优项目你认为做的最有成就的一个项目你在这个项目中负责什么内容遇到了哪些难点,如何解决的你认为这个项目还有哪些改进的地方,为什么这么做那如果有感兴趣老友们想要获取完整面试题的呢...可以去我的主页看看我的面试文章,也可以私信我【面试】获取,很开心能分享给大家!我的很多文章都有分享各种架构资料,相信对于已经工作和遇到技术瓶颈或者写博客码友,在我的主页一定都有你需要的内容。
三、如何入门Java入门基础是什么
我是道哥,在读计算机专业大数据方向,已经在学完成JAVASE,正在了解JAVAEE,先上图,关注私信我,资源免费,全是干货,培训班的视频。
我现在算是准程序猿了,现在学习JAVA的人越来越多了,并且最近几年世界最受欢迎的编程语言是JAVA,一直高居不下。
JAVA之所以现在非常的火爆,就是因为他有自己的优点。
1)首先java是纯面向对象编程的语言;
2)平台无关性(一次编译,到处运行;WriteOnce,RunAnywhere);也可以说成是跨平台性。
3)java提供了许多内置的类库,通过这些类库,还有很多的框架,springmvc等,拿过来直接用,简化了开发人员的设计工作,同时缩短了项目开发时间;
4)提供了对Web应用开发的支持,例如,Applet,Servlet,和JSP可以用来开发Web应用程序,,Socket,RMI可以用来开发分布式应用程序的类库;
5)去除了c++中难以理解,容易混淆的特性(如c++中的多继承,头文件,指针,结构,单元,运算符重载,虚拟基础类,使得程序更加严谨,整洁;
6)具有较好的安全性和健壮性。java语言经常会被用在网络环境中,为了增强程序的安全性
考研资料也免费送哦点赞关注私信我要资源吧感谢你们的支持哦欢迎评论区留言哦~