Java EE

2019 Java面试题

孤人 提交于 2021-02-14 13:33:48
小编这里可是有Java面试题参考答案的哟,需要各位小伙伴下来逐一学习! 开场白 简单的介绍一下自己的工作经历与职责,在校或者工作中主要的工作内容,主要负责的内容;(你的信息一清二白的写在简历上,能答出来的最好写在上面,模棱两可不是很清楚的最好不要写,否则会被问的很尴尬) 介绍下自己最满意的,有技术亮点的项目或平台,重点介绍下自己负责那部分的技术细节;(主要对自己做过的事情是否有清晰的描述) Java基础 什么是字符串常量池? String为什么是不可变的? String s = new String("xyz");究竟产生了几个对象,从JVM角度谈谈? String拼接字符串效率低,你知道原因吗? 你真的了解String的常见API吗? Java中的subString()真的会引起内存泄露么? 浅析Java中的final关键字? 浅析Java中的static关键字? 你对Java中的volatile关键字了解多少? i++是线程安全的吗?如何解决线程安全性? 从字节码角度深度解析 i++ 和 ++i 线程安全性原理? 请谈谈什么是CAS? 从源码角度看看ArrayList的实现原理? 手写LinkedList的实现,彻底搞清楚什么是链表? Java中方法参数的传递规则? Java中throw和throws的区别是什么? 重载和重写的区别? 手写ArrayList的实现

Java开发面试题整理(2019春招)

坚强是说给别人听的谎言 提交于 2021-02-14 12:53:58
一、Java基础部分 1. HashMap和Hashtable各有什么特点,它们有什么区别?(必背题,超级重要) HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。 HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。 HashMap是非synchronized,而Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable;而如果没有正确的同步的话,多个线程是不能共享HashMap的。Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。 另一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以当有其它线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove(

Spring MVC参数绑定相关注解:@PathVariable、@RequestHeader和@CookieValue

这一生的挚爱 提交于 2021-02-14 12:16:19
Spring MVC参数绑定相关注解: @PathVariable @RequestHeader @CookieValue web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <!-- 定义Spring MVC的前端控制器 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF

BAT大厂招聘 Java 程序员的技术标准,你达到要求了吗?

依然范特西╮ 提交于 2021-02-14 12:13:27
前言 今天整理了一篇Java 程序员面试大厂的技术标准 文末福利 BATJava 程序员的技术标准 阿里巴巴篇 扎实的计算机专业基础,包括算法和数据结构,操作系统,计算机网络,计算机体系结构,数据库等 具有扎实的Java编程基础,理解IO、多线程等基础框架 熟练使用Linux系统的常用命令及shell有一定了解 精通多线程编程,熟悉分布式,缓存,消息队列等机制; 熟悉JVM,包括内存模型、类加载机制以及性能优化 精通spring mvc、orm框架(ibatis或hibernate)、模板引擎(velocity)、关系型数据库设计及SQL 具备良好的面向对象编程经验,深入理解OO、AOP思想,具有很强的分析设计能力,熟悉常用设计模式 有大型分布式、高并发、高负载、高可用性系统设计和稳定性经验 熟悉面向对象设计开发,熟悉各种常用设计模式,并有在具体的应用场景落地经验 熟悉Spring、iBatis,等开源框架及消息,存储等常用中间件。 有通读过开源框架源码 熟悉基于Oracle或者Mysql的设计和开发、Linux操作系统 熟悉SOA,有平台化实施经验者,有大数据量、高并发系统和大型网站构建经验 分布式系统应用架构设计与研发经验,精通Java EE、SOA、OSGI等相关技术 对各种开源的框架如Spring、Hibernate等有深入的了解,对框架本身有过开发或重构者可优先考虑

Spring Boot 2.4.x 简介

邮差的信 提交于 2021-02-14 12:04:55
1、介绍Spring Boot Spring Boot 帮助你创建可以运行的独立的、基于生产级Spring的应用程序。我对Spring平台和第三方库有自己的看法,你也没有必要大惊小怪。大多数 Spring Boot 应用程序只需要很少的Spring配置。 你可以使用Spring Boot来创建Java应用程序,这些应用程序可以通过使用 java -jar 或更传统的war部署来启动。我们还提供了一个运行“spring脚本”的命令行工具。 我们的主要目标是: 为所有的Spring开发提供一个非常快速且易于使用的体验。 提供一系列大型项目通用的非功能特性(例如嵌入式服务器、安全性、度量、运行状况检查和外部化配置)。 完全不需要代码生成,也不需要XML配置。 2、系统需求 Spring Boot 2.4.0 需要java8,并且与java15兼容(包括java15)。还需要Spring Framework 5.3.1或更高版本。 Maven 需要版本3.3+ 3、Servlet容器 Spring Boot支持以下嵌入式servlet容器: 名称 Servlet 版本 Tomcat 9.0 4.0 Jetty 9.4 3.1 Undertow 2.0 4.0 你还可以将Spring Boot应用程序部署到任何servlet3.1+兼容的容器中 4、安装Spring Boot Spring

JavaWeb的学习路线

孤街醉人 提交于 2021-02-14 09:15:42
JavaWeb的学习路线 一.BS结构 B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Netscape Navigator或Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server 同数据库进行数据交互。 二.JavaSE 基础语法(常用数据类型与包装类,访问与非访问修饰符,跳出循环,类与方法的声明) 基本语法规则(标识符,修饰符,关键字) 数据类型与变量 修饰符与运算符 流程控制 数组 类与方法 泛型 常量与枚举 文档注释  面向对象(面向对象的编程描述,封装继承多态的联系,抽象类与接口的作用,内部类的实例化) 面向对象概念(模型) 命名空间与访问级别 面向对象特性(封装,继承,多态,抽象) 面向接口编程(解耦和) 内部类(匿名,方法,成员,静态) Java面向对象语法规则总结 工具类(字符串与可变字符串,日期类型转换与格式化,自定义异常,输入流与输出流的实现,线程控制,并发与锁) 数据类型操作 字符串操作 数学运算 时间日期处理 异常处理 文件处理 流处理 多线程操作 集合框架

java使用Freemarker、Flying sauser生成pdf,中文不显示、设置页眉、换页、红色中文字体不能加粗显示、中文不能换行解决

微笑、不失礼 提交于 2021-02-13 21:40:52
因为做这个很坑,花了几天时间,终于爬出来了,为了实现功能,借鉴了很多代码,找起来很麻烦,现整合一下,方便使用,所以记录下。 首先上两个效果图: 需求图1: demo图2: 做了个demo导出pdf,demo的看不出换行,懒得去加数据了,所以把自己用的图发出来。 本人使用的jar包: freemarker-2.3.22.jar,flying-saucer-core-9.1.16.jar,flying-saucer-pdf-9.1.16.jar,itext-4.2.0.jar, serializer-2.7.1.jar(遇到java.lang.NoClassDefFoundError: org/apache/xml/serializer/TreeWalker,丢失这个jar,可以加上去) jar包地址: maven repository 下载 因为工作上需要,第一次做导出pdf,word,然后入了Freemarker的坑。开始做pdf导出,由于项目中已经有了类似导出,我就用itextpdf来导出生成pdf,后面又需要生成word,在系统上没有发现类似功能,一直复制别人写的代码早就想练练手了,所以查阅了下生成word的几种方式,后面选了Freemarker,这是最简单的方式,也是很快就把word生成了。后面用户说这个pdf样式不合格,被怼了回来, 完成的比较匆忙,可能有很多itext

Spring Boot面试题

孤者浪人 提交于 2021-02-13 21:39:42
Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家。 问题一 Spring Boot、Spring MVC 和 Spring 有什么区别? SpringFrame SpringFramework 最重要的特征是依赖注入。所有 SpringModules 不是依赖注入就是 IOC 控制反转。 当我们恰当的使用 DI 或者是 IOC 的时候,我们可以开发松耦合应用。松耦合应用的单元测试可以很容易的进行。 SpringMVC Spring MVC 提供了一种分离式的方法来开发 Web 应用。通过运用像 DispatcherServelet,MoudlAndView 和 ViewResolver 等一些简单的概念,开发 Web 应用将会变的非常简单。 SpringBoot Spring 和 SpringMVC 的问题在于需要配置大量的参数。 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> <value>/WEB-INF/views/</value> </property> <property name="suffix"> <value>.jsp</value> <

JavaWeb的学习路线

╄→尐↘猪︶ㄣ 提交于 2021-02-13 18:55:59
简单的理解,javaweb就是网站设计。javaweb知识点分为前端技术,MySQL及jdbc,javaweb核心开发内容,阶段内容(项目)。前端技术有Html,Css,javascript,jquery和bootstrap。MySQL及jdba分为MySQL数据库回顾,jdbc开发回顾,连接池和dbutils。javaweb开发核心内容有Xml,Http及topmcat,serverlet,Request与response,cookie与session,Jsp技术,jdbc高级,Ajax开发,javaweb高级开发技术,Linux,Redis。 一、前端技术 1.Html 超文本标记语言,标准通用标记语言下的一个应用。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。(网站页面的布局,可以点开任意一个页面右键查看源代码,即可看到html的字样)超文本标记语言的结构包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。 2.CSS 层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。简单说就是网页的样式制作。 3.Java Java一种直译式脚本语言

我是如何使用git把本地代码上传到github上的,值得借鉴

情到浓时终转凉″ 提交于 2021-02-13 09:54:36
背景:最近开发了一套招标系统, 我是如何用JSP在网络上架构一个网上招标系统,以推进网站无纸化,过程电子化,管理智能化的发展。 使用git进行上传。 首先自己得有git工具及github账号,自己没有的提前准备一下。我本地文件夹已经放了数据库及源代码,我直接在那个文件夹进行操作。 进去该文件夹。鼠标右键,打开git -> Git Bash Here -> git init。执行命令后目录下创建一个.git文件夹。 git init 查看状态 git status git add + 需要添加的文件名 或者git add --all 将所有的文件全部添加,我这里是 git add --all 这个命令会把当前路径下的所有文件,添加到待上传的文件列表中。 将add的文件commit到仓库,添加之后,最后提交就行,git commit -m “修改说明”。-m后面添加的是对本次操作的说明,加入你修改了代码或者重新上传了什么东西都做个简单说明,别人看了就知道是怎么回事了。然后再次git status查看状态,如下,已经添加成功: git commit -m "提交源代码" 去github上创建自己的Repository,点击Create repository,一步一步执行下去即可,创建成功后拿到创建的仓库的https地址 将本地的仓库关联到github上,我这里使用的是https