当前位置: 首页 > news >正文

微信官方网站下载做钓鱼网站要什么工具

微信官方网站下载,做钓鱼网站要什么工具,自己搭建网站需要什么,百度指数什么意思转载自 【附答案】Java面试2019常考题目汇总#xff08;一#xff09; 一、JAVA基础篇-概念 1.简述你所知道的Linux#xff1a; Linux起源于1991年#xff0c;1995年流行起来的免费操作系统#xff0c;目前#xff0c; Linux是主流的服务器操作系统#xff0c; 广泛…转载自  【附答案】Java面试2019常考题目汇总一 一、JAVA基础篇-概念 1.简述你所知道的Linux Linux起源于1991年1995年流行起来的免费操作系统目前 Linux是主流的服务器操作系统 广泛应用于互联网、云计算、智能手机Android等领域。由于Java主要用于服务器端的开发因此Java应用的部署环境有很多为Linux。 Windows操作系统的目录结构是以盘符为单位C盘、D盘、E盘等等数据存储在各个盘符之下而Linux操作系统最顶层只有一个根目录root所有文件都存储在这一个根目录之下。 Linux不像Windows的图形操作界面是通过命令的方式进行操作常用命令有 a . pwd用于显示当前工作目录 b . ls用于查看当前工作目录内容 c . cd用于改变当前工作目录。 2.什么是Java虚拟机为什么Java被称作是“平台无关的编程语言” Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成允许应用程序可以运行在任意的平台而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能因为它知道底层硬件平台的指令长度和其他特性。 3.JDK、JRE、JVM关系是什么 JDKJava Development Kit即为Java开发工具包包含编写Java程序所必须的编译、运行等开发工具以及JRE。开发工具如用于编译java程序的javac命令、用于启动JVM运行java程序的java命令、用于生成文档的javadoc命令以及用于打包的jar命令等等。 JREJava Runtime Environment即为Java运行环境提供了运行Java应用程序所必须的软件环境包含有Java虚拟机JVM和丰富的系统类库。系统类库即为java提前封装好的功能类只需拿来直接使用即可可以大大的提高开发效率。 JVMJava Virtual Machines即为Java虚拟机提供了字节码文件.class的运行环境支持。 简单说就是JDK包含JRE包含JVM。 4.Java支持的数据类型有哪些什么是自动拆装箱 基本数据类型 整数值型byte,short,int,long, 字符型char 浮点类型float,double 布尔型boolean 整数默认int型小数默认是double型。Float和long类型的必须加后缀。 首先知道String是引用类型不是基本类型引用类型声明的变量是指该变量在内存中实际存储的是一个引用地址实体在堆中。引用类型包括类、接口、数组等。String类还是final修饰的。 而包装类就属于引用类型自动装箱和拆箱就是基本类型和引用类型之间的转换至于为什么要转换因为基本类型转换为引用类型后就可以new对象从而调用包装类中封装好的方法进行基本类型之间的转换或者toString当然用类名直接调用也可以便于一眼看出该方法是静态的还有就是如果集合中想存放基本类型泛型的限定类型只能是对应的包装类型。 5.面向对象是什么 面向对象是一种思想世间万物都可以看做一个对象这里只讨论面向对象编程OOPJava是一个支持并发、基于类和面向对象的计算机编程语言面向对象软件开发的优点 代码开发模块化更易维护和修改 代码复用性强 增强代码的可靠性和灵活性 增加代码的可读性。 面向对象的四大基本特性 抽象提取现实世界中某事物的关键特性为该事物构建模型的过程。对同一事物在不同的需求下需要提取的特性可能不一样。得到的抽象模型中一般包含属性数据和操作行为。这个抽象模型我们称之为类。对类进行实例化得到对象。 封装封装可以使类具有独立性和隔离性保证类的高内聚。只暴露给类外部或者子类必须的属性和操作。类封装的实现依赖类的修饰符public、protected和private等 继承对现有类的一种复用机制。一个类如果继承现有的类则这个类将拥有被继承类的所有非私有特性属性和操作。这里指的继承包含类的继承和接口的实现。 多态多态是在继承的基础上实现的。多态的三个要素继承、重写和父类引用指向子类对象。父类引用指向不同的子类对象时调用相同的方法呈现出不同的行为就是类多态特性。多态可以分成编译时多态和运行时多态。 抽象、封装、继承和多态是面向对象的基础。在面向对象四大基础特性之上我们在做面向对象编程设计时还需要遵循有一些基本的设计原则。 面向对象的七大设计原则 SOLID原则单一职责原则、开放关闭原则、里氏替换原则、接口隔离原则和依赖倒置原则 迪米特法则 组合优于继承原则合成复用原则。 在遵循这些面向对象设计原则基础上前辈们总结出一些解决不同问题场景的设计模式以四人帮的gof23最为知名。 24种设计模式(gof231) 创建型模式 1.简单工厂模式不包含在gof23中 2.工厂模式 3.抽象工厂模式 4.单例模式 5.原型模式 创建者模式 6.结构型模式 7.组合模式 8.装饰者模式 9.外观模式 10.适配器模式 11.代理模式 12.享元模式 13.桥接模式 行为型模式 14.观察者模式 15.策略模式 16.状态模式 17.中介模式 18.模板方法 19.命令模式 20.备忘录模式 21.访问者模式 22.解释器模式 23.迭代器模式 24.职责链模式 这里只是简单描述了定义和特征以及设计模式的关系具体细节不讨论。 6.请写出下面几个表达式的结果答案可以用10进制或16进制书写 1). 0xaa | 0x55 2). 15 240 3). 10 ^ 12 4). -2 1 5). -2 1 1). 分析十六进制数用0x……来表示后面一个十六进制位是四位两个十六进制位为一个字节最多后面可以有8个十六进制位32个字节,如0xFFFFFFFF。 或“ | ”运算全0为0其他为1。 所以0xaa 用二进制表示为 10101010 ,0x55 用二进制表示为 01010101 ,按位或之后为 11111111 十进制数为255十六进制数为 0xFF 。 2). 分析10进制转换成2进制用该数字除以2记录商和余数利用商再次除以2记录商和余数……直到上为0或余数为0停止余数逆序组成二进制的从低到高位最后的余数为二进制最低位。与“ ”运算全1为1其他为0 。 所以 15 等于1111 240等于 1111000015前面用0补齐为00001111 按位与之后为 00000000 即结果为0 3). 分析 亦或“ ^ ”运算相同取0不同取1 。 所以1010 ^ 1100 0110 , 十进制表示为6十六进制表示为 0x06 。 4). 分析 带符号右移“ ”即有符号位时负数符号位补1正数符号位补0 -2 的二进制求法是正数取反加1因此 2 的二进制表示为0000 0000 0000 0000 0000 0000 0000 0010 取反加一为 1111 1111 1111 1111 1111 1111 1111 1110 即 -2 的二进制表示。 注 , , , 运算符只针对int型和long型byte ,short ,char型需要转换成Int型在进行操作。 所以 带符号右移之后为 1111 1111 1111 1111 1111 1111 1111 1111 除符号位之外减一取反得到带符号十进 制数为 -1 。 5). 分析无符号右移 (“ ”) 即无论正负数右移之后符号位均补 0 。 所以 -2 的二进制无符号右移一位之后为 0111 1111 1111 1111 1111 1111 1111 1111即 2^31 - 1,二的三十一次方减一。 注右移和无符号右移主要区别就在于左面最高位补 0 还是补 1 的问题无符号右移任何时候最高位都补 0 有符号右移则是正数补 0 负数补 1 。没有无符号左移。 7.和的区别 运算符有两种用法(1)按位与(2)逻辑与。运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。之所以称为短路运算是因为如果左边的表达式的值是false右边的表达式会被直接短路掉不会进行运算。很多时候我们可能都需要用而不是例如在验证用户登录时判定用户名不是null而且不是空字符串应当写为username ! null !username.equals(“”)二者的顺序不能交换更不能用运算符因为第一个条件如果不成立根本不能进行字符串的equals比较否则会产生NullPointerException异常。注意逻辑或运算符|和短路或运算符||的差别也是如此。 8.什么是值传递和引用传递 值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量. 引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身 。 一般认为,java内的传递都是值传递. java中实例对象的传递是引用传递 。 9.是否可以在static环境中访问非static变量 static变量在Java中是属于类的它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量编译器会报错因为这些变量还没有被创建出来还没有跟任何实例关联上。 10.Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思 Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。与此相对方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方法名参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。 11.Java中什么是构造方法什么是构造方法重载什么是复制构造方法 当新对象被创建的时候构造方法会被调用。每一个类都有构造方法。在程序员没有给类提供构造方法的情况下Java编译器会为这个类创建一个默认的构造方法。 Java中构造方法重载和方法重载很相似。可以为一个类创建多个构造方法。每一个构造方法必须有它自己唯一的参数列表。 Java不支持像C中那样的复制构造方法这个不同点是因为如果你不自己写构造方法的情况下Java不会创建默认的复制构造方法。 12.Java支持多继承么 Java中类不支持多继承只支持单继承即一个类只有一个父类。 但是java中的接口支持多继承即一个子接口可以有多个父接口。接口的作用是用来扩展对象的功能一个子接口继承多个父接口说明子接口扩展了多个功能当类实现接口时类就扩展了相应的功能。 13.解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法。 通常我们定义一个基本数据类型的变量一个对象的引用还有就是函数调用的现场保存都使用JVM中的栈空间而通过new关键字和构造器创建的对象则放在堆空间堆是垃圾收集器管理的主要区域由于现在的垃圾收集器都采用分代收集算法所以堆空间还可以细分为新生代和老生代再具体一点可以分为Eden、Survivor又可分为From Survivor和To Survivor、Tenured方法区和堆都是各个线程共享的内存区域用于存储已经被JVM加载的类信息、常量、静态变量、JIT编译器编译后的代码等数据程序中的字面量literal如直接书写的100、”hello”和常量都是放在常量池中常量池是方法区的一部分。栈空间操作起来最快但是栈很小通常大量的对象都是放在堆空间栈和堆的大小都可以通过JVM的启动参数来进行调整栈空间用光了会引发StackOverflowError而堆和常量池空间不足则会引发OutOfMemoryError。 14.接口和抽象类的区别是什么 从设计层面来说抽象是对类的抽象是一种模板设计接口是行为的抽象是一种行为的规范。 Java提供和支持创建抽象类和接口。它们的实现有共同点不同点在于 接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。 类可以实现很多个接口但是只能继承一个抽象类 类可以不实现抽象类和接口声明的所有方法当然在这种情况下类也必须得声明成是抽象的。 抽象类可以在不提供接口方法实现的情况下实现接口。 Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。 Java接口中的成员函数默认是public的。抽象类的成员函数可以是privateprotected或者是public。 接口是绝对抽象的不可以被实例化。抽象类也不可以被实例化但是如果它包含main方法的话是可以被调用的。 也可以参考JDK8中抽象类和接口的区别。 15.用最有效率的方法计算2乘以8 答 2 3左移3位相当于乘以2的3次方右移3位相当于除以2的3次方。 16.手写单例模式饿汉和饱汉模式和工厂模式 (1)单例饿汉模式://饿汉式单例类.在类初始化时已经自行实例化 public class Singleton1 { //私有的默认构造子 private Singleton1() {} //已经自行实例化 private static final Singleton1 single new Singleton1(); //静态工厂方法 public static Singleton1 getInstance() { return single; } } (2)懒汉模式://懒汉式单例类.在第一次调用的时候实例化 public class Singleton2 { //私有的默认构造子 private Singleton2() {} //注意这里没有final private static Singleton2 singlenull; //静态工厂方法 public synchronized static Singleton2 getInstance() { if (single null) { single new Singleton2(); } return single; } } (3)工厂模式: interface IFactory{ public IProduct createProduct(); }   Class Factory implements IFactory{ public IProduct createProduct(){ return new Product(); } } Public class client{ Public Static void main (String [] args){   IFactory factorynew Factory();   IProduct productfactory.createProduct();   product.ProductMethod(); } } 17.String和StringBuilder、StringBuffer的区别 Java平台提供了两种类型的字符串String和StringBuffer/StringBuilder它们可以储存和操作字符串。其中String是只读字符串也就意味着String引用的字符串内容是不能被改变的。而StringBuffer/StringBuilder类表示的字符串对象可以直接进行修改。StringBuilder是Java 5中引入的它和StringBuffer的方法完全相同区别在于它是在单线程环境下使用的因为它的所有方面都没有被synchronized修饰因此它的效率也比StringBuffer要高。 二、JAVA基础篇-集合与数组 18.Java集合框架是什么说出一些集合框架的优点 每种编程语言中都有集合最初的Java版本包含几种集合类Vector、Stack、HashTable和Array。随着集合的广泛使用Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类Java已经经历了很久。它还包括在Java并发包中阻塞接口以及它们的实现。集合框架的部分优点如下 1使用核心集合类降低开发成本而非实现我们自己的集合类。 2随着使用经过严格测试的集合框架类代码质量会得到提高。 3通过使用JDK附带的集合类可以降低代码维护成本。 4复用性和可操作性。 19.集合框架中的泛型有什么优点 Java1.5引入了泛型所有的集合接口和实现都大量地使用它。泛型允许我们为集合提供一个可以容纳的对象类型因此如果你添加其它类型的任何元素它会在编译时报错。这避免了在运行时出现ClassCastException因为你将会在编译时得到报错信息。泛型也使得代码整洁我们不需要使用显式转换和instanceOf操作符。它也给运行时带来好处因为不会产生类型检查的字节码指令。 20.Java集合框架的基础接口有哪些 Collection为集合层级的根接口。一个集合代表一组对象这些对象即为它的元素。Java平台不提供这个接口任何直接的实现。## 标题 ## Set是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模被用来代表集合就如一副牌。 List是一个有序集合可以包含重复元素。你可以通过它的索引来访问任何元素。List更像长度动态变换的数组。 Map是一个将key映射到value的对象.一个Map不能包含重复的key每个key最多只能映射一个value。 一些其它的接口有Queue、Dequeue、SortedSet、SortedMap和ListIterator。 21.为何Collection不从Cloneable和Serializable接口继承 Collection接口指定一组对象对象即为它的元素。如何维护这些元素由Collection的具体实现决定。例如一些如List的Collection实现允许重复的元素而其它的如Set就不允许。很多Collection实现有一个公有的clone方法。然而把它放到集合的所有实现中也是没有意义的。这是因为Collection是一个抽象表现。重要的是实现。 当与具体实现打交道的时候克隆或序列化的语义和含义才发挥作用。所以具体实现应该决定如何对它进行克隆或序列化或它是否可以被克隆或序列化。 在所有的实现中授权克隆和序列化最终导致更少的灵活性和更多的限制。特定的实现应该决定它是否可以被克隆和序列化。 22.为何Map接口不继承Collection接口 尽管Map接口和它的实现也是集合框架的一部分但Map不是集合集合也不是Map。因此Map继承Collection毫无意义反之亦然。 如果Map继承Collection接口那么元素去哪儿Map包含key-value对它提供抽取key或value列表集合的方法但是它不适合“一组对象”规范。 23.什么是迭代器(Iterator) Iterator接口提供了很多对集合元素进行迭代的方法。每一个集合类都包含了可以返回迭代器实例的迭代方法。迭代器可以在迭代的过程中删除底层集合的元素,但是不可以直接调用集合的remove(Object Obj)删除可以通过迭代器的remove()方法删除。 24.Iterator和ListIterator的区别是什么 下面列出了他们的区别 Iterator可用来遍历Set和List集合但是ListIterator只能用来遍历List。 Iterator对集合只能是前向遍历ListIterator既可以前向也可以后向。 ListIterator实现了Iterator接口并包含其他的功能比如增加元素替换元素获取前一个和后一个元素的索引等等。 25.快速失败(fail-fast)和安全失败(fail-safe)的区别是什么 快速失败当你在迭代一个集合的时候如果有另一个线程正在修改你正在访问的那个集合时就会抛出一个ConcurrentModification异常。 在java.util包下的都是快速失败。 安全失败你在迭代的时候会去底层集合做一个拷贝所以你在修改上层集合的时候是不会受影响的不会抛出ConcurrentModification异常。 在java.util.concurrent包下的全是安全失败的。 26.Java中的HashMap的工作原理是什么 我们知道在Java中最常用的两种结构是数组和模拟指针(引用)几乎所有的数据结构都可以利用这两种来组合实现HashMap也是如此。实际上HashMap是一个“链表散列”如下是它数据结构最左侧是一个数组数组中的每一个元素都是一个链表链表的每一个元素都是entry。 HashMap是基于hashing的原理我们使用put(key, value)存储对象到HashMap中使用get(key)从HashMap中获取对象。当我们给put()方法传递键和值时我们先对键调用hashCode()方法返回的hashCode用于找到bucket位置来储存Entry对象。 27.当两个对象的hashcode相同会发生什么 因为hashcode相同所以它们的bucket位置相同‘碰撞’会发生。因为HashMap使用链表存储对象这个Entry(包含有键值对的Map.Entry对象)会存储在链表中。 28.如果两个键的hashcode相同你如何获取值对象 当我们调用get()方法HashMap会使用键对象的hashcode找到bucket位置然后会调用keys.equals()方法去找到链表中正确的节点最终找到要找的值对象。 29.hashCode()和equals()方法有何重要性 HashMap使用Key对象的hashCode()和equals()方法去决定key-value对的索引。当我们试着从HashMap中获取值的时候这些方法也会被用到。如果这些方法没有被正确地实现在这种情况下两个不同Key也许会产生相同的hashCode()和equals()输出HashMap将会认为它们是相同的然后覆盖它们而非把它们存储到不同的地方。同样的所有不允许存储重复数据的集合类都使用hashCode()和equals()去查找重复所以正确实现它们非常重要。equals()和hashCode()的实现应该遵循以下规则 1如果o1.equals(o2)那么o1.hashCode() o2.hashCode()总是为true的。 2如果o1.hashCode() o2.hashCode()并不意味着o1.equals(o2)会为true。 具体可以参考 http://blog.csdn.net/javazejian/article/details/51348320 30.HashMap和Hashtable有什么区别 1、HashMap是非线程安全的HashTable是线程安全的。 2、HashMap的键和值都允许有null值存在而HashTable则不行。 3、因为线程安全的问题HashMap效率比HashTable的要高。 4、Hashtable是同步的而HashMap不是。因此HashMap更适合于单线程环境而Hashtable适合于多线程环境。 一般现在不建议用HashTable, ①是HashTable是遗留类内部实现很多没优化和冗余。②即使在多线程环境下现在也有同步的ConcurrentHashMap替代没有必要因为是多线程而用HashTable。 31.如何决定选用HashMap还是TreeMap 对于在Map中插入、删除和定位元素这类操作HashMap是最好的选择。然而假如你需要对一个有序的key集合进行遍历TreeMap是更好的选择。基于你的collection的大小也许向HashMap中添加元素会更快将map换为TreeMap进行有序key的遍历。 32.ArrayList和Vector有何异同点 ArrayList和Vector在很多时候都很类似。 1两者都是基于索引的内部由一个数组支持。 2两者维护插入的顺序我们可以根据插入顺序来获取元素。 3ArrayList和Vector的迭代器实现都是fail-fast的。 4ArrayList和Vector两者允许null值也可以使用索引值对元素进行随机访问。 以下是ArrayList和Vector的不同点。 1Vector是同步的而ArrayList不是。然而如果你寻求在迭代的时候对列表进行改变你应该使用CopyOnWriteArrayList。 2ArrayList比Vector快它因为有同步不会过载。 3ArrayList更加通用因为我们可以使用Collections工具类轻易地获取同步列表和只读列表。 33.Array和ArrayList有何区别什么时候更适合用Array Array可以容纳基本类型和对象而ArrayList只能容纳对象。 Array是指定大小的而ArrayList大小是固定的。 Array没有提供ArrayList那么多功能比如addAll、removeAll和iterator等。尽管ArrayList明显是更好的选择但也有些时候Array比较好用。 1如果列表的大小已经指定大部分情况下是存储和遍历它们。 2对于遍历基本数据类型尽管Collections使用自动装箱来减轻编码任务在指定大小的基本类型的列表上工作也会变得很慢。 3如果你要使用多维数组使用[][]比List
http://www.pierceye.com/news/842335/

相关文章:

  • 青岛做网站大公司免费的行情网站app网页推荐
  • 产品网站建设多少钱哪些网站做推广效果好
  • 网站开发所需技能外链网
  • 广州做家教的网站临沂哪里有做网站
  • 网站建设介绍会发言稿网站开发主页
  • 做推广赚钱的网站如何制作网站策划书
  • 微信公众号商城网站开发能不能不用虚拟主机建设网站
  • iis 网站目录权限vps网站无法通过ip访问
  • 重庆关键词优化咸阳seo培训
  • 专业网站建设分类标准嘉兴网络项目建站公司
  • 做婚礼网站的公司简介网页打不开怎么办页面无法显示
  • 怎么套用模板做网站白嫖二级域名
  • 网站如何进行备案建立平台的步骤
  • 济南免费网站建设网站用什么软件编写
  • 网站如何注册微信公众平台 类型站长要维护网站
  • 美食类网站模板有的网站为什么打不开怎么回事
  • 平面设计网站导航1万元可以注册公司吗
  • 做网站接口多少钱怎样做旅游网站
  • dw制作旅游网站教程天津市区县档案部门网站建设指导意见
  • 关于网站建设的大学pinthis wordpress
  • 济宁 做网站企业做外贸网站常用术语
  • 国内优秀的设计网站推荐网页设计工作室赚钱吗
  • 商汇通网站广州白云学校网站建设
  • 茶叶企业建设网站php网站开发基础
  • 深圳网站建设 猴王网络地方信息网站源码
  • 微网站后台内容设置erp系统定制
  • 图片点击切换网站模板网站开发 北京外包公司
  • 网站正在建设中 免费东莞手机网站设计公司
  • 旅游网站开发成本包括企业管理控制系统
  • 青浦做网站中美最新局势分析