网站模块删除,互动网络游戏公司网站建设,wordpress设置404,网络经营范围包括哪些本文是在学习中的总结#xff0c;欢迎转载但请注明出处#xff1a;http://blog.csdn.net/pistolove/article/details/46753275
前言
打算换个工作#xff0c;近一个月面试了不少的公司#xff0c;下面将一些面试经验和思考分享给大家。另外校招也快要开始了#xff0c;为…本文是在学习中的总结欢迎转载但请注明出处http://blog.csdn.net/pistolove/article/details/46753275
前言
打算换个工作近一个月面试了不少的公司下面将一些面试经验和思考分享给大家。另外校招也快要开始了为在校的学生提供一些经验供参考希望都能找到满意的工作。
刚开始面试的几家公司就是备受各种打击、就是一顿狂问结果答上来的问题没几个开始给自己的信心造成了一定的影响后来经过调整后又恢复到了信心满满的状态。一方面是工作经验有限另一方面是没有进行系统的复习。后者占主要地位。所以如何复习好技术要点是找到好工作的必要前提但也有很大一部分的运气成分在里面。对于应届生而言由于在校能学的技术有限所以在开始面试完几家公司后感觉备受打击是很正常的这时一定不要灰心要从每次面试中总结自己的不足把自己不会的知识都弥补上到后来你就会发现找工作其实没那么难的问来问去就那些东西。
我也不具体说哪家公司的面试那样对公司不好。首先总结一些最主要的知识点然后分析部分知识点最后列出能够回忆起来的面试题和笔试题。希望对大家有所帮助。
重点知识
由于我面试的Java开发工程师针对于JAVA需要理解的重点内容有
JVM内存管理机制和垃圾回收机制基本每次面试都会问一定要搞得透彻
JVM内存调优了解是怎么回事一般做项目过程中使用较多
设计模式熟悉常见设计模式的应用场景会画类图实在不行背几个也是有用的
多线程每次都会问包括线程和进程、线程状态、线程并发的操作等需要深入复习
JAVA集合类框架理解框架图、HashMap、ArrayList、HashSet等的关系和区别其中HashMap的存储机制几乎每次都有问
JAVA的异常处理机制异常的分类、常见的异常有哪些、Try catch finally的使用
JVM运行机制理解JVM是如何运行的
Linux基础面试笔试中对linux也有一定的要求建议最好搭建一个linux虚拟机并练习常用的命令
数据结构和算法
常见的排序算法就不说了需要理解其原理和会写代码还有时间空间复杂度也要知道
队列、栈需要理解其存取结构并能在某些场景下使用
二叉树树的遍历、树的深度、按层次输出、平衡二叉树、逆序打印树等
链表逆序、合并两有序的链表、判断链表是否又环、链表倒数第K个元素等
字符串KMP算法、动态规划这个是重点需要好好理解动态规划常见的题有求解最长回文子串、求解最长公共子串等
海量数据处理现在好多大公司都会问海量数据的处理所以需要掌握常见的处理方法比如Bit-map、分而治之、hash映射等可以百度看看相关的文章加深理解
数据库相关数据库是面试的重点每家公司都会问
最基本的数据库CRUD操作要熟悉能够根据表写出需要的SQL语句
事务、零时表、索引、表锁、行列锁、视图、存储过程等都要深入理解
互联网公司处理的数据量都很大所以有必要对数据库优化和大数据的处理进行了解和熟悉
建议看看Nosql和Redis等非关系数据库相关的书籍和资料
开源框架
像SSH等的开源框架在面试过程中问的很少但是也是有必要了解SSH的运行原理和使用。面试主要考察的是基础所以更加偏向于考察数据结构、算法、数据库、JAVA基础知识等。所以如果你时间有限可以把精力放在基础知识的学习和复习上如果你时间充裕可以学习和复习开源框架相关知识。对于开源框架最好还是看看源码对自己的好处是很大的。
个人建议
上面比较详细地列出和分析了最近面试过程中的问题由于时间长久不可能全部都回忆起来但是大体上相差不大。对于面试个人的一些建议
1心态要放好不能着急。不要看到被人拿到offer自己没有就抱有心里压力其实工作谁都可以找到就看满意不满意所以着急也是没有用。
2身体很重要。不要熬通宵复习、学习把身体搞垮了得不偿失。保持良好的睡眠。
3善于总结面试中的问题。每一次笔试、面试完后需要进行总结将自己不会的知识点一定要搞清楚如果不搞清楚下次还有可能会问的。其实找工作的过程就是积累知识的过 程所以善于总结很重要。
4不要盲目投递简历。不要看见大公司就投递也不要投递自己不想去的城市那样就是在瞎折腾公司就算要你了你也不去还不如把时间放在自己想去的地方呢。
5复习需要持续。由于记忆过后会遗忘所以复习过程中需要反复进行一边理解一边记忆达到闭上眼就能看见知识的体系结构。
最后希望找工作的朋友都能找到一份满意的工作。下面具体列出了面试常见的知识点供大家参考希望对你有所帮助。
主要详细知识点
常用算法考察
冒泡排序
快速排序
插入排序
希尔排序
归并排序
堆排序
桶排序
动态规划
最长公共子串
最长回文子串
数组的最大k个值
数字的最大连续子数组之和
左旋转字符串
字符串匹配算法:KMP算法
二分查找
链表
单链表逆序
两个有序单链表合并
两个单链表是否相交
相交处的节点
单链表倒数第K个数
单链表排序
栈和队列
设计包含min函数的栈
两个队列实现栈
两个栈实现队列
一个数组实现栈和队列
树
前序、中序、后续遍历
求二叉树的深度
按层次遍历二叉树
判断二叉树是否为完全二叉树
判断二叉树是否镜面对称
判断两颗树是否相等
卡特兰数
出栈顺序
n个节点构成的二叉树个数
括号化
凸多边形三角划分
设计模式
Java源码中有哪些设计模式
http://www.iteye.com/news/18725
常见的设计模式类图
http://blog.sina.com.cn/s/blog_8cc6ff5c0101d4cp.html
常见的设计模式的示例
http://www.jb51.net/article/27973.htm
数据库
数据库的crud语句的书写
数据库优化策略、如何优化
海量数据优化
事务
事务中锁分类
事务特性
数据库表锁
行列锁
临时表
索引
存储空间
视图
Linux常用命令最好实战
http://www.php100.com/html/webkaifa/Linux/2009/1106/3485.html
linux上搭建服务器
http://www.cnblogs.com/dudu/archive/2012/12/09/linux-apache-git.html
常用的网络端口
http://www.360doc.com/content/11/1202/09/8209768_169068538.shtml
Nosql、redis等的熟悉、了解
http://www.yiibai.com/redis/redis_quick_guide.html
海量数据的处理
Bit-map、分而治之、hash映射、分布式处理Hadoop、Trie树、双层桶排序等
Java基础
HashMap的存储机制很重要必看
Set、map区别
Set、list区别
Arraylist、LinkedList区别
String、Stringbufer、StringBuilder区别
HashSet、LinkedHashSet区别
HashMap、TreeMap、LinkedHashMap
熟悉Java集合类的框架图
HashMap、ArrayList、StringBuffer、String等源码的熟悉
线程和进程
线程的特性
线程的状态
多线程并发的实现
线程的创建方式
线程池的使用
Java作用域
final、static、native、等特殊关键字的使用
Java按值传递的过程
重构和重载
抽象类和接口
内部类的使用匿名内部类、静态内部类等
Java多线程并发、生产者消费者的实现
Java连接数据库的过程
JVM内存管理和存储机制
http://blog.csdn.net/lengyuhong/article/details/5953544
JVM垃圾回收机制垃圾回收算法
http://jbutton.iteye.com/blog/1569746
JVM加载类过程
http://www.cnblogs.com/sunada2005/p/3577799.html
JVM内存调优
http://www.cnblogs.com/jackyrong/archive/2010/01/21/1653163.html
http://blog.csdn.net/cutesource/article/details/5907418
框架相关
对框架的熟悉:SSH 面试过程中问的很少像jsp、servlet基本不问
spring框架组成、AOP、IOC 、用到的设计模式
hibernate运行机制、缓存的使用、最好看看源码
熟悉和了解JavaScript和jQuery
java中IO、NIO
Java NIO和IO之间第一个最大的区别是IO是面向流的NIO是面向缓冲区的。 Java IO面向流意味着每次从流中读一个或多个字节直至读取所有字节它们没有被缓存在任何地方。此外它不能前后移动流中的数据。如果需要前后移动从流中读取的数据需要先将它缓存到一个缓冲区。 Java NIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区需要时可在缓冲区中前后移动。这就增加了处理过程中的灵活性。但是还需要检查是否该缓冲区中包含所有您需要处理的数据。而且需确保当更多的数据读入缓冲区时不要覆盖缓冲区里尚未处理的数据。
IO流包括字节流和字符流
字节流对应抽象类为InputStream输入流和 OutputStream输出流。 FileInputStream、FileOutputStream
字符流对应抽象类为Reader输入流和Writer输出流。BufferedReader、InputStreamReader、 StringReader
java中异常的分类及结构
Java中的异常类包括内置的异常类以及自定义的异常类都直接或者间接地继承至java.lang.Throwable类。在java.lang包中Throwable类有两个直接子类Error类和Exception类Error类及其子类描述了java运行时系统的内部错误和资源耗尽错误。出现这样的错误的除了通知用户并接尽力使程序安全地终止之外没有更好的办法。Exception类的层次结构又分为两个分支一个分支由RuntimeException派生另外一个分支包含除RuntimeException类之外的异常类。
运行时异常、非运行时异常
运行时异常RuntimeException类及其子类异常如NullPointerException、IndexOutOfBoundsException、classCastException等这些异常是不检查异常程序中可以选择捕获处理也可以不处理。这些异常一般是由程序逻辑错误引起的程序应该从逻辑角度尽可能避免这类异常的发生。
非运行时异常RuntimeException以外的异常类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常不处理程序不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常。
动态代理机制
动态代理可以提供对另一个对象的访问同时隐藏实际对象的具体事实。代理一般会实现它所表示的实际对象的接口。代理可以访问实际对象但是延迟实现实际对象的部分功能实际对象实现系统的实际功能代理对象对客户隐藏了实际对象。客户不知道它是与代理打交道还是与实际对象打交道。动态代理主要包含以下角色动态代理类以下简称为代理类是一个实现在创建类时在运行时指定的接口列表的类该类具有下面描述的行为。代理接口 是代理类实现的一个接口。代理实例 是代理类的一个实例。每个代理实例都有一个关联的调用处理程序 对象它可以实现接口 InvocationHandler。通过其中一个代理接口的代理实例上的方法调用将被指派到实例的调用处理程序的 Invoke 方法并传递代理实例、识别调用方法的java.lang.reflect.Method 对象以及包含参数的 Object 类型的数组。调用处理程序以适当的方式处理编码的方法调用并且它返回的结果将作为代理实例上方法调用的结果返回。
try catch finally的使用
1. finally 里 始终会被执行到 System.exit(0); 除这种被执行外。 2. 即使try中有return 也是先执行 return 后面的语句完了之后不立马return而是去执行finally中的语句。
3. 当try中与finally里同时出现return , 则只会返回 finally 中的return 结果。 4. finally中的值不能影响try中 即将返回的结果值。 **注意**若finally中没有return在try或catch中有return那么在执行return跟着语句之后会把语句的结果新开辟一内存空间直接把结果的存放此内存空间中。所以finally中的值不能影响try或catch中即将return的结果。
静态成员、非静态成员
1类的静态成员(变量和方法)属于类本身在类加载的时候就会分配内存可以通过类名直接去访问非静态成员变量和方法属于类的对象所以只有在类的对象产生创建类的实例时才会分配内存然后通过类的对象实例去访问。
2在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了访问一个内存中不存在的东西当然会出错
抽象类遵循的原则
1abstract关键字只能修饰类和方法不能修饰字段。
2抽象类不能被实例化无法使用new关键字创建对象实例只能被继承。
3抽象类可以包含属性方法构造方法初始化块内部类枚举类和普通类一样普通方法一定要实现变量可以初始化、不初始化但不能初始化后在抽象类中重新赋值或操作该变量只能在子类中改变该变量。
4抽象类中的抽象方法加了abstract关键字的方法不能实现。
5含有抽象方法的类必须定义成抽象类。
扩展抽象类和接口的区别
1接口是公开的里面不能有私有的方法或变量是用于让别人使用的而抽象类是可以有私有方法或私有变量的。
2abstractclass 在Java 语言中表示的是一种继承关系一个类只能使用一次继承关系。但是一个类却可以实现多个interface实现多重继承。接口还有标识里面没有任何方法如Remote接口和数据共享里面的变量全是常量的作用。
3在abstractclass 中可以有自己的数据成员也可以有非abstarct的成员方法而在interface中只能够有静态的不能被修改的数据成员也就是必须是static final的不过在interface中一般不定义数据成员所有的成员方法默认都是 public abstract 类型的。
4abstractclass和interface所反映出的设计理念不同。其实abstractclass表示的是”is-a”关系interface表示的是”has-a”关系。
5实现接口的一定要实现接口里定义的所有方法而实现抽象类可以有选择地重写需要用到的方法一般的应用里最顶级的是接口然后是抽象类实现接口最后才到具体类实现。抽象类中可以有非抽象方法。接口中则不能有实现方法。
6接口中定义的变量默认是publicstatic final 型且必须给其初值所以实现类中不能重新定义也不能改变其值。抽象类中的变量默认是friendly 型其值可以在子类中重新定义也可以在子类中重新赋值。