java面试宝典
附加题:
1、&和&&区别
1 | &和&&都可以用作逻辑与运算符,表示逻辑与(and)。当运算符两边的表达式的结果都为true时,整个运算结果才为true。否则,只要有一方为false。则结果为false |
2、jdk和jre区别
1 | jdk是java开发工具包,里面包含jre和java开发工具,比如:java.exe(java运行工具) javac.exe(java编译工具) jar.exe(打包工具) |
3、switch支持的数据类型
1 | byte、short、int、char、String、枚举 以上基本数据类型对应的包装类 |
4、JVM内存划分
1 | 栈内存: |
5、值传递和引用传递的区别
1 | 值传递: |
6、成员变量和局部变量的区别:
1 | 作用域不同: |
7、构造方法注意事项
1 | 注意: |
8、 static修饰变量 方法和代码块
1 | static修饰的变量叫静态变量(类变量) 只和类相关 通过类名.静态变量名访问 |
9、Object的toString()
1 | 默认返回的可以理解为对象的内存地址 |
10、abstract抽象
1 | abstract修饰的类叫抽象类 |
11、多态:
1 | 同一种事物的不同种表现形式 |
12、访问修饰符
1 | private 修饰的属性和方法 只能在本类中访问 |
13、内部类
1 | 成员内部类 |
14、10个异常名字
1 | 运行时异常 |
15、throws和throw的区别
1 | 1、throws用在方法声明的位置,throw用在方法体内 |
JAVA语言如何进行异常处理,关键字:throws, throw,try, catch, finally分别代表什么意义?在try块中可以抛出异常吗?
1 | Try用来指定一块预防所有异常的程序 |
16、Error和Exception的区别
1 | Exception:非严重错误,程序员可以解决,异常分为运行时异常和检查异常,再说下两个异常概念 |
17、异常分为运行时异常和检查异常(编译异常):
1 | 运行时异常: |
18、调用者针对方法声明的异常有2种处理方法
1 | 1、try catch 立即捕获异常处理异常 |
19、单例 懒汉式饿汉式
1 | 确保在程序运行时,一个类的实例有且仅有一个 |
20、Collection和Collections的区别
1 | Collection是集合的顶级接口 下面有List和Set2个子接口 |
21、泛型
1 | 将类名作为集合的参数 写在集合名的右边 |
22、ArrayList特点 扩容机制
1 | 查询快,增删慢 |
23、hashMap底层原理*********
1 | 如果Node数组长度>原始长度*加载因子 数组开始扩容 |
24、hashcode和equals的区别和联系
1 | hashCode()基于对象的内存地址计算一个整形值(哈希值),并将整形值返回 |
25、ArrayList和LinkedList区别
1 | ArrayList底层是数组 查询快 增删慢 |
list和set的区别
1 | 1、list可以允许重复对象,set不允许 |
Collections类常用方法总结
1 | sort(Collection)方法的使用(含义:对集合进行排序)。 |
Arrays数组操作
1 | asList() 返回一个list集合 |
Java集合类框架的基本接口有哪些?
1 | Collection:单列集合的根接口 |
26、ArrayList、hashmap、hashtable扩容机制
1 | ArrayList数组初始长度10 扩容原来数组的1.5倍,等数组存满之后再存数据的时候开始扩容 |
27、HashSet底层 照着HashMap底层回答
28、字符串常量池
1 | jdk1.7之前 字符串常量池在方法区 |
29、Integer有一个常量池 缓存了-128到127之间的值
1 | Integer k = 127; ==== Integer k = Integer.valueOf(127); |
30、枚举
1 | public enum Gender { |
31、线程同步的方式3种
1 | 1、同步代码块 |
32、sleep和wait区别
1 | 1 sleep是Thread类的方法 wait是Object类的方法 |
33、面向对象的基本特征
1 | 封装:将类中所有成员变量私有化,提供公共的get和set |
34、深拷贝和浅拷贝
1 | 浅拷贝(shallowCopy)拷贝出一个新的对象,新对象中的基本数据类型的变量是复制了一份,引用类型和旧对象中的引用类型指向堆中同一个数据 |
35、如何退出多重循环
1 | //利用标签变量 |
char型变量中能不能存贮一个中文汉字?为什么?
1 | char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字, |
说出一些常用的类,包,接口,请各举5个
1 | 常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer java.util.Date,System,Class,List,HashMap |
描述final, finally, finalize的区别?
1 | final用于声明属性,方法和类,修饰的类不能被继承,例如String,修饰的方法不能被重写,修饰的属性为常量,一旦被赋值不能被修改 |
1、java有哪些基本数据类型 什么是自动装箱?
1 | byte Byte 1 -128~127 |
2、算法实现之在不引入其他变量的情况下让int变量a和int变量b互换
1 | int a = 10; |
3、编写一个方法输出1-100之间的所有的素数,所谓素数:只能被1和本身整除的称为素数
1 | for (int i = 2; i <=100 ; i++) { |
4、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1 | int count = 0; |
5、冒泡排序
1 | int[] nums = { 20,2,15,1 }; |
6、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
1 | double height = 100; |
7、静态变量和实例变量的区别?
1 | 1 静态变量只和类相关 通过类名调用 |
8、说说final关键字的用法?
1 | 1 final修饰的类不允许有子类 |
9、选择排序算法
1 | int[] nums = {10,30,5,20,50}; |
10、== 和equals区别
1 | == |
11、创建一个子类对象,请写出:父类静态代码块,父类构造方法,父类代码块,子类代码块,子类构造,子类静态代码块。这六个对象的执行顺序
1 | 1 父类静态代码块 |
12、抽象类和接口的区别
1 | 1、抽象类继承Object,接口不是 |
13、int和Integer有什么区别?
1 | 1 Integer是int的包装类;int是基本数据类型; |
14、Hashtable和HashMap区别?
1 | 1 继承的父类不同 |
15、什么是类?什么是对象?什么是接口?接口和类的继承有什么本质区别
1 | 对象:用来描述客观事物的一个实体,由一组属性和方法构成 |
16、String s = new String(“xyz”);创建了几个字符串对象?
1 | 2个对象 堆内存一个 字符串常量池一个 |
17、Comparable接口的用途
1 | Comparable接口里面有一个compareTo()方法。当一个类需要比较的时候,需自行实现Comparable接口的CompareTo方法。当调用集合排序方法的时候,就会调用对象的compareTo()方法来实现对象的比较。 |
ArrayList存储学生对象 如何排序
1 | 学生类实现Comparable接口 重写compareTo方法,当集合排序时,会调用当前对象的compareTo方法和其他对象进行比较 |
comparable和comparator接口的用途?列出他们的区别?
1 | 首先这两个接口一般都是用来实现集合内的排序,comparable也可以用于两个对象大小的比较。 |
18、Overload 和 Override 的区别,Overload方法是否可以改变返回值的类型?
1 | 方法重载 |
19、二分查找法
1 | public static int getIndex(int[] nums,int value){ |
20、String StringBuffer StringBuilder区别
1 | 1 String是不可变的 对String类的任何改变都会返回一个新的String对象 |
String常用方法:
1 | int length(); 得到字符串的字符个数 |
21、给定两个一维字符串数组a和b,要求除去a中包含b中元素的项,得到数组c。说明:a和b中都可能存在为null的元素。
1 | 例如给定的数组为: |
22、输入一个字符串 通过递归 返回逆序字符串
1 | public static String daoXu(String s){ |
23、输入一个字符串 比如 String s=”aabbbc” 求字符串中每个字符的出现次数
1 | String s="aabbbc"; |
24、递归查找指定目录所有文件 输出文件名
1 | public static void show(File file){ |
25、使用字节流将c:/1.txt 复制到d:/2.txt
1 | FileInputStream fis=new FileInputStream("c:/1.txt"); |
26、字节流有哪些? 缓冲流的加速方式
1 | InputStream |
27、多线程有几种实现方式?你推荐哪一种
1 | 1 继承Thread类 |
28、synchronized和Lock锁两者区别:
1 | 1.首先synchronized是java内置关键字,Lock是个java接口; |
产生多线程死锁的必要条件及解决方法
1 | 死锁产生的根本原因是资源竞争。如果若干个线程正常运行,遇到彼此需要对方占有的资源时,就可能产生线程死锁. |
29、什么是java序列化?如何实现java序列化
1 | 序列化(ObjectOutputStream)可以将内存中Java对象写在硬盘上,反序列化(ObjectInputStream)就是将硬盘的内容读取到内存中重新构建对象;java是通过实现序列化接口 |
30、兔子递归
1 | public static int getNum(int month){ |
31、插入排序
1 | int[] nums={17,3,20,5}; |
32、java中创建对象的方式
1 | 调用构造方法: |
33、创建Class对象的3种方式
1 | 1 Class.forName("类的完整路径") |
34、如何实现线程安全的HashMap
1 | 有2种办法让HashMap线程安全,分别如下: |
ConcurrentHashMap实现原理
1 | 采用Node + CAS + Synchronized来保证并发安全进行实现, |
35、oracle多表连接的分类 内连接和外连接的区别
1 | 内连接 外连接 自连接 交叉连接 |
36、oracle中常用的函数 分别介绍
1 | 聚合函数 |
37、行转列 列转行
1 | --行转列 |
38、oracle和mysql分页
1 | oracle分页: |
39、oracle和mysql区别
1 | 1、mysql主键支持自增长,而oracle不支持,只能通过序列达到自增效果。 |
Mysql具有存储引擎的概念 常用MyISAM与InnoDB区别
名称 | MyISAM | InnoDB |
---|---|---|
事务处理 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大、约2倍 |
40、查询语句执行速度很慢 如何优化
1 | 1)SELECT子句中避免使用*号 |
41、 数据库三大范式
1 | 第一范式:确保每列的原子性 |
42、创建表和修改表
1 | create table teacher( |
43、索引的作用?和它的优缺点是什么?
1 | 索引是一张特殊的查询表,可以加快查询速度,但是索引会减慢数据增删改的效率 |
44、什么样的字段适合建索引?
1 | 1、频繁搜索的列 (where tname) |
Oracle中创建了索引,什么样的原因可能使索引不能正常使用?
1 | 1、列使用is null 和is not null 列的索引会失效 |
45、写一段jdbc代码
1 | Class.forName("oracle.jdbc.driver.OracleDriver"); |
46、PreparedStatement和Statement区别
1 | 1 PreparedStatement是预编译的sql语句 |
47、tomcat服务器文件夹下有哪些子文件夹,每个子文件夹的作用
1 | bin:存放各种平台下用于启动和停止Tomcat的脚本文件 |
48、一个web项目的基本目录结构
1 | hello项目名 |
49、request对象的常用方法
1 | request是jsp内置对象 属于HttpServletRequest类型 封装了浏览器提交到服务器的所有请求数据 |
50、jsp9大内置对象(********常问):
1 | 1、out(JspWriter):用来向客户端发送文本数据 |
51、jsp执行过程
1 | jsp先翻译成java文件 再编译成class文件 最后执行 |
52、get和post区别
1 | 1 get提交数据在地址栏 post在请求体 |
53、转发和重定向区别
1 | 1 转发一次请求 重定向两次请求 |
54、当我在地址栏输入URL回车后 发生了什么
1 | 1、url经过域名解析得到服务器的ip地址 |
TCP HTTP 协议 UDP 协议
1 | TCP是面向连接的通信协议,通过三次握手建立连接,通过tcp的4次挥手将客户端和服务器端的连接断开 |
55、request.getAttribute() 和 request.getParameter() 有何区别
1 | request.getAttribute()是根据属性名从request域对象中获取对应的属性值 |
56、什么是cookie cookie的作用 (一般不问)
1 | cookie是一段文本,由服务器创建,浏览器保存,当浏览器每次请求服务器,都会将cookie归还服务器,由服务器使用。 |
57、 session的原理
1 | session是依赖Cookie实现的服务器端对象 |
58、session和cookie的区别
1 | 1、session数据安全 cookie数据相对不安全 |
59、servlet生命周期 load-on-startup的作用
1 | 1 当浏览器第一次请求servlet时,服务器会自动创建servlet对象,然后继续调用init方法进行对象初始化 |
60、cookie完成5分钟免登录(只需要月考之前背)(一般不问)
1 | //login.jsp |
61、jsp页面传递数据的方式?
1 | 1 form表单 2 域对象 3 超链接 4 cookie 5 <jsp:param> |
62、jsp 四大域和每个域数据的使用范围
1 | page域 数据只能在当前页面使用 |
63、tomcat容器是如何创建servlet类实例?用到了什么原理?(一般不问)
1 | 当容器启动时,会读取在webapps目录下所有的web应用中的web.xml文件,然后对 xml文件进行解析,并读取servlet注册信息。然后,将每个应用中注册的servlet类都进行加载,并通过 反射的方式实例化 |
64、JDBC中的CLOB和BLOB数据类型是什么 (一般不问)
1 | 字符大对象(CLOB)是由具有关联代码页的单字节字符组成的字符串。此数据类型适用于存储面向文本的信息,最大容量4G |
65、jsp静态包含和动态包含的区别
1 | include指令是静态包含 会将多个jsp合并成一个jsp,翻译成一个java文件,编译成一个class文件 |
66、jsp 9大内置对象
1 | out(JspWriter):用来向客户端发送文本数据; |
67、(一般不问)连接池是什么? 它的好处是什么
1 | 连接池是装有连接的容器,使用连接的话,可以从连接池中进行获取,使用完成之后将连接归还给连接池 |
68、装饰者模式
1 | 是你 还有你 一切拜托你 |
工厂模式
1 | 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 |
69、什么是mvc设计模式 每个部分使用的技术
1 | controller 控制器 负责接收用户请求,调用视图显示数据 servlet springmvc |
70、事务是什么? jdbc控制事务的模板?
1 | 事务可以确保一组sql语句要么全部成功,要么全部失败。 |
71、过滤器(Filter)怎么执行的(一般不问)
1 | 首先初始化过滤器 ,然后所有的请求需要经过一个一个的过滤器,执行顺序要根据web.xml里配置的<filter-mapping>的位置前后执行,每个过滤器之间通过chain.doFilter连接, 最后抵达真正请求的资源 |
72、敏感字符过滤器
1 | public class MyRequest extends HttpServletRequestWrapper { |
73、什么是脏读 不可重复读 幻读 解决方法?
1 | 脏读: 一个事务读取到另外一个事务未提交数据 |
74、事务的四大特性是:(概念性问题–面试)
1 | 原子性(Atomicity): |
75、编码过滤器(需要用语言说出来)
1 | public class EncodingFilter implements Filter { |
敏感字符过滤器(需要用语言说出来)
1 | 先定义一个类继承HttpServletRequestWrapper类 |
76、已知有两个集合,要求在jsp中通过jstl遍历用户数据和用户对应部门的数据
1 | Huser属性id username password createtime did |
77、跨域
1 | 如果请求的url跟当前的url 协议 端口号任意一个不同,就属于跨域 |
78、cookies、sessionStorage和localStorage解释及区别
1 | Cookie |
特性 | Cookie | localStorage | sessionStorage |
---|---|---|---|
数据的生命期 | 一般由服务器生成,可设置失效时间。如果在浏览器端生成Cookie,默认是关闭浏览器后失效 | 除非被清除,否则永久保存 | 仅在当前会话下有效,关闭页面或浏览器后被清除 |
存放数据大小 | 4K左右 | 一般为5MB | 一般为5MB |
与服务器端通信 | 每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题 | 仅在客户端(即浏览器)中保存,不参与和服务器的通信 | 仅在客户端(即浏览器)中保存,不参与和服务器的通信 |
易用性 | 需要程序员自己封装,源生的Cookie接口不友好 | 源生接口可以接受,亦可再次封装来对Object和Array有更好的支持 | 源生接口可以接受,亦可再次封装来对Object和Array有更好的支持 |
sessionStorage的使用:
1 | //获取sessionStorage对象 |
79、maven的作用
1 | 1、依赖管理(对项目依赖的jar包进行管理) |
创建maven的web项目
1 | 1、pom.xml删除多余的代码 |
80、hibernate的开发步骤
1 | //1 加载hibernate配置文件 |
81、hibernate中get和load的区别
1 | 1、 |
82、什么是Hibernate延迟加载。
1 | Hibernate从数据库获取某一个对象数据时,由于没有使用该对象的数据(除标识符外),Hibernate只是为该对象创建一个代理对象,这个对象上的所有属性都为默认值;只有在真正需要使用该对象的数据时才创建这个真正的对象,真正从数据库中加载它的数据。 |
83、hibernate一级缓存和二级缓存
1 | 1 一级缓存是session级别的缓存,同一个session发送2条相同的sql语句,第二次查询不会查询数据库, |
mybatis一级缓存和二级缓存的区别
1 | 一级缓存是sqlsession级别 同一个sqlsession中 发送2次相同的sql语句 |
84、hibernate查询方式
1 | 1 oid方式 |
85、hibernate对象的三种状态
1 | 1 瞬时态(临时态) 刚刚new出来的对象 |
86、什么是悲观锁和乐观锁
1 | 悲观锁 |
什么是hibernate和mybatis悲观锁和乐观锁
1 | 悲观锁: |
87、 mybatis #{} ${}区别
1 | 1 #{} 占位符 会生成jdbc的? 避免sql注入 |
分页流程
1 | 没使用框架: |
88、mybatis动态mapper的实现原理?mapper接口中的方法能不能重载?
Mybatis中通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么??Dao接口里的方法,参数不同时,方法能重载吗?
1 | Dao接口的工作原理是JDK动态代理,Mybatis运行时会使用JDK动态代理为Dao接口生成代理对象,代理对象proxy会拦截接口方法,转而执行MappedStatement所代表的sql,然后将sql执行结果返回。 |
89、 mybatis的多对一和一对多如何实现?
1 | 多对一使用association标签 |
90、Hibernate和Mybatis的区别
1 | 1 Hibernate自动生成sql Mybatis需要手写sql |
91、动态代理区别
1 | jdk动态代理(难度高) 基于接口产生代理对象 |
92、spring能帮我们做什么事情 (什么是spring)
1 | spring包含ioc和aop2大功能 |
93、请写出在applicationContext.xml中创建package1.DestBean对象放入IOC容器并且注入sourceBean对象的代码.(手写纸上)
1 | <bean id="sourceBean" class="package1.SourceBean"> |
94、Spring的两种代理JDK和CGLIB的区别
1 | 1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP |
1 | 代理模式: |
95、Spring中的设计模式有哪些
1 | 1. 工厂模式 |
96、Resource和Autowired注解的区别
1 | Resource注解如果有name属性 将name属性的值当做对象id从spring容器中查找对象 |
98、IOC是什么,DI是什么?
1 | ioc 控制反转 负责创建对象 将对象的创建权交给spring容器管理 |
99、 什么是aop?有几种通知?
1 | aop是面向切面编程,可以在不修改源代码的基础上给程序动态添加功能 |
100、创建jdk动态代理对象
1 | Proxy.newProxyInstance(ClassLoader classLoader,Class[] interfaces,InvocationHandler接口); |
101、 spring mvc工作流程 参考课件
1 | 1、用户发送请求至前端控制器DispatcherServlet |
102、Mybatis 如何防止 sql 注入?mybatis 拦截器了解过吗,应用场景是什么?
1 | mybatis使用#{}防止sql注入。 |
103、fastdfs
1 | 文件服务器,可以自己搭建使用 |
104、什么是Ajax和JSON,它们的优缺点?
1 | ajax是异步的JavaScript和xml,用于在Web页面中实现异步数据交互,实现页面局部刷新。 |
105、简述ajax的执行过程?
1 | 1 创建XMLHttpRequest对象 |
106、ajax请求时,如何解释json数据?
1 | 使用eval() 或者JSON.parse() |
107、ajax的最大的特点是什么
1 | ajax可以实现异步通信效果,实现页面局部刷新,带来更好的用户体验,还可以按需获取数据,节约带宽资源 |
108、Spring支持几种类型的事务管理?
1 | 1 编程式事务: |
109、spring事务传播特性有哪些?
1 | required 支持当前事务,如果不存在就新建一个(默认) |
110、什么是JSONP和CORS,它们的区别是什么?
1 | Jsonp和CORS是用来解决跨域访问的解决方案. |
111、角色类Role有属性(roleId, roleName) , 用户类User有属性(name,age,role) 写出一个List对象转换后的json字符串. 集合中至少包含一个用户和一个角色.
1 | [{“name”:”张三”,”age”:18, “role”: {“roleId”: 1, “roleName”:”管理员”}}] |
112、springmvc注解
1 | 1.@Controller 写在类上,标记为控制器类 |
controller和RestController的区别
1 | restController等于controller+responseBody |
113、springmvc怎么做文件上传
1 | 1 input type="file" |
oss实现文件上传流程介绍
1 | 前端只传后端签名 |
114、你对springboot的理解
1 | springboot 是一个快速开发的框架。其采用注解的配置方式,简化了XML配置.并且内置web服务器(tomcat) , 还能够通过自动装配快速整合其他框架,降低了框架整合复杂度,真正开箱即用。 |
115、什么是restful
1 | Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 |
116、redis的数据类型有哪些
1 | 1) 字符串类型 string |
117、redis的持久化机制
1 | 1、RDB:默认方式,不需要进行配置,默认就使用这种机制 |
redis的应用场景
1 | • 缓存(数据查询、短连接、新闻内容、商品内容等等) |
118、 NOSQL和关系型数据库比较
1 | 关系型数据库与NoSQL数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库, |
119、ajax技术体系的组成部分有哪些
1 | -- html 做题时不选 |
120、项目衍进流程:
1 | 1、单体架构 所有的功能集中一个项目 |
自动生成接口文档
1 | 项目继承swagger插件 |
正向代理与反向代理
1 | 正向代理有什么用为什么要这么做: |
gc垃圾回收
1 | 1 什么是GC |
事务处理
1 | 一次操作更新或修改多张表,一般为了保证数据一致,需要增加事务处理 |
1 | package com.sc.springcloud.config; |
Springmvc和spring的区别
1 | Springmvc是控制层,用来接收前台传值,调用service层和持久层,返回数据再通过springmvc层把数据返回到前台。 |
反射
IO流
多线程
git
shiro
shiro+jwt+redis - 无状态token登录
1 | 权限管理框架 |
rabbitMQ(消息队列 kafka)
1 | 应用场景: |
1 | 总结: |
工作模式
1 | RabbitMQ有以下几种工作模式 : |
前后端分离项目中的日期格式化
1 | 数据库查询的时间返回给前端: |
netflix(网飞)
eureka服务注册与发现
1 | eureka做服务注册与服务发现功能的 生活举例 相当于卖房过程中的房产中介 |
ribbon负载均衡服务
1 | 客户端负载均衡 基于eureka的服务发现根据微服务名找到服务提供者的list集合,在通过IRule的负载均衡规则在list集合中选择一台服务提供者,根据ip和端口号进行远程调用 |
OpenFeign服务接口调用
1 | 远程服务接口调用,Feign是一个声明式WebService客户端,使用Feign能让编写web Service客户端更加简单,它的使用方法就是定义已给接口,然后再上面添加注解,OpenFeign是springcloud在Feign的基础上支持了SpringMVC的注解,如@RequesMapping等等,OpenFeign的@FeignClient可以解析SpringMVC的@RequestMappinig注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务 |
Hystrix断路器
1 | 用于服务降级和服务熔断 |
Geteway网关
1 | 是一个网关 |
代码生成器
mybatis-plus
1 | version(乐观锁)、deleted(逻辑删除)、gmt_create、gmt_modified |
nacos(服务注册与发现 配置中心)
dubbo
ssm
Linux常用命令
1 | 文件目录类: |
Linux中Vi和Vim区别是什么?
1 | 1、多级撤销:在VI里,按u只可以撤销上次命令,但是在vim里面可以无限制撤销; |
springcloud
1 | eureka、ribbon、openFeign、Hystrix、geteway |
问题
亮点 展现自己的亮点
1 | 自学一项新技术 并且把技术应用到项目里面 自学能力很好 |
数据库设计
1 | 在开发之前,会做需求分析,将表设计好,在做开发 |
底层和应用开发关系 了解底层对开发什么好处
1 | Hashmap底层和开发应用的关系 |
前后端分离的项目,如何解决跨域问题的?
1 | https://note.youdao.com/ynoteshare/index.html?id=87a205bf932427d5934cb969896a697e&type=note&_time=1644915146565 |
看你项目负责的功能不多,怎么需要这么长时间
1 | 不是说三四个月都在写代码,是从需求分析,项目开发,项目测试整个时间是这么长,其中项目测试其实会花费挺长时间。 |
为什么离职
1 | 之前是因为自己刚踏入it行业,正好有个玩得好的朋友在福州发展,认为去那边发展的话正好能有个照应,在福州发展了1年了,想着离家近一点也更好点,离宜春近的地方,也就只有南昌,所以离职来南昌这边了 |
介绍下你的项目
1 | 人力资源管理系统: |
2到3年的职业规划 必问********
1 | 1、前期在开发项目的同时尽快熟悉业务 |
对公司想了解的问题
1 | 贵公司使用什么技术? |
你的项目几个人开发的,开发了多长时间
1 | 开发团队:前端1人,后端三人以及项目经理 |
你以前工资多少?有交五险一金吗
1 | 面试的效果可以 前期刚去是6k 后期涨到7.5k |
你最快什么时候能够入职?
1 | 可以找理由稍微延后几天,最好不要超过三天。 |
Vue
vue组件的属性名介绍:
1 | 1)数据 |
使用箭头函数和普通函数的区别
1 | 1.所被Vue管理的函数,最好写成普通函数,这样this的指向才是vm 或 组件实例对象。 |
父组件调用子组件
1 | 首先父组件给子节点打标识,设置子节点的ref属性设置标识名 <pagination ref="pagination"></pagination> |
父子组件相互调动
1 | parent /children:访问父 / 子实例 |
子组件调用父组件
1 | 首先父组件给子节点添加v-bind:子组件声明的接收名="方法名" |
如何实现不是父子关系的组件之间的相互调用
1 | 1、全局事件总线 先在vue的原型对象中添加一个$bus属性,这样所有组件对象都能看见$bus这个属性对象 |
vue项目的ajax库:axios
router
1 | 1. 定义路由组件 2注册路由3 使用路由 实现路由跳转 |
谈谈你对 Vue 生命周期的理解?
1 | (1)生命周期是什么? |
直接给一个数组项赋值,Vue 能检测到变化吗?
1 | 由于 JavaScript 的限制,Vue 不能检测到以下数组的变动: |
computed 和 watch 的区别和运用的场景?
1 | omputed: 是计算属性,依赖其它属性值,并且 computed 的值有缓存,只有它依赖的属性值发生改变,下一次获取 computed 的值时才会重新计算 computed 的值; |
v-show 与 v-if 有什么区别?
1 | v-if 是真正的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建;也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。 |
说说你对 SPA 单页面的理解,它的优缺点分别是什么?
1 | SPA( single-page application )仅在 Web 页面初始化时加载相应的 HTML、JavaScript 和 CSS。一旦页面加载完成,SPA 不会因为用户的操作而进行页面的重新加载或跳转;取而代之的是利用路由机制实现 HTML 内容的变换,UI 与用户的交互,避免页面的重新加载。 |
什么是 MVVM?
1 | Model–View–ViewModel (MVVM) 是一个软件架构设计模式,是一种简化用户界面的事件驱动编程方式。 |
Vue 的父组件和子组件生命周期钩子函数执行顺序?
1 | Vue 的父组件和子组件生命周期钩子函数执行顺序可以归类为以下 4 部分: |
谈谈你对 keep-alive 的了解?
1 | eep-alive 是 Vue 内置的一个组件,可以使被包含的组件保留状态,避免重新渲染 ,其有以下特性: |
组件中 data 为什么是一个函数?
1 | 因为组件是用来复用的,且 JS 里对象是引用关系,如果组件中 data 是一个对象,那么这样作用域没有隔离,子组件中的 data 属性值会相互影响,如果组件中 data 选项是一个函数,那么每个实例可以维护一份被返回对象的独立的拷贝,组件实例之间的 data 属性值不会互相影响;而 new Vue 的实例,是不会被复用的,因此不存在引用对象的问题。 |
v-model 的原理?
1 | 我们在 vue 项目中主要使用 v-model 指令在表单 input、textarea、select 等元素上创建双向数据绑定,我们知道 v-model 本质上不过是语法糖,v-model 在内部为不同的输入元素使用不同的属性并抛出不同的事件: |
vue-router路由模式有几种?
1 | hash: 使用 URL hash 值来作路由。支持所有浏览器,包括不支持 HTML5 History Api 的浏览器; |
Vue 框架怎么实现对象和数组的监听?
1 | 如果被问到 Vue 怎么实现数据双向绑定,大家肯定都会回答 通过 Object.defineProperty() 对数据进行劫持,但是 Object.defineProperty() 只能对属性进行数据劫持,不能对整个对象进行劫持,同理无法对数组进行劫持,但是我们在使用 Vue 框架中都知道,Vue 能检测到对象和数组(部分方法的操作)的变化, |
react、vue中的key有什么作用?(key的内部原理)
1 | 1. 虚拟DOM中key的作用: |
Vue修改数组中的某个元素一定要用如下方法:
1 | 1.使用这些API: |
虚拟 DOM 的优缺点?
1 | 优点: |
虚拟 DOM 实现原理?
1 | 虚拟 DOM 的实现原理主要包括以下 3 部分: |
你有对 Vue 项目进行哪些优化?
1 | (1)代码层面的优化 |
补充
Ascii码
A-Z 65-90
a-z 97-122
0-9 48-57
评论