Java高频面试试题菁选

首页 / 试题 / | 2023-03-20 00:00:00

Java高频面试试题

  在*时的学*、工作中,我们都可能会接触到试题,借助试题可以更好地对被考核者的知识才能进行考察测验。你所见过的试题是什么样的呢?下面是小编为大家整理的Java高频面试试题,欢迎大家分享。

  一、java中==和equals()的区别

  简单来说==适合应用于基本数据类型的比较,而重写后equals()方法适合应用于引用类型的比较。原因在于基本类型变量直接存储的是值本身,而引用类型变量存储的是对象的`引用,当引用相同时,用==比较,自然会是true,当引用不同时,用==比较,则会是false。

  equlals方法是object中的方法,对于所有继承于object的类都会有该方法,当使用equals方法是需对此方法进行重写,如果没有对equals方法重写,则比较的是引用类型的,变量所指向的对象的地址,没有重写的equals,和==效果相同,只有重写了equals,比较的才会是所指对象的内容。

  二、java中String、StringBuild、StringBuffer的区别

  String是不可变类,因此对String进行操作都会产生新的String对象,容易导致效率低下,浪费内存空间。因此,为了应对经常性的字符串操作,引入了StringBuffer、StringBuild这种字符串变量。

  StringBufffer和StringBuild最大的区别,就是StringBuffer线程安全,但效率低,而StringBuild线程不安全,但效率高,且此两者只能通过构造函数的方式初始化。而String可以通过构造函数和字面量复制两种方式。

  三、java中重载(overload、重写(override)的区别

  1、重载是通过不同的方法参数来区分的,例如不同的参数个数、不同的参数类型、或者不同的参数顺序。不能通过方法的访问权限、返回值类型、和抛出异常类型类进行重载。

  2、覆盖是指子类函数覆盖父类函数,覆盖一个方法,并对其重写。重写需要注意,子类必须与父类中,被重写的方法有相同的函数名、相同的参数、相同的返回值、以及抛出异常也必须保持一致。

  四、java中接口和抽象类的区别

  1、抽象类和接口都不能直接实例化

  2、抽象类要被子类继承(extends),接口要被类实现(implements)

  3、接口只能做方法的声明,且所有方法访问权限必须是public,抽象类中可以做方法声明,也可以做方法的实现。

  4、接口中定义的变量只能是公共的静态常量,抽象类中的变量可以是普通变量。

  5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类的抽象方法,那么该子类只能是抽象类。同理如果在实现接口的时候,如果不能实现接口方法,那么该类也只能为抽象类。

  五、我们能否重载main()方法?

  可以,我们可以重载main()方法。一个Java类可以有任意数量的main()方法。

  为了运行java类,类的main()方法应该有例如“public static void main(String[] args)”的声明。如果你对此声明做任何修改,编译也是可以成功的。但是,运行不了Java程序。你会得到运行时错误,因为找不到main方法。


Java高频面试试题菁选扩展阅读


Java高频面试试题菁选(扩展1)

——Java高频面试试题

Java高频面试试题

  在*时的学*、工作中,我们都可能会接触到试题,借助试题可以更好地对被考核者的知识才能进行考察测验。你所见过的试题是什么样的呢?下面是小编为大家整理的Java高频面试试题,欢迎大家分享。

  一、java中==和equals()的区别

  简单来说==适合应用于基本数据类型的比较,而重写后equals()方法适合应用于引用类型的比较。原因在于基本类型变量直接存储的是值本身,而引用类型变量存储的是对象的`引用,当引用相同时,用==比较,自然会是true,当引用不同时,用==比较,则会是false。

  equlals方法是object中的方法,对于所有继承于object的类都会有该方法,当使用equals方法是需对此方法进行重写,如果没有对equals方法重写,则比较的是引用类型的,变量所指向的对象的地址,没有重写的equals,和==效果相同,只有重写了equals,比较的才会是所指对象的内容。

  二、java中String、StringBuild、StringBuffer的区别

  String是不可变类,因此对String进行操作都会产生新的String对象,容易导致效率低下,浪费内存空间。因此,为了应对经常性的字符串操作,引入了StringBuffer、StringBuild这种字符串变量。

  StringBufffer和StringBuild最大的区别,就是StringBuffer线程安全,但效率低,而StringBuild线程不安全,但效率高,且此两者只能通过构造函数的方式初始化。而String可以通过构造函数和字面量复制两种方式。

  三、java中重载(overload、重写(override)的区别

  1、重载是通过不同的方法参数来区分的,例如不同的参数个数、不同的参数类型、或者不同的参数顺序。不能通过方法的访问权限、返回值类型、和抛出异常类型类进行重载。

  2、覆盖是指子类函数覆盖父类函数,覆盖一个方法,并对其重写。重写需要注意,子类必须与父类中,被重写的方法有相同的函数名、相同的参数、相同的返回值、以及抛出异常也必须保持一致。

  四、java中接口和抽象类的区别

  1、抽象类和接口都不能直接实例化

  2、抽象类要被子类继承(extends),接口要被类实现(implements)

  3、接口只能做方法的声明,且所有方法访问权限必须是public,抽象类中可以做方法声明,也可以做方法的实现。

  4、接口中定义的变量只能是公共的静态常量,抽象类中的变量可以是普通变量。

  5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类的抽象方法,那么该子类只能是抽象类。同理如果在实现接口的时候,如果不能实现接口方法,那么该类也只能为抽象类。

  五、我们能否重载main()方法?

  可以,我们可以重载main()方法。一个Java类可以有任意数量的main()方法。

  为了运行java类,类的main()方法应该有例如“public static void main(String[] args)”的声明。如果你对此声明做任何修改,编译也是可以成功的。但是,运行不了Java程序。你会得到运行时错误,因为找不到main方法。


Java高频面试试题菁选(扩展2)

——Spring高频面试试题菁选

Spring高频面试试题

  无论是在学校还是在社会中,我们都不可避免地要接触到试题,借助试题可以检测考试者对某方面知识或技能的掌握程度。那么你知道什么样的试题才能有效帮助到我们吗?以下是小编为大家收集的Spring高频面试试题,仅供参考,大家一起来看看吧。

  一、什么是Spring框架?Spring框架有哪些主要模块?

  Spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java*台。Spring帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。

  Spring框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成Spring框架,不必担心Spring是如何在后台进行工作的。

  Spring框架至今已集成了20多个模块。这些模块主要被分如下图所示的核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。

  二、使用Spring框架能带来哪些好处?

  下面列举了一些使用Spring框架带来的主要好处:

  1、DependencyInjection(DI)方法使得构造器和JavaBeanproperties文件中的依赖关系一目了然。

  2、与EJB容器相比较,IoC容器更加趋向于轻量级。这样一来IoC容器在有限的内存和CPU资源的情况下进行应用程序的开发和发布就变得十分有利。

  3、Spring并没有闭门造车,Spring利用了已有的技术比如ORM框架、logging框架、J2EE、Quartz和JDKTimer,以及其他视图技术。

  4、Spring框架是按照模块的形式来组织的。由包和类的编号就可以看出其所属的模块,开发者仅仅需要选用他们需要的模块即可。

  5、要测试一项用Spring开发的应用程序十分简单,因为测试相关的环境代码都已经囊括在框架中了。更加简单的是,利用JavaBean形式的POJO类,可以很方便的利用依赖注入来写入测试数据。

  6、Spring的Web框架亦是一个精心设计的WebMVC框架,为开发者们在web框架的选择上提供了一个除了主流框架比如Struts、过度设计的、不流行web框架的以外的有力选项。

  7、Spring提供了一个便捷的事务管理接口,适用于小型的本地事物处理(比如在单DB的环境下)和复杂的共同事物处理(比如利用JTA的复杂DB环境)。

  三、什么是控制反转(IOC)?什么是依赖注入?

  1、控制反转是应用于软件工程领域中的,在运行时被装配器对象来绑定耦合对象的一种编程技巧,对象之间耦合关系在编译时通常是未知的。

  在传统的编程方式中,业务逻辑的流程是由应用程序中的早已被设定好关联关系的对象来决定的.。

  在使用控制反转的情况下,业务逻辑的流程是由对象关系图来决定的,该对象关系图由装配器负责实例化,这种实现方式还可以将对象之间的关联关系的定义抽象化。而绑定的过程是通过“依赖注入”实现的。

  2、控制反转是一种以给予应用程序中目标组件更多控制为目的设计范式,并在我们的实际工作中起到了有效的作用。

  3、依赖注入是在编译阶段尚未知所需的功能是来自哪个的类的情况下,将其他对象所依赖的功能对象实例化的模式。

  这就需要一种机制用来激活相应的组件以提供特定的功能,所以依赖注入是控制反转的基础。否则如果在组件不受框架控制的情况下,框架又怎么知道要创建哪个组件?

  4、在Java中依然注入有以下三种实现方式:

  1)构造器注入;

  2)Setter方法注入;

  3)接口注入;

  四、请解释下Spring框架中的IoC?

  Spring中的org。springframework。beans包和org。springframework。context包构成了Spring框架IoC容器的基础。

  BeanFactory接口提供了一个先进的配置机制,使得任何类型的对象的配置成为可能。ApplicationContex接口对BeanFactory(是一个子接口)进行了扩展。

  在BeanFactory的基础上添加了其他功能,比如与Spring的AOP更容易集成,也提供了处理messageresource的机制(用于国际化)、事件传播以及应用层的特别配置,比如针对Web应用的WebApplicationContext。

  五、BeanFactory和ApplicationContext有什么区别?

  BeanFactory可以理解为含有bean集合的工厂类。BeanFactory包含了种bean的定义,以便在接收到客户端请求时将对应的bean实例化。

  BeanFactory还能在实例化对象的时生成协作类之间的关系。此举将bean自身与bean客户端的配置中**出来。BeanFactory还包含了bean生命周期的控制,调用客户端的初始化方法(initializationmethods)和销毁方法(destructionmethods)。

  从表面上看,applicationcontext如同beanfactory一样具有bean定义、bean关联关系的设置,根据请求分发bean的功能。但applicationcontext在此基础上还提供了其他的功能:

  1)提供了支持国际化的文本消息;

  2)统一的资源文件读取方式;


Java高频面试试题菁选(扩展3)

——java面试题 (菁华3篇)

java面试题1

  1、&和&&的区别?

  答:&运算符有两种用法:(1)按位与;(2)逻辑与。&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是null而且不是空字符串,应当写为:username != null &&!username.equals(""),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会产生NullPointerException异常。注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。

  补充:如果你熟悉JavaScript,那你可能更能感受到短路运算的强大,想成为JavaScript的高手就先从玩转短路运算开始吧。

  2、解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法。

  答:通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间;而通过new关键字和构造器创建的对象放在堆空间;程序中的字面量(literal)如直接书写的100、"hello"和常量都是放在静态区中。栈空间操作起来最快但是栈很小,通常大量的对象都是放在堆空间,理论上整个内存没有被其他进程使用的空间甚至硬盘上的虚拟内存都可以被当成堆空间来使用。

  String str = new String("hello");

  上面的语句中变量str放在栈上,用new创建出来的字符串对象放在堆上,而"hello"这个字面量放在静态区。

  补充:较新版本的Java(从Java 6的某个更新开始)中使用了一项叫"逃逸分析"的技术,可以将一些局部对象放在栈上以提升对象的操作性能。

  3、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

  答:Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行下取整。

  4、swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?

  答:在Java 5以前,switch(expr)中,expr只能是byte、short、char、int。从Java 5开始,Java中引入了枚举类型,expr也可以是enum类型,从Java 7开始,expr还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。

java面试题2

  1、数组有没有length()方法?String有没有length()方法?

  答:数组没有length()方法,有length 的属性。String 有length()方法。JavaScript中,获得字符串的长度是通过length属性得到的,这一点容易和Java混淆。

  2、在Java中,如何跳出当前的多重嵌套循环?

  答:在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环。(Java中支持带标签的break和continue语句,作用有点类似于C和C++中的goto语句,但是就像要避免使用goto一样,应该避免使用带标签的break和continue,因为它不会让你的程序变得更优雅,很多时候甚至有相反的作用,所以这种语法其实不知道更好)

  3、构造器(constructor)是否可被重写(override)?

  答:构造器不能被继承,因此不能被重写,但可以被重载。

  4、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

  答:不对,如果两个对象x和y满足x.equals(y) == true,它们的哈希码(hash code)应当相同。Java对于eqauls方法和hashCode方法是这样规定的:(1)如果两个对象相同(equals方法返回true),那么它们的.hashCode值一定要相同;(2)如果两个对象的hashCode相同,它们并不一定相同。当然,你未必要按照要求去做,但是如果你违背了上述原则就会发现在使用容器时,相同的对象可以出现在Set集合中,同时增加新元素的效率会大大下降(对于使用哈希存储的系统,如果哈希码频繁的冲突将会造成存取性能急剧下降)。

java面试题3

  问题1:main方法的参数里面,字符串数组的第一个参数是什么?

  答案:数组是空的,没有任何元素。不像C或者C++,第一个元素默认是程序名。如果命令行没有提供任何参数的话,main方法中的String数组为空,但不是null。

  问题2:怎么判断数组是null还是为空?

  答案:输出array.length的值,如果是0,说明数组为空。如果是null的话,会抛出空指针异常。

  问题3:程序中可以允许多个类同时拥有都有main方法吗?

  答案:可以。当程序运行的时候,我们会指定运行的`类名。JVM只会在你指定的类中查找main方法。因此多个类拥有main方法并不存在命名冲突的问题。

  问题4:静态变量在什么时候加载?编译期还是运行期?静态代码块加载的时机呢?

  答案:当类加载器将类加载到JVM中的时候就会创建静态变量,这跟对象是否创建无关。静态变量加载的时候就会分配内存空间。静态代码块的代码只会在类第一次初始化的时候执行一次。一个类可以有多个静态代码块,它并不是类的成员,也没有返回值,并且不能直接调用。静态代码块不能包含this或者super,它们通常被用初始化静态变量。

  问题5:简单的介绍下JVM是如何工作的?

  答案:JVM是一台抽象的计算机,就像真实的计算机那样,它们会先将.java文件编译成.class文件(.class文件就是字节码文件),然后用它的解释器来加载字节码。


Java高频面试试题菁选(扩展4)

——编辑面试试题

编辑面试试题

  在日常学*和工作生活中,我们最熟悉的就是试题了,借助试题可以更好地考核参考者的知识才能。还在为找参考试题而苦恼吗?以下是小编整理的编辑面试试题,希望对大家有所帮助。

  1、您*时阅读的商业类媒体有哪些?请用一两句话评论其优缺点。

  首先,它为客户着想只要打开qq会自动弹出新闻页面方便快捷为现在的上班族学生省去了一部分时间

  第二,它分区域,面对在不地区登陆的客户。他的新闻页面,除了国内国际大事,还有所在地当地大事件让客户掌握更多信息,同时可以为自己赢得更多点击率,很聪明。

  第三,新闻覆盖面政治、娱乐、财经、生活、基本全有,语言直白,简单易懂。

  第四,作为新闻人,他在位客户着想的同时,也为自己谋算,自动弹出页面提醒受众或者“强迫”受众点击阅读,为自己创造了效益。

  缺点:缺乏评论,对时事大事没有自主言论。

  2、*时您都关注什么资讯?请列举出几个本周的新闻事件,并就某一个事件说出您的看法。

  从个人爱好,*时里关注体育,数字产品和创意类新闻比较多。

  作为一个足迷,今天看到最难过的新闻莫过于陶伟指导去世的消息了,最开始以为还是一个恶意中伤的玩笑,结果越读就越悲伤,看着满屏幕的悼词,却不知道该写点什么好。那种感觉就像是突然有人告诉你,刚刚还在和你开着玩笑的朋友突然走了,最初只是叹气,只是惋惜朋友的遭遇,感慨生命的脆弱。然后过了许多年,也许都忘记了曾经在你生命中短暂驻留过的人们,突然想起来,某人在某时某刻,在某个地方说过一个巨冷无比的笑话,除了他本人,其他的人都没有笑,只有他笑的灿烂如故。想起了那个笑话,却又连带着想起了这样一个朋友,想笑着告诉他,这个笑话无比精彩,回头却发现身边空无一人。

  这么多年了,早已*惯了每个周末的晚上有陶指的声音作为陪伴,早就*惯了他或调侃或严肃的评论。以后看德甲估计会经常想起这样一句没有答案的问话:陶指导,您怎么看........

  身为半个哈尔滨人,对于阳明滩大桥的断裂感情较为复杂,*时生活里看到了太多的偷工减料,听到了不少上层推诿责任的传言。只是当事故发生之时,*日里以宣传而著名的负责单位,上级机关部门却集体失声了,除了那些不痛不痒的辟谣之外,哈尔滨人没有听到一句实在话。**的公信力*乎冰点,很多时候,百姓们宁愿相信莫须有的传言,也不愿听到官方的说辞。就像透支的信用卡一样,总会有那么一天,会为自己最初的愚蠢而付出代价。

  3、请写出领带的十种作用。

  1、装饰作用,色彩亮丽的领带是男士身上最总要的装饰物,可以突出一位男士的品味与风格。

  2、礼物的作用,女士送男士领带可以表达自己的爱慕之心。

  3、夫妻之间增进感情的.作用,每天男士出门前由妻子帮忙打领带,可以有效的促进夫妻之间的感情。

  4、专业人士的象征,像**官员、销售人员打领带,一来是对对方的尊重,二来也是自己专业的象征。

  5、安慰女朋友的有效工具,女朋友哭泣时,领带可以及时的起到手帕的作用。

  6、受伤时,可以作为绷带。

  7、给女朋友惊喜时,可以用来蒙住女朋友的眼睛。

  8、特殊情况当作绳子来用。

  9、实在不想说,还可用来**,现在电视剧都爱这么演。

  10、实在不想说,还可以用来自杀。

  4、如何看待完美主义者?

  对于完美主义者,我分两方面来说。从好的方面来说,完美主义者总是想尽善尽美,因此他对待任何事情的态度都会很认真,对待小细节也不容易去忽视或略过,从某种程度上来说他可以起到一个积极的带头作用。另一方面,我认为完美主义者就是钻牛角尖的人,人可以尽量做好,但不可能做到极致。我认为只有更好而不存在完美,因为这个社会本就是不完美的,完美只能说是我们向往并去为之努力奋斗的,而不是某一时某一刻必须达到的。

  完美主义者从某一程度上来说,他的抗击打能力还不如一个普通的消极者,因为消极的人至少还会在面临失败后去憧憬,而完美主义者一旦失败在精神上就容易频临崩溃。因此对于完美主义者来说,必须要对自己有很好的掌控力,对待任何事物都要适度而为,量力而行。

  5、如果您认为自己这份答卷答得不好,请说明我们为什么还一定要聘用你?

  时间在变,空间在变,这个社会也在变,试卷上的东西代表的只是一个瞬间,这个瞬间的好与坏并不是决定一个人的最终因素。相信企业在选择人才时更加注重的是一个人的综合素质,而并非试卷上的答案。


Java高频面试试题菁选(扩展5)

——Java必问经典面试试题

Java必问经典面试试题

  在学*、工作中,许多人都需要跟试题打交道,试题有助于被考核者了解自己的真实水*。什么样的试题才是科学规范的试题呢?以下是小编为大家收集的Java必问经典面试试题,仅供参考,大家一起来看看吧。

  一、java中==和equals()的区别?

  简单来说==适合应用于基本数据类型的比较,而重写后equals()方法适合应用于引用类型的比较。原因在于基本类型变量直接存储的是值本身,而引用类型变量存储的是对象的引用,当引用相同时,用==比较,自然会是true,当引用不同时,用==比较,则会是false。equlals方法是object中的方法,对于所有继承于object的类都会有该方法,当使用equals方法是需对此方法进行重写,如果没有对equals方法重写,则比较的是引用类型的,变量所指向的对象的地址,没有重写的equals,和==效果相同,只有重写了equals,比较的才会是所指对象的内容。

  二、java中String、StringBuild、StringBuffer的.区别?

  String是不可变类,因此对String进行操作都会产生新的String对象,容易导致效率低下,浪费内存空间。因此,为了应对经常性的字符串操作,引入了StringBuffer、StringBuild这种字符串变量。StringBufffer和StringBuild最大的区别,就是StringBuffer线程安全,但效率低,而StringBuild线程不安全,但效率高,且此两者只能通过构造函数的方式初始化。而String可以通过构造函数和字面量复制两种方式。

  三、java中重载(overload、重写(override)的区别?

  1)重载是通过不同的方法参数来区分的,例如不同的参数个数、不同的参数类型、或者不同的参数顺序。不能通过方法的访问权限、返回值类型、和抛出异常类型类进行重载。2)覆盖是指子类函数覆盖父类函数,覆盖一个方法,并对其重写。重写需要注意,子类必须与父类中,被重写的方法有相同的函数名、相同的参数、相同的返回值、以及抛出异常也必须保持一致。

  四、java中接口和抽象类的区别?

  1、抽象类和接口都不能直接实例化

  2、抽象类要被子类继承(extends),接口要被类实现(implements)

  3、接口只能做方法的声明,且所有方法访问权限必须是public,抽象类中可以做方法声明,也可以做方法的实现。

  4、接口中定义的变量只能是公共的静态常量,抽象类中的变量可以是普通变量。

  5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类的抽象方法,那么该子类只能是抽象类。同理如果在实现接口的时候,如果不能实现接口方法,那么该类也只能为抽象类。

  6、抽象方法只能声明,不能实现,接口是设计的结果,抽象类是重构的结果。

  7、抽象类里可以没有抽象方法。

  8、一个类里有抽象方法,那么这个类只能是抽象类。

  9、抽象方法需要被实现,因此不能是私有的,也不能是静态的。

  10、接口可以继承接口,并可多继承接口,但类只能单根继承。


Java高频面试试题菁选(扩展6)

——2021Tomcat面试试题

2021Tomcat面试试题

  无论是在学校还是在社会中,我们很多时候都会有考试,接触到试题,试题是命题者根据一定的考核需要编写出来的。一份什么样的试题才能称之为好试题呢?以下是小编为大家收集的2021Tomcat面试试题,欢迎大家分享。

  一、什么是Tomcat?

  Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器。

  二、tomcat结构目录有哪些?

  ①bin:启动和关闭tomcat的bat文件。

  ②conf:配置文件。

  ③server.xml该文件用于配置server相关的信息,比如tomcat启动的端口号,配置主机(Host)。

  ④web.xml文件配置与web应用(web应用相当于一个web站点)

  ⑤tomcat-user.xml配置用户名密码和相关权限。

  ⑥lib:该目录放置运行tomcat运行需要的jar包。

  ⑦logs:存放日志,当我们需要查看日志的时候,可以查询信息。

  ⑧webapps:放置我们的web应用。

  ⑨work工作目录:该目录用于存放jsp被访问后生成对应的server文件和.class文件。

  三、如何配置Tomcat虚拟目录?

  1、在server.xml中的节点下添加如下代码。path表示的`是访问时输入的web项目名,docBase表示的是站点目录的绝对路径。

  2、进入到confCatalinalocalhost文件下,创建一个xml文件,该文件的名字就是站点的名字。

  四、Tomcat体系结构是怎样的?

  浏览器->tomcatserver->service->connector->engine(引擎)->host(主机)->web应用。

  五、Web请求在Tomcat请求中的请求流程是怎么样的?

  ①浏览器输入URL地址;

  ②查询本机hosts文件寻找IP;

  ③查询DNS服务器寻找IP;

  ④向该IP发送Http请求;

  ⑤Tomcat容器解析主机名;

  ⑥Tomcat容器解析Web应用;

  ⑦Tomcat容器解析资源名称;

  ⑧Tomcat容器获取资源;

  ⑨Tomcat响应浏览器。

  六、如何在tomcat集群中实现Session共享

  Apache集群实现Tomcat的Session共享配置其实很简单,在Tomcat自带的文档中有详细的说明(/docs/clusterhowto.html),只不过是英语的,所以联合下面根据说下怎么配置吧:

  1、既然是集群肯定要多准备几个Tomcat来模拟,比如分别为Tomcat01、Tomcat02、Tomcat03。

  如果各Tomcat程序放在不同的机器上,那么就不会有端口的冲突。如果是放在同一台机器上的话,那就简单改几个端口,防止端口占用造成的冲突。打开conf文件夹中的server.xml文件,需要修改的端口有:

  1、

  2、

  3、

  以上port需要修改,至于修改成什么样子,看你自己了,只要不出现端口冲突就可以了,要保证各个Tomcat实例间没有端口冲突。


Java高频面试试题菁选(扩展7)

——前端面试试题菁选

2021前端面试试题

  在日复一日的学*、工作生活中,我们会经常接触并使用试题,通过试题可以检测参试者所掌握的知识和技能。什么样的试题才是好试题呢?下面是小编精心整理的2021前端面试试题,希望能够帮助到大家。

  一、前端MV框架的意义

  早期前端都是比较简单,基本以页面为工作单元,内容以浏览型为主,也偶尔有简单的表单操作,基本不太需要框架。

  随着AJAX的出现,Web2、0的兴起,人们可以在页面上可以做比较复杂的事情了,然后前端框架才真正出现了。

  如果是页面型产品,多数确实不太需要它,因为页面中的JavaScript代码,处理交互的绝对远远超过处理模型的,但是如果是应用软件类产品,这就太需要了。

  长期做某个行业软件的公司,一般都会沉淀下来一些业务组件,主要体现在数据模型、业务规则和业务流程,这些组件基本都存在于后端,在前端很少有相应的组织。

  从协作关系上讲,很多前端开发团队每个成员的职责不是很清晰,有了前端的MV框架,这个状况会大有改观。

  之所以感受不到MV框架的重要性,是因为Model部分代码较少,View的相对多一些。如果主要在操作View和Controller,那当然jQuery这类库比较好用了。

  二、请简述盒模型

  文档中的每个元素被描绘为矩形盒子。盒子有四个边界:外边距边界margin,边框边界bder,内边距边界padding与内容边界content。

  CSS3中有个box-sizing属性可以控制盒子的计算方式,content-box:padding和bder不被包含在定义的width和height之内。对象的实际宽度等于设置的width值和bder、padding之和。

  bder-box:padding和bder被包含在定义的width和height之内。对象的实际宽度就等于设置的width值。

  三、请你谈谈Cookie的弊端

  a、每个特定的域名下最多生成的cookie个数有限制。

  b、IE和Opera会清理*期最少使用的cookie,Firefox会随机清理cookie。

  c、cookie的最大大约为4096字节,为了兼容性,一般不能超过4095字节。

  d、安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。

  四、浏览器本地存储

  在HTML5中提供了sessionStage和localStage。

  sessionStage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁,是会话级别的存储。

  localStage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的`。

  五、webstage和cookie的区别

  a、Cookie的大小是受限的

  b、每次你请求一个新的页面的时候Cookie都会被发送过去,这样无形中浪费了带宽。

  c、cookie还需要指定作用域,不可以跨域调用。

  d、WebStage拥有setItem,getItem等方法,cookie需要前端开发者自己封装setCookie,getCookie。

  e、Cookie的作用是与服务器进行交互,作为HTTP规范的一部分而存在,而WebStage仅仅是为了在本地“存储”数据而生。

  f、IE7、IE6中的UserData通过简单的代码封装可以统一到所有的浏览器都支持webstage。

相关词条