1.介绍:导航 Java 面试领域
你的名字 来自与哪里 本科毕业于哪所大学 有过几年工作经验
1.1.你的自我评价
-
学习能力强,思路清晰,善于从整体上分析、把握复杂事物,对细节难题具备快速钻研解决能力;
-
能快速地融入、凝聚团队;
-
良好的表达与沟通能力,积极主动,对工作尽心尽责;
-
能够适应加班出差,具有良好的抗压能力;
2.理解核心概念:面试中的 Java 基础知识
-
java基础扎实,框架使用熟练,熟悉Tomcat源码,springMVC源码和结构 。 ,良好的编程习惯
-
熟悉主流Spring、SpringBoot、SpringMVC、MyBatis等框架,快速上手新型框架
-
熟练使用Oracle、MySQL、SQL server关系型数据库
-
熟悉利用redis来实现的缓存、分布式session、前后端分离、等技术
-
熟练使用Eclipse,idea,webstorm、Hbuilder X、datacrip等开发工具
-
熟练的优化能力(代码优化、业务优化、sql优化等)
-
熟练使用tomcat服务器、SVN版本管理工具、Maven项目构建工具、
-
熟练使用js、jQuery等前台集成UI框架技术
-
具有一定的开发小组管理经验、能够完成公共组件的封装
-
熟悉linux常用命令、redis服务部署、MySQL数据库的安装使用
3.代码背后:探索项目中的决策过程
我在工作中参与过xx项目的开发,我负责了哪个模块,使用了什么技术,你负责的那个模块中代码逻辑是什么,项目流程是什么。在本次项目中的技术难点是什么?
4.行为面试掌握:应对情境和基于经验的问题
4.1 技术问题:
1.mybatis的#{}和${}有什么区别?
使用#{}:
(1)、传入参数,sql在解析的时候会加上" ",当成字符串来解析,如 id = “id”;
(2)、#{}能够很大程度上防止sql注入;
使用${}:
(1)、传入数据直接显示在生成的sql中,sql在解析的时候值为id = id。
(2)、${}方式无法防止sql注入
最后:能用#{}时尽量用#{},但有些场合需要使用$。
注意MyBatis排序时使用order by 动态参数时需要注意,用$而不是#(#会自动拼接符号)
2..arraylist和linkedlist区别 ?
(1)ArrayList是实现了基于动态数组的数据结构,LinkedList是基于链表结构;
(2)对于随机访问的get和set方法,ArrayList要优于LinkedList,因为LinkedList要移动指针;
(3)对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据;
应用场景:
ArrayList使用在查询比较多,但是插入和删除比较少的情况,而LinkedList用在查询比较少而插入删除比较多的情况
3.redis为什么可以做缓存?
缓存命中:Redis 中有相应数据,就直接读取 Redis,性能非常快。 缓存缺失:Redis 中没有保存相应数据,就从后端数据库中读取数据,性能就会变慢。而且,一旦发生缓存缺失,为了让后续请求能从缓存中读取到数据,我们需要把缺失的数据写入 Redis,这个过程叫作缓存更新。
4.java中==和eqauls()的区别 ?
== :
基本类型:比较值是否相等
引用类型:比较的就是内存地址是否相同
equals :
引用类型:默认情况下,比较的是地址值。可以进行重写,使其比较对象的值是否相等。
5.maven仓库有几大类?
maven的仓库只有两大类:1.本地仓库 2.远程仓库,在远程仓库中又分成了3种:2.1 中央仓库 2.2 私服 2.3 其它公共
6.前后端数组传参如何处理?
前端:数据使用JSON.stringify(str)处理
后端:数据转换:List objectList = JSONObject.parseArray(str, Object.class)
7.jsp、html 两者的区别 ?
HTML(Hypertext Markup Language)文本标记语言,它是静态页面,和JavaScript一样是解释性语言。
JSP(Java Server Page)Java服务端的页面,它是动态页面,它是需要经过JDK编译后把内容发给客户端去显示。
8.四种组件类型注解 ?
@Component:组件注解,通用注解,该注解描述的类将被IoC容器管理并实例化
@Controller:语义注解,说明当前类是MVC应用中的控制类
@Service:语义注解,说明当前类是Service业务服务类
@Repository:语义注解,说明当前类作用于业务持久层,通常描述对应Dao类
4.2 团队以及个人问题
问题:你在团队中如何协作?如何处理与同事的分歧?当你的任务延迟时,你会如何应对?
建议回答:在回答团队合作能力的问题时,应突出自己的沟通能力和团队合作精神,说明如何处理团队中的冲突和问题,并针对任务延迟等实际情况提出解决方案。
问题:当你在编程过程中遇到问题时,你通常如何解决?可以给我们一个实际的例子吗?
建议回答:应突出自己的问题解决能力和思维方式,结合实际项目经验,阐述遇到问题时的解决方法和技术手段。可以给出一个实际例子,展示问题解决的过程和结果。