程序员该知道的点【知识散点】

文章目录

回顾一

1.写出你对java特性的认识

继承: 从已有的类中获取要继承数据的信息后创建新类的过程。(子类通过extends关键字继承父类可以被继承的属性和方法)

封装: 将类的细节隐藏起来,不让外界直接访问,而是提供get、set方法调用。

多态: 同一个引用类型,根据使用的实例不同而执行不同的操作。

抽象: 父类只提供方法,不提供实现,需要子类提供具体实现。

2.写出mvc模式的理解

m- model 模型
v- view 视图
c- controller 逻辑控制
一种设计理念,将模型、视图、数据处理分开

3.vue中的v-model和v-bind区别在哪里

v-model: 数据双向绑定,多用于表单
v-bind: 数据单向绑定,多用于样式

1:如果 id={{xxx}}这种写法,则HTML实际上是这样的:id="{{ xxx}}"

2: v-bind用于绑定属性和数据 ,其缩写为“ : ” 也就是v-bind:id === :id ;

3:如v-bind:class 可简写为 :class;当加上v-bind:之后,它的值class不是字符串,而是vue实例对应的data.class的这个变量。也就是说data.class是什么值,它就会给class属性传递什么值,当data.class发生变化的时候,class属性也发生变化,这非常适合用在通过css来实现动画效果的场合。他只是单向变动

4:v-model也可以绑定数据,但是他是用在表单控件上的,用于实现双向数据绑定,所以如果你用在除了表单控件以外的标签是没有任何效果的。

4.spring 的ioc注入方式有几种
  1. setter方法注入
  2. 构造方法注入
  3. xml配置(静态工厂)
  4. 注解:@Aurowired、@Resource、@Value
5.写出window.onload和和$(document).ready()的区别

执行时间: window.onload等待所有的dom和资源全部加载完毕后才执行,ready所有的dom节点加载完毕后就行。

编写个数: 如果有多个window.onload方法,只会其中执行一个;$(document).ready()可以同时编写多个,并且都可以得到执行。

简化写法: window.onload 没有简写,$(document).ready()有;
如 : $ (document).ready(function(){ })可以简写成$ (function(){方法体 });又因为JQuery的默认参数是document,则还可以写成$().ready(function{ })

回顾二

1.HashMap和HashTable的区别是什么;

相同

_两者都继承Map,key -value存储结构;

区别

_HashMap:线程不安全,效率高;

_hashTable线程安全,效率低

2.int和Integer是什么联系;

_int是Integer的基本数据类型

_Integer是int的包装类

3.线程同步有几种方式;

_synchronized:同步方法,同步代码块

4.请写出springmvc的工作流程;

接受请求–>前端控制器–>调用处理器映射器找到对应的Controller和方法(处理器)–>

调用处理器适配器–>返回ModelAndView–>前端控制器–>视图解析器–>展示

  1. 客户端发送请求至DispatcherServlet前端控制器
  2. DispatcherServlet收到请求后调用HandlerMapping处理器映射器
  3. HandlerMapping根据请求的url路径找到具体的处理器并返回给DispatcherServlet
  4. DispatcherServlet根据HandleAdapter处理器适配器调用处理器得到ModelAndView对象
  5. HandleAdapter将ModelAndView返回给DispatcherServlet
  6. DispatcherServlet将ModelAndView传给ViewReslover视图解析器
  7. ViewReslover解析后返回view对象
  8. DispatcherServlet对view进行渲染响应至客户端
5.@RestController和@Controller有区别是什么

_@RestController:相当于@ResponseBody+@Controller,异步请求,返回具体的json对象。

_@Controller:只表明一个类、一个控制器,返回的是视图。

回顾三

1.什么是三次握手和四次挥手?

_一次握手:客户发送带有SYN标志的数据包到服务端(服务端=》确认client端发送正常,server端接受正常)

_二次握手:服务端发送带SYN/ACK标志的数据包到客户端(客户端=》确认client端发送、接受正常,server端接受、发送正常)

_三次握手:客户端发送带ACK标志的数据包到服务端(服务端=》确认client端发送、接受正常,server端发送、接受正常)

_一次挥手:客户端发送一个FIN,用来关闭客户端到服务端的数据传输。

_二次挥手:服务端收到这个FIN后回发一个ACK报文,并将确认序号设置为收到序号+1。

_三次挥手:服务端关闭与客户端的连接,发送一个FIN给客户端。

_四次挥手:客户端收到这个FIN后回发一个ACK报文,并将确认序号设置为收到序号+1.。

注:SYN:发送一个新连接,ACK确认序号有效,释放一个连接。

2.TCP和UDP区别?

_TCP在传输数据之前要先建立连接,数据传输安全,数据传输后要释放连接。

_UDP在传输数据之前不需要建立连接,数据传输不安全。

3.Conection和Conections区别?

_Conection是集合类的上级接口,继承于它的接口主要有List、Set.

_Conections是集合工具类,它提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

4.什么是跨平台?

_跨平台: 可以理解为在不同操作系统windows、linux、unix,不同版本型号32位、64位都能正常运行。

5.说下servlet生命周期?

_servlet生命周期:实例化new、初始化init、业务处理service,销毁destory.

6.说下类加载过程?

_加载——链接(验证、准备、解析)——初始化——使用——卸载

7.Http中,get和post方法区别?
请求方式getpost
url地址url地址参数暴露、有长度限制,可传播url地址参数隐藏,无长度限制,不可传播
安全性
数据传输通过&拼接url传递参数通过body体传递参数
后退页面反应后退页面时,不产生影响后退页面时,会重新提交请求
缓存性可缓存不可缓存
8.拷贝文件是字符流还是字节流?

_拷贝文件一般使用字节流,因为一般不清楚文件中是否包含音乐媒体等类型文件,所以统一使用字节流。

9.字节流、字符流分别是什么?

_字节流:字节流是由字节组成的,主要用来处理字节(二进制)数据。

_字符流:字符流是由字符组成的,主要用来处理字符(文字)数据。

10.线程创建的常用方式?

_继承Thread类

_实现Rnnable接口

回顾四

1.Servlet API中forward()方法和redirect()方法的区别?
方法转发(forward)重定向(redirect)
地址显示客户端请求资源,服务端直接访问目标地址的URL并将读取的内容响应到浏览器展示(一次请求)客户端请求资源,服务端根据业务逻辑返回一个状态码给客户端,客户端根据原先的目标地址的URL重新发送请求(两次请求)
数据共享转发页面和转发到的页面数据可以在request域中共享不可共享数据
运用场景一般应用于用户登录时,根据角色直接转发到相应的模块一般应用于用户退出登录时,重定向到首页或则登录页面
执行范围只能在当前web应用内部资源之间转发不仅可以重定向当前web应用内部的内部资源,还可以重定向应用同一个站点的其他资源,甚至可以通过绝对路径URL重定向其他站点资源
执行效率
2.JDBC访问数据库基本步骤是什么?
  1. 加载驱动
  2. 获取连接
  3. 编写sql语句
  4. 获取会话
  5. 处理结果集
  6. 关闭资源
3.什么是事务,JDBC中处理事务的步骤?

_事务是作为单个逻辑工作单元执行的一系列操作。

注:一个逻辑工作单元必须包含四个属性(ACID:原子性、一致性、隔离性、持久性)

_步骤

  1. 设置提交方式为手动提交conn.setAutoCommit(false)
  2. 提交事务conn.commit()
  3. 出现异常、回滚事务conn.rollback()
4.说说AJAX的优缺点?

_优点

  1. 页面无刷新、用户体验好
  2. 异步方式与服务器建立通信,具有更快的响应能力
  3. 可将服务端负担的工作转接到客户端,利用客户端闲置的能力进行处理;减轻服务端和带宽的负担,节约空间和宽带租用成本
  4. 基于标准化并被广泛支持的技术,不需要下载插件和小程序

_缺点

  1. 不支持浏览器back按钮
  2. ajax暴露了与服务端的交互细节
  3. 对搜索引擎的支持比较弱
  4. 破坏了序列的异常机制
  5. 不容易调试
5.AJAX实现流程?
  1. 创建XMLHttpRequest对象
  2. 创建新的http请求
  3. 设置响应http请求变化的函数
  4. 发送http请求
  5. 获取异步调用返回的对象
  6. 使用js、dom实现局部刷新
6.什么是xml?

_xml是一种可扩展性标记语言,支持自定义标签(使用前必须预定义)使用 DTD 和 XML Schema 标准化 XML 结构。

7.关系数据库中连接池的机制是什么?

前提:为数据库连接建立一个缓冲池。

  1. 从连接池获取或创建可用连接
  2. 使用完毕之后,把连接返回给连接池
  3. 在系统关闭前,断开所有连接并释放连接占用的系统资源
  4. 能够处理无效连接,限制连接池中的连接总数不低于或者不超过某个限定值。
8.HTTP的长连接和短连接

HTTP 协议有 HTTP/1.0 版本和 HTTP/1.1 版本。HTTP1.1 默认保持长连接(HTTP persistent connection,也翻译为持久连接),数据传输完成了保持 TCP 连接不断开(不发 RST 包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。

9. Mybatis 的编程步骤是什么样的?
  1. 创建 SqlSessionFactory
  2. 通过 SqlSessionFactory 创建 SqlSession
  3. 通过sqlsession 执行数据库操作
  4. 调用session.commit()提交事务
  5. 调用session.close()关闭会话
10.使用 MyBatis 的 mapper 接口调用时有哪些要求?
  1. Mapper 接口方法名和mapper.xml 中定义的每个sql 的 id 相同
  2. Mapper 接口方法的输入参数类型和 mapper.xml 中定义的每个 sql 的 parameterType 的类型相同
  3. Mapper 接口方法的输出参数类型和 mapper.xml 中定义的每个 sql 的resultType 的类型相同
  4. Mapper.xml 文件中的 namespace 即是 mapper 接口的类路径。

回顾五

1.谈谈你对shiro的理解?

_Shiro是Apahe公司出品的Java安全框架,它可以帮助我们完成认证、加密、授权、会话管理、与web集成、缓存等。

三个核心组件:Subject、SecurityManager 和 Realm

Subject:代表当前用户的安全操作。

SecurityManager:用来管理所有用户的安全操作。

Realm:充当着shiro与应用安全数据间的"桥梁"或则"连接器";也就是说,当用户执行认证(登录)和授权(访问控制)验证时,shiro会从应用配置的Realm中查找用户及其其权限信息。

2.SQL的select语句完整的执行顺序?

执行顺序:

  1. from子句(来自哪个数据源的数据)

  2. where子句(按照条件对数据进行筛选)

  3. group by子句(将数据进行分组)

  4. 使用聚集函数进行计算

  5. 使用having子句进行分组

  6. 计算所有的表达式

  7. select的字段

  8. 使用order by对结果集进行排序

3.Mysql中有几种隔离级别分别是什么?

_4种。

读未提交(read uncommitted):读未提交也叫脏读,就是指事务可以读取其他事务未提交的事务.

读已提交(read committed):读已提交就是指事务可以读取其他事务已提交的事务(相对于脏读也就是其他事务未提交的事务不可读取)。SQL Server数据库系统默认隔离级别就是读已提交。

可重复读(repeatable read):可重复读就是保证同一个事务执行多次相同查询的结果是一致的。Mysql数据库系统默认隔离级别就是可重复读。

可串行化(serializable):可串行化就是保证事务读取的范围内没有新的数据插入;比如事务第一次查询某个范围的数据,第二次查询也是同一范围的数据,在此之间没有插入新的数据到该范围内。

隔离级别脏读不可重复读幻读
read uncommitted(读未提交
read committed(读已提交
repeatable read(可重复读)
serializable(可串行化)
4.Mysql存储引擎有哪些?
  1. InnoDB存储引擎
  2. MyISAM存储引擎
  3. Memory(Heap)存储引擎
  4. NDB存储引擎
  5. Archive存储引擎
  6. Federated存储引擎
  7. Maria存储引擎
5.HTTP常见的状态码有哪些?
  • 301MovedPermanently(永久移除),请求的URL已移走。Response中应该包含一个LocationURL, 说明资源现在所处的位置
  • 302 found 重定向
  • 400 Bad Request客户端请求有语法错误,不能被服务器所理解
  • 401 Unauthorized 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
  • 403 Forbidden服务器收到请求,但是拒绝提供服务
  • 404 Not Found请求资源不存在,eg:输入了错误的URL
6.说说你对Java中反射的理解

Java中的反射首先是能够获取到Java中要反射类的字节码,获取字节码有三种方法,

  • Class.forName(className)
  • 类名.class
  • this.getClass()。然后将字节码中的方法,变量,构造函数等映射成相应的Method、Filed、Constructor等类,这些类提供了丰富的方法可以被我们所使用。
7.动静态代理的区别,什么场景使用?

静态代理

  • 静态代理通常只代理一个类,动态代理是代理一个接口下的多个实现类。
  • 静态代理事先知道要代理的是什么,而动态代理不知道要代理什么东西,只有在运行时才知道。

动态代理

  • 动态代理是实现JDK里的InvocationHandler接口的invoke方法,但注意的是代理的是接口,也就是你的业务类必须要实现接口,通过Proxy里的newProxyInstance得到代理对象。
  • 还有一种动态代理CGLIB,代理的是类,不需要业务类继承接口,通过派生的子类来实现代理。通过在运行时,动态修改字节码达到修改类的目的。

注:AOP编程就是基于动态代理实现的,比如著名的Spring框架、Hibernate框架等等都是动态代理的使用例子。

8.类什么时候被初始化?
  1. 创建类的实例,也就是new一个对象
  2. 访问某个类或接口的静态变量,或者对该静态变量赋值
  3. 调用类的静态方法
  4. 反射(Class.forName(“com.lyj.load”))
  5. 初始化一个类的子类(会首先初始化子类的父类)
  6. JVM启动时标明的启动类,即文件名和类名相同的那个类
9.Java是一种类型安全的语言,它有哪四类称为安全沙箱机制的安全机制来保证语言的安全性?

这四类安全沙箱分别是

  1. 类加载体系
  2. .class文件检验器
  3. 内置于Java虚拟机(及语言)的安全特性
  4. 全管理器及Java API
10.Java中为什么会有GC机制呢?
  1. 安全性考虑;–for security.
  2. 减少内存泄露;–erase memory leak in some degree.
  3. 减少程序员工作量。–Programmers don’t worry about memory releasing.
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值