面试相关知识点
1、jQuery与Vue
- jQuery:jQuery是一个快速、简洁JavaScript框架,具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互
- vue:vue是一个兴起的前端js库,是一个精简的MVVM。从技术角度讲,Vue.js 专注于 MVVM 模型的 ViewModel 层。它通过双向数据绑定把 View 层和 Model 层连接了起来,通过对数据的操作就可以完成对页面视图的渲染
两者的区别:
jQuery是使用选择器($)选取DOM对象,对其进行赋值、取值、事件绑定等操作,其实和原生的HTML的区别只在于可以更方便的选取和操作DOM对象,而数据和界面是在一起的。比如需要获取label标签的内容:$("lable").val();
,它还是依赖DOM元素的值。
Vue则是通过Vue对象将数据和View完全分离开来了。对数据进行操作不再需要引用相应的DOM对象,可以说数据和View是分离的,他们通过Vue对象这个vm实现相互的绑定。这就是传说中的MVVM。
为什么说现在jQuery 的使用率越来越低,主流已经不是jQuery?
现在国内比较火的React 、Vue 、Angular框架,都是属于MV*框架的范畴,其设计特点,主要是以数据为核心。可以说操作DOM的事儿,就留给框架去做了。这比传统jQuery开发效率高,代码可维护性高,可扩展性强、性能好。
打个比方:
我让jQuery去买瓶酱油,给了他100块钱,这时我们需要告诉他去小卖铺的路怎么走、怎么跟老板说买啥酱油,买多少钱的酱油,找多少零钱,还得告诉他怎么回来(命令式)。
这时我让Vue去买酱油去了,这时我只需要给他钱,并且告诉他目的地在哪儿,买什么酱油即可,不需要手把手教他(函数式)。
这就是传统开发和现代框架开发的不同。
使用现代框架开发,可以使用Webpack(当然使用jQuery也可以使用Webpack),可以使用人家提供的现成的脚手架,比方说create-react-app,vue-cli。极大提高了开发的效率,并且可以使用最新的ES6、ES7语法进行开发,在编码体验上,就提高了一个档次。
2、MySQL与SQL Server
MySQL:
MySQL数据库是一个开放码源的数据库并广泛应用在于小型企业或者组织中的小型数据管理系统,MySQL数据库因其体积小、速度快、总体拥有成本低受到中小企业的热捧
优点:
- 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性
- 支持多种操作系统
- 支持多线程,充分利用CPU资源
- 优化SQL查询算法,有效提高查询速度
- Mysql是开源的,所以你不需要支付额外的费用
- 支持大型数据库。可以处理成千上万条记录的大型数据库
缺点:
- 不完全支持陌生的关键词
- 缺乏一些存储程序的功能
- 使用缺省的ip端口,但是有时候这些ip也会被一些黑客闯入
- 使用myisam配置,如果你不慎损坏数据库,结果可能会导致所有的数据丢失
SQL Server:
是一个关系数据库管理系统,SQL Server能够满足今天的商业环境要求不同类型的数据库解决方案,凭借易用性、适合分布式组织的可伸缩性,成为了最受用户欢迎的数据库管理系统之一
优点:
- 图形化的用户界面,使系统管理和数据库管理更加直观、简单
- 有很好的伸缩性,可以跨平台使用
- 提供数据仓库功能,这个功能只在Oracle和其他 昂贵的DBMS中才有
- 与WinNT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等,SQL Server也可以很好地与Microsoft BackOffice产品集成
缺点:
- 开放性。只能运行在微软的windows平台,没有丝毫的开放性所言
- 可伸缩性,并行性。并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限
- 性能稳定性。SQLServer当用户连接多时性能会变的很差,并且不够稳定
- 使用风险。SQLServer完全重写的代码,经历了长期的测试,不断延迟,许多功能需时间来证明。并不十分兼容早期产品。使用需要冒一定风险
两者区别:
- MySQL是开源的
- mysql支持enum,和set类型,sql server不支持
- mysql不支持nchar,nvarchar,ntext类型
- mysql的递增语句是AUTO_INCREMENT,而mssql是identity(1,1)
- mssql识别符是[],[type]表示他区别于关键字,但是mysql却是 `,也就是按键1左边的那个符号
更多的区别:点击此网址
https://www.jb51.net/article/54346.htm
3、Hidernate框架
Hidernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得java程序员可以随心所欲的使用对象编程思维来操作数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。
Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration:
- Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session
- SessionFactory接口:SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory
- Transaction:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码
- Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语句或SQL语句两种表达方式
- Configuration类:Configuration类负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象
优点:
- 对象/关系数据库映射(ORM):它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想
- 透明持久化(persistent):带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短
- 事务Transaction(org.hibernate.Transaction):应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短
- 它没有侵入性,即所谓的轻量级框架
- 移植性很好
- 缓存机制,提供一级缓存和二级缓存
- 简洁的HQL编程
缺点:
- Hibernate在批量数据处理时有弱势
- 针对单一对象简单的增删查改,适合于Hibernate,而对于批量的修改,删除,不适合用Hibernate,这也是OR框架的弱点;要使用数据库的特定优化机制的时候,不适合用Hibernate
4、MyBatis框架
MyBatis是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
优点:
- 简单易学:mybatis本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现
- 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多
- 解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性
- 提供映射标签,支持对象与数据库的orm字段关系映射
- 提供对象关系映射标签,支持对象关系组建维护
- 提供xml标签,支持编写动态sql
缺点:
- 编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此
- SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库
- 框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改
- 二级缓存机制不佳
总结:
mybatis的优点同样是mybatis的缺点,正因为mybatis使用简单,数据的可靠性、完整性的瓶颈便更多依赖于程序员对sql的使用水平上了。sql写在xml里,虽然方便了修改、优化和统一浏览,但可读性很低,调试也非常困难,也非常受限。
mybatis没有hibernate那么强大,但是mybatis最大的优点就是简单小巧易于上手,方便浏览修改sql语句。
5、get和post方法的区别
- get参数通过url传递,post放在request body中
- get请求在url中传递的参数是有长度限制的,而post没有
- get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息
- get请求只能进行url编码,而post支持多种编码方式
- get请求会浏览器主动cache,而post支持多种编码方式
- get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留
- GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同
- GET产生一个TCP数据包;POST产生两个TCP数据包
长的说:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
6、ubuntu / redhat(商业公司)/ Fedora / CentOS