应聘要求java有什么要求

做个话多的程序猿
熟悉基于JSP和Servlet的Java web开发,对servlet和JSP的工作原理和生命 周期有深入了解,熟悉的使用JSTL和EL编写无脚本动态页面若有开发经验,就你在项目中承担怎样的职责?是否经常开会或加班?项目完成后有哪些收获或者经验教训
你还没有登录,请先登录或注册慕课网帐号
熟悉使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架、多线程、I/O(NIO)、Socket、JDBC、XML等至于面试,应该会问项目是为哪个公司开发,项目投入是多少项目采用了怎样的开发模型或者开发流程?项目的架构是怎样的?项目的技术选型是怎样的?
你还没有登录,请先登录或注册慕课网帐号
37342人关注
68009人关注
53050人关注
Copyright (C)
All Rights Reserved | 京ICP备 号-2我的位置:
面试中关于Java你所需知道的的一切
来源:[] 发布日期:
编辑:学校
导读:本篇文章会对面试中常遇到的Java技术点进行全面深入的总结,帮助我们在面试中更加得心应手,不参加面试的同学也能够借...
本篇文章会对面试中常遇到的Java技术点进行全面深入的总结,帮助我们在面试中更加得心应手,不参加面试的同学也能够借此机会梳理一下自己的知识体系,进行查漏补缺。
1、Java中的原始数据类型都有哪些,它们的大小及对应的封装类是什么?
(1)boolean
boolean数据类型非true即false。这个数据类型表示1 bit的信息,但是它的大小并没有精确定义。
《Java虚拟机规范》中如是说:&虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位&。这样我们可以得出boolean类型单独使用是4个字节,在数组中又是1个字节。那虚拟机为什么要用int来代替boolean呢?为什么不用byte或short,这样不是更节省内存空间吗?实际上,使用int的原因是,对于当下32位的CPU来说,一次进行32位的数据交换更加高效。
综上,我们可以知道:官方文档对boolean类型没有给出精确的定义,《Java虚拟机规范》给出了&单独时使用4个字节,boolean数组时1个字节&的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。这其实是一种时空权衡。
&boolean类型的封装类是Boolean。
(2)byte&&1 byte&&Byte
(3)short&&2 bytes&&Short
(4)int&&4 bytes&&Integer
(5)long&&8 bytes&&Long
(6)float&&4 bytes&&Float
(7)double&&8 bytes&&Double
(8)char&&2 bytes&&Character
2、谈一谈&==&与&equals()&的区别。
《Think in Java》中说:&关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系&。
&&==&判断的是两个对象的内存地址是否一样,适用于原始数据类型和枚举类型(它们的变量存储的是值本身,而引用类型变量存储的是引用);equals是Object类的方法,Object对它的实现是比较内存地址,我们可以重写这个方法来自定义&相等&这个概念。比如类库中的String、Date等类就对这个方法进行了重写。
综上,对于枚举类型和原始数据类型的相等性比较,应该使用&==&;对于引用类型的相等性比较,应该使用equals方法。
3、Java中的四种引用及其应用场景是什么?
强引用: 通常我们使用new操作符创建一个对象时所返回的引用即为强引用
软引用: 若一个对象只能通过软引用到达,那么这个对象在内存不足时会被回收,可用于图片缓存中,内存不足时系统会自动回收不再使用的Bitmap
弱引用: 若一个对象只能通过弱引用到达,那么它就会被回收(即使内存充足),同样可用于图片缓存中,这时候只要Bitmap不再使用就会被回收
虚引用: 虚引用是Java中最&弱&的引用,通过它甚至无法获取被引用的对象,它存在的唯一作用就是当它指向的对象回收时,它本身会被加入到引用队列中,这样我们可以知道它指向的对象何时被销毁。
4、object中定义了哪些方法?
&clone(), equals(), hashCode(), toString(), notify(), notifyAll(), wait(), finalize(), getClass()
5、ArrayList, LinkedList, Vector的区别是什么?
ArrayList: 内部采用数组存储元素,支持高效随机访问,支持动态调整大小
LinkedList: 内部采用链表来存储元素,支持快速插入/删除元素,但不支持高效地随机访问
Vector: 可以看作线程安全版的ArrayList
6、String, StringBuilder, StringBuffer的区别是什么?
String: 不可变的字符序列,若要向其中添加新字符需要创建一个新的String对象
StringBuilder: 可变字符序列,支持向其中添加新字符(无需创建新对象)
StringBuffer: 可以看作线程安全版的StringBuilder
7、Map, Set, List, Queue、Stack的特点及用法。
Map&K, V&: &Java中存储键值对的数据类型都实现了这个接口,表示&映射表&。支持的两个核心操作是get(Object key)以及put(K key, V value),分别用来获取键对应的值以及向映射表中插入键值对。
Set&E&: 实现了这个接口的集合类型中不允许存在重复的元素,代表数学意义上的&集合&。它所支持的核心操作有add(E e),remove(Object o), contains(Object o),分别用于添加元素,删除元素以及判断给定元素是否存在于集中。
List&E&: Java中集合框架中的列表类型都实现了这个接口,表示一种有序序列。支持get(int index), add(E e)等操作。
Queue&E&: Java集合框架中的队列接口,代表了&先进先出&队列。支持add(E element), remove()等操作。
Stack&E&: Java集合框架中表示堆栈的数据类型,堆栈是一种&后进先出&的数据结构。支持push(E item), pop()等操作。
8、HashMap和HashTable的区别
HashTable是线程安全的,而HashMap不是
HashMap中允许存在null键和null值,而HashTable中不允许
9、HashMap的实现原理
简单的说,HashMap的底层实现是&基于拉链法的散列表&。
10、ConcurrentHashMap的实现原理
ConcurrentHashMap是支持并发读写的HashMap,它的特点是读取数据时无需加锁,写数据时可以保证加锁粒度尽可能的小。由于其内部采用&分段存储&,只需对要进行写操作的数据所在的&段&进行加锁。
11、TreeMap, LinkedHashMap, HashMap的区别是什么?
HashMap的底层实现是散列表,因此它内部存储的元素是无序的;
TreeMap的底层实现是红黑树,所以它内部的元素的有序的。排序的依据是自然序或者是创建TreeMap时所提供的比较器(Comparator)对象。
LinkedHashMap能够记住插入元素的顺序。
12、Collection与Collections的区别是什么?
&Collection&E&是Java集合框架中的基本接口;Collections是Java集合框架提供的一个工具类,其中包含了大量用于操作或返回集合的静态方法。
13、对于&try-catch-finally&,若try语句块中包含&return&语句,finally语句块会执行吗?
答案是会执行。只有两种情况finally块中的语句不会被执行:
调用了System.exit()方法;
JVM&崩溃&了。
14、Java中的异常层次结构
Java中的异常层次结构如下图所示:
我们可以看到Throwable类是异常层级中的基类。Error类表示内部错误,这类错误使我们无法控制的;Exception表示异常,RuntimeException及其子类属于未检查异常,这类异常包括ArrayIndexOutOfBoundsException、NullPointerException等,我们应该通过条件判断等方式语句避免未检查异常的发生。IOException及其子类属于已检查异常,编译器会检查我们是否为所有可能抛出的已检查异常提供了异常处理器,若没有则会报错。对于未检查异常,我们无需捕获(当然Java也允许我们捕获,但我们应该做的事避免未检查异常的发生)。
15、Java面向对象的三个特征与含义
三大特征:封装、继承、多态。
16、Override, Overload的含义与区别
Override表示&重写&,是子类对父类中同一方法的重新定义
Overload表示&重载&,也就是定义一个与已定义方法名称相同但签名不同的新方法
17、接口与抽象类的区别
&&&&接口是一种约定,实现接口的类要遵循这个约定;抽象类本质上是一个类,使用抽象类的代价要比接口大。接口与抽象类的对比如下:
抽象类中可以包含属性,方法(包含抽象方法与有着具体实现的方法),常量;接口只能包含常量和方法声明。
抽象类中的方法和成员变量可以定义可见性(比如public、private等);而接口中的方法只能为public(缺省为public)。
一个子类只能有一个父类(具体类或抽象类);而一个接口可以继承一个多个接口,一个类也可以实现多个接口。
子类中实现父类中的抽象方法时,可见性可以大于等于父类中的;而接口实现类中的接口 方法的可见性只能与接口中相同(public)。
18、静态内部类与非静态内部类的区别
静态内部类不会持有外围类的引用,而非静态内部类会隐式持有外围类的一个引用。
19、Java中多态的实现原理
所谓多态,指的就是父类引用指向子类对象,调用方法时会调用子类的实现而不是父类的实现。多态的实现的关键在于&动态绑定&。详细介绍请戳Java动态绑定的内部实现机制
20、简述Java中创建新线程的两种方法
继承Thread类(假设子类为MyThread),并重写run()方法,然后new一个MyThread对象并对其调用start()即可启动新线程。
实现Runnable接口(假设实现类为MyRunnable),而后将MyRunnable对象作为参数传入Thread构造器,在得到的Thread对象上调用start()方法即可。
21、简述Java中进行线程同步的方法
volatile: Java Memory Model保证了对同一个volatile变量的写happens before对它的读;
synchronized: 可以来对一个代码块或是对一个方法上锁,被&锁住&的地方称为临界区,进入临界区的线程会获取对象的monitor,这样其他尝试进入临界区的线程会因无法获取monitor而被阻塞。由于等待另一个线程释放monitor而被阻塞的线程无法被中断。
ReentrantLock: &尝试获取锁的线程可以被中断并可以设置超时参数。
22、简述Java中具有哪几种粒度的锁
&Java中可以对类、对象、方法或是代码块上锁。
23、给出&生产者-消费者&问题的一种解决方案
使用阻塞队列:
24、ThreadLocal的设计理念与作用
ThreadLocal的作用是提供线程内的局部变量,在多线程环境下访问时能保证各个线程内的ThreadLocal变量各自独立。也就是说,每个线程的ThreadLocal变量是自己专用的,其他线程是访问不到的。ThreadLocal最常用于以下这个场景:多线程环境下存在对非线程安全对象的并发访问,而且该对象不需要在线程间共享,但是我们不想加锁,这时候可以使用ThreadLocal来使得每个线程都持有一个该对象的副本。
关于ThreadLocal的实现原理分析请戳深入剖析ThreadLocal
25、concurrent包的整体架构
26、ArrayBlockingQueue, CountDownLatch类的作用
CountDownLatch: &允许线程集等待直到计数器为0。适用场景: 当一个或多个线程需要等待指定数目的事件发生后再继续执行。
ArrayBlockingQueue: &一个基于数组实现的阻塞队列,它在构造时需要指定容量。当试图向满队列中添加元素或者从空队列中移除元素时,当前线程会被阻塞。通过阻塞队列,我们可以按以下模式来工作:工作者线程可以周期性的将中间结果放入阻塞队列中,其它线程可以取出中间结果并进行进一步操作。若工作者线程的执行比较慢(还没来得及向队列中插入元素),其他从队列中取元素的线程会等待它(试图从空队列中取元素从而阻塞);若工作者线程执行较快(试图向满队列中插入元素),则它会等待其它线程取出元素再继续执行。
27、wait(),sleep() 的区别
wait(): &Object类中定义的实例方法。在指定对象上调用wait方法会让当前线程进入等待状态(前提是当前线程持有该对象的monitor),此时当前线程会释放相应对象的monitor,这样一来其它线程便有机会获取这个对象的monitor了。当其它线程获取了这个对象的monitor并进行了所需操作时,便可以调用notify方法唤醒之前进入等待状态的线程。
sleep(): &Thread类中的静态方法,作用是让当前线程进入休眠状态,以便让其他线程有机会执行。进入休眠状态的线程不会释放它所持有的锁。
28、线程池的用法与优势
优势: &实现对线程的复用,避免了反复创建及销毁线程的开销;使用线程池统一管理线程可以减少并发线程的数目,而线程数过多往往会在线程上下文切换上以及线程同步上浪费过多时间。
用法: &我们可以调用ThreadPoolExecutor的某个构造方法来自己创建一个线程池。但通常情况下我们可以使用Executors类提供给我们的静态工厂方法来更方便的创建一个线程池对象。创建了线程池对象后,我们就可以调用submit方法提交任务到线程池中去执行了;线程池使用完毕后我们要记得调用shutdown方法来关闭它。
29、for-each与常规for循环的效率对比
关于这个问题我们直接看《Effective Java》给我们做的解答:
for-each能够让代码更加清晰,并且减少了出错的机会。下面的惯用代码适用于集合与数组类型:
使用for-each循环与常规的for循环相比,并不存在性能损失,即使对数组进行迭代也是如此。实际上,在有些场合下它还能带来微小的性能提升,因为它只计算一次数组索引的上限。
30、简述Java IO与NIO的区别
Java IO是面向流的,这意味着我们需要每次从流中读取一个或多个字节,直到读取完所有字节;NIO是面向缓冲的,也就是说会把数据读取到一个缓冲区中,然后对缓冲区中的数据进行相应处理。
Java IO是阻塞IO,而NIO是非阻塞IO。
Java NIO中存在一个称为选择器(selector)的东西,它允许你把多个通道(channel)注册到一个选择器上,然后使用一个线程来监视这些通道:若这些通道里有某个准备好可以开始进行读或写操作了,则开始对相应的通道进行读写。而在等待某通道变为可读/写期间,请求对通道进行读写操作的线程可以去干别的事情。
31、反射的作用与原理
反射的作用概括地说是运行时获取类的各种定义信息,比如定义了哪些属性与方法。原理是通过类的class对象来获取它的各种信息。
32、常见设计模式
所谓&设计模式&,不过是面向对象编程中一些常用的软件设计手法,并且经过实践的检验,这些设计手法在各自的场景下能解决一些需求,因此它们就成为了如今广为流传的&设计模式&。也就是说,正式因为在某些场景下产生了一些棘手的问题,才催生了相应的设计模式。明确了这一点,我们在学习某种设计模式时要充分理解它产生的背景以及它所解决的主要矛盾是什么。
常用的设计模式可以分为以下三大类:
创建型模式: &包括工厂模式(又可进一步分为简单工厂模式、工厂方法模式、抽象工厂模式)、建造者模式、单例模式。
结构型模式: &包括适配器模式、桥接模式、装饰模式、外观模式、享元模式、代理模式。
行为型模式: &包括命令模式、中介者模式、观察者模式、状态模式、策略模式。
33、注解的基本概念与使用
注解可以看作是&增强版的注释&,它可以向编译器、虚拟机说明一些事情。
注解是描述Java代码的代码,它能够被编译器解析,注解处理工具在运行时也能够解析注解。注解本身是&被动&的信息,只有主动解析它才有意义。
除了向编译器/虚拟机传递信息,我们也可以使用注解来生成一些&模板化&的代码。
热点搜词:java,java学习,java技术
2017高考生“企业委培班”特招(限招25名),十万年薪等你拿
*联系手机:
扫一扫关注我们
广州广力北大青鸟学校官方微信
公众微信号:gdglccom
关注:北大青鸟广州广力学员,生活动态、学习动态、学员活动、学生会活动、就业资讯、就业薪资、明星学员、就业讲座、学员作品......
在写代码的过程中,我们往往会忽略一些异常处....
1、什么是类的加载 类的加载指的是将类的.clas....
开始一个新项目可能是具有挑战性的。 有时它需....
什么是jvm调优呢?jvm调优就是根据gc日志分析jv....
2017年你不能错过的Java类库....
Java语言中内存管理的七大技巧,Java做的系统给人....
高中生特招班
技能+学历班
企业定向委培班
java软件开发班
ACCP软件开发班
广州北大青鸟全国咨询热线 / 020
Copyright (C)
..办学许可证号:5
广州广力科技培训中心(广州北大青鸟Aptech广力校区) 版权所有.TEL:020- 邮编:510033
广州市越秀区童心路西胜街42号5号楼(广州青少年科技馆、广州科学技术协会内)
5号地铁:小北站D出口,向西行(市青少年科技馆-市电视台-电视塔-花果山)有没有不要求学历年龄招java程序员的公司呢?
&&&&&&&& 现在为着年后准备松动一下,换一份和谐点的工作环境!不要义务加班都不帮着点份饭的老板!也不要一毛不拔,逢年过节只有望着的,累点到不怕,就怕心黑的。
&&&&&&&& 自己两年工作经验,web开发的大多会,例如:SSH基本的都会,数据库也就sql熟练,UI熟练Flex,jquery,ext。会基本OSGI框架!
&&&&&&&& 上海有这地方的可以联系。
&&&&&&&&&&QQ:
&&&&&&&&&&&&&&
考个公务员就不用纠结了
--- 共有 1 条评论 ---
if( 程序员 != 公务员) 流汗!!!!
我们加班至少有饭吃 而且菜也不错 点小炒什么的 所以很多人喜欢待公司 还能换调休
--- 共有 1 条评论 ---
你那里good,我这加几个小时班,感觉最温馨的就是:“老板说句我先走了!” 挥挥衣袖。
引用来自“wangrunhui”的答案我们加班至少有饭吃 而且菜也不错 点小炒什么的 所以很多人喜欢待公司 还能换调休听到你这个我很舒心啊 一般是老大让我们先走 他基本继续搞的 不然做什么老大 而且我们基本都是老大加班最多 不然怎么服众
--- 共有 3 条评论 ---
: 不过我们估计最多给休个20天不错了
年底了 看着老大将近一个月加班可以换调休,羡啊, 人家加班是真狂啊
... 我们老大,甭提带人了!问个啥,不管你听不听懂,按他的觉得你能知道的说一遍走人。。。下班...他们最先走
引用来自“wangrunhui”的答案引用来自“wangrunhui”的答案我们加班至少有饭吃 而且菜也不错 点小炒什么的 所以很多人喜欢待公司 还能换调休听到你这个我很舒心啊 一般是老大让我们先走 他基本继续搞的 不然做什么老大 而且我们基本都是老大加班最多 不然怎么服众这个么早好走了 干的不开心没意思 毕竟不能受罪对吧
--- 共有 1 条评论 ---
恩,钱也不多,再干的不开心,这就是造孽了。千万别身体垮了,这是我最重要的。
记得最近1年只加了2个班
--- 共有 1 条评论 ---
1年才两次,这....没可比性!
呵呵,加班也不是啥可怕的事,就觉得加着难受就不舒服了。
楼主的英文如何?
如果能对付面试的话,
我可以试一下内推.}

我要回帖

更多关于 星巴克应聘要求 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信