Merkle前端面试题解析

Merkle前端工程师面试内容:
get post
外键如何使用
mysql:查大于80分的学生。
盒模型
Python,java:
Vue DOM,Vature Dom,
Get,Post(MD5).
AXIOS.后面的方法
id>class优先级,除10(class>id)
紫色由哪几种颜色组成
三原***r> 红色RGB
::伪类
选择器几类
优先级

mysql:查大于80分的学生。

Post和Get的区别

这个下面废话多,可以自己花点时间实现一下。

语义上的区别:
GET - 获取指定资源,安全、幂等、可缓存。
POST - 根据请求对指定资源做处理,不安全、不幂等、大多数浏览器中不可缓存。
表现上的区别:
GET - 参数暴露、长度限制。
POST - 参数不暴露、长度无限制。
但长度限制并不是出自HTTP协议的规定,而是因为浏览器对URL有长度限制。🙃

【GET和POST两种基本请求方法的区别--割肉机--博客园】 https://www.cnblogs.com/logsharing/p/8448446.html

【浅谈HTTP中GET、POST用法以及它们的区别--在途中#--博客园】 https://www.cnblogs.com/williamjie/p/9099940.html

【关于HTTP 请求方式: GET和POST的比较的本质】 https://www.cnblogs.com/doubleqsweet/p/7201099.html

Python和Java的区别

Python也是强类型。
强弱类型不是指是否需要定义,而是一旦类型决定了,是否能随便转换。
Java和Python的区别是静态类型和动态类型,静态类型必须先声明再使用,动态则不需要声明。

  • Python语法更简洁

一个完整的Python HelloWorld程序只要一行代码:
print("Hello World")
一个完整的Java HelloWorld需要几行代码:

public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Hello World");
	}
}

Python的优势是入门快、开发效率高,写法灵活,代码易于理解(本来代码就是给人看的嘛,计算机才不关心你写的漂不漂亮呢),再也不需要纠结花括号是另起一行还是紧接在方法后面了。

  • Python是一门动态强类型语言

很多初学者认为Python是弱类型语言,因为定义变量的时候不需要指定类型,而且变量随时可以改变其类型,事实上Python是“强”类型语言,变量名只是一个名字而已,而该变量所绑定的对象在对象创建初期就确定好了类型的,你永远也不可能再改变其类型,因此Python是强类型语言。而Java是一门静态强类型语言。

  • Python中一切皆是对象

在Python中,不论是数值(整型、浮点型),字符串,字典,元组对象,还是他们所对应的类型,以及函数,模块等你所能看到的都是对象,他们的祖先是PyObject。而Java中至少函数,基本数据类型都不算对象。

  • Python的GIL(缺点)

Python中的GIL一直被不少开发者所诟病,GIL是指全局解释锁,Python的多线程在多CPU条件下并不能并行的运行,而只能是每个线程运行的时候首先需要获得解释器的访问权限才可以执行,其他线程只能处于等待的过程,不过GIL并不是Python的致命缺点,否则现在没人会用的,因为有很多方案是协程,或者是用多进程机制来弥补。而Java支持真正的多线程并发操作,能很好的控制资源的的共享。

  • Python的版本

Python社区一直维护者两个差异比较大的版本,Python2.x和Python3.x,目前觉得绝大部分公司的生产环境还是运行在Python2中,而Python3.x不提供像后兼容,但是Python3.x从性能上很做了很多改善,所以目前Python处在一个比较尴尬的位置,不过好消息是绝大部分第三方库开始兼容Python3。希望大家早日迁移到Python3。而JDK从1.0到1.9都是逐步的改进,升级对开发者比较友好。

  • 关于垃圾收集

Python的垃圾收集机制主要使用的引用计数方式

  • 文化

Java是一门商业化味道很重的语言.James Gosling 早就不关心Java了.或者他觉得现在的Java已经不是当年他想要的Java吧.

Python是一门有情怀的语言, Guido van Rossum 一直小心翼翼地维护着Python的发展,人称Guido为仁慈的独裁者

Java 和 Python 有哪些区别? - ***的回答 - 知乎
https://www.zhihu.com/question/20491745/answer/23647562


第一次看到一堆人拿 脚本语言和系统级开发语言进行如此夸张的比较.......
不黑python,如果是不影响大框架的嵌入式脚本,用它可以
如果是直接用python写系统级框架,那就要呵呵了
彭芊的回答 - 知乎


区别
一、python虚拟机没有java强,java虚拟机是java的核心,python的核心是可以很方便地使用c语言函数或c++库。

二、python是全动态性的,可以在运行时自己修改自己的代码,java只能通过变通方法实现。python的变量是动态的,而java的变量是静态的,需要事先声明,所以java ide的代码提示功能优于python ide。

三,python的产生几十年了,几十年前面向过程是主流,所以用python有好多程序用的是面向过程设计方法,很多概念从c语言过来的,class在python中是后加入的,而java是为了实现没有指针的c++(当年com组件用的引用记数,java用的虚拟机),主要采用面向对象的设计方法,很多概念是oop的概念。面向过程,相对简洁直观,但容易设计出面条程序,面向对象,相对抽象优雅,但容易过度抽象。

四,在实际使用的python入门简单,但要学会用python干活,需要再学习python各种库,pyhton的强大在于库,为什么python的库强大,原因是python的库可以用python,c语言,c++等设计,再提供给python使用,所以无论gpu运行,神经网络,智能算法,数据分析,图像处理,科学计算,各式各样的库在等着你用。而java没有python那么多的开源库,很多库是商业公司内部使用,或发布出来只是一个jar包,看不到原始代码。python虚拟机因为编译性没有java的支持的好(或者说故意这么设计的),一般直接使用源码(linux),或源码简单打个包(如pyexe)。

五、python有很多虚拟机实现,如cython,Pyston,pypy,jython, IronPython等等,适合用于业务语言,或插件语言,或面向领域语言,而java因为虚拟机巨大,很少用于插件语言,发布也不方便。

六、java主要用于商业逻辑强的领域,如商城系统,erp,oa,金融,保险等传统数据库事务领域,通过类似ssh框架事务代码,对商业数据库,如oralce,db2,sql server等支持较好,软件工程理念较强,适合软件工程式的多人开发模式。python主要用于web数据分析,科学计算,金融分析,信号分析,图像算法,数学计算,统计分析,算法建模,服务器运维,自动化操作,快速开发理念强,适合快速开发团队或个人敏捷模式。

七、java的商业化公司支持多,如sap,oracle,ibm等,有商业化的容器,中间件,企业框架ejb。python的开源组织支持多,如qt,linux,google,很多开源程序都支持python, 如pyqt,redis,spark等。

八、python用途最多的是脚本,java用途最多的是web,pyhotn是胶水,可以把各类不相关的东西粘在一起用,java是基佬,可以通过软件工程组成几百个人的团队和你pk,商业化气息重。不过我认为还是python强大,因为可以方便调用c或c++的库,但软件工程和商业化运作没有java好,适合快捷开发。

九,关于钱。【有争议】

如果你想写程序卖软件用java,可用上ibm服务器,上oracle数据库,上EMC存储,价格高,商业采购公司喜欢这种高大上。如果你要直接用程序生成金钱用python,python可以实现宽客金融,数据回测,炒股,炒期权,炒黄金,炒比特币,对冲套利,统计套利,有很多开源库,数据分析库,机器学习库可以参考。

十、java和python,都可以运行于linux操作系统,但很多linux可以原生支持python,java需要自行安装。java和python强于c#的原因大于支持linux,支持osx,支持unix,支持arm。java和python比c++受欢迎的原因在于不需要指针。

十一、对于移动互联网,python只能通过运行库运行于安卓或ios,java原生支持安卓开发,但不能用ios中。

十二、对于大数据【有争议】,hadoop用java开的, spark用Scala开发,用python调用spark再分析更方便。

Java 和 Python 有哪些区别? - find goo的回答 - 知乎
https://www.zhihu.com/question/20491745/answer/100741761