1.python3解释器原理是什么,编译器和解释器的区别?
编译型语言的特点是执行速度快,缺点是什么呢?
源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)
在这个工作流程中,编译器调用预处理器进行相关处理,将源代码进行优化转换(包括清除注释、宏定义、包含文件和条件编译),然后,通过将经过预处理的源代码编译成目标代码(二进制机器语言),再通过调用链接器外加库文件(例如操作系统提供的API),从而形成可执行程序,让机器能够执行。
在这个工作流程中,目标代码要和机器的CPU架构相匹配,库文件要和操作系统相匹配。
所以编译语言的缺点是不跨平台
解释型语言的主要工作流程如下:
在程序执行时,解释器读取一句源代码之后,先进行词法分析和语法分析,再将源代码转换为解释器能够执行的中间代码(字节码,即.pyc文件),最后,由解释器将中间代码解释为可执行的机器指令。
每一个操作系统有自己的解释器
所以,编译型语言的可执行程序产生的是直接执行机器指令,而解释型语言的每一句源代码都要经过解释器解释为可以执行的机器指令,相比之下解释型语言的执行效率会低一些。
1.1 python常见的解释器有cython、jython、PyPy
2.java的JVM虚拟机工作原理是什么
Java语言是解释器语言
Java语言解释成中间代码(.class文件)->装载.class文件->由执行引擎将.class转化为可执行的机器指令
JIT(即时编译技术),将常用代码的可执行的机器指令存储下来以便调用
3.如何实现跨域的post请求
1.CORS,W3C制定的跨站资源请求标准
2.前端的方式,invisible iframe
3.server proxy ,外部请求统一用代理转发,要去所有客户端使用此代理
4.消息队列怎么处理的,比如邮件队列怎么处理
5.进程和线程的区别
进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例,线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位
6.多线程如何保证数据库字段不会锁,如果不用线程锁,怎么处理,写一下代码,生产者和消费者模式是什么?
用生产者消费者模式,生产者和消费者各为一个线程,生产者产生数据入队列,消费者从队尾读取数据进行运算,如此便可不必互相等待。但是一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作,一个线程占用了一些资源,另外的线程就不能用,这就涉及到了线程间的通信、同步与互斥
8.python的JVM与Java的JVM的区别
Java虚拟机(JVM)和Python解释器有什么区别?_python解释器和jvm_Tech In Pieces的博客-CSDN博客
9.什么是信号处理,操作系统的pv操作原理是什么
信号量是最早出现的用来解决进程同步与互斥问题的机制。
信号量(Saphore)由一个值和一个指针组成,指针指向等待该信号量的进程,信号量的值表示相应资源的使用情况。
信号量 S>=0 时,S 表示可用资源的数量,执行一次P操作意味着请求分配一个资源,因此 S 的值减 1 ;
信号量 S<0 时,表示已经没有可用资源,S 的绝对值表示当前等待该资源的进程数,请求者必须等待其他进程释放该类资源才能继续运行,而执行一个V操作意味着释放一个资源,因此 S 的值加 1 ;
若 S<0 ,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去,而执行一个P操作意味着请求一个资源,因此 S 的值减 1 ;
注意,信号量的值只能通过PV操作来改变。
10.Decorator(装饰器)工作原理是什么
装饰器,在函数执行前先执行某种操作,比较出名的有classmethod和staticmethod
@classmethod
根据Python文档的说明,classmethod(fn)表明函数fn是类的函数而非类实例的函数,在语法上,它要求fn的函数签名至少要有1个参数,函数被调用时,解释器会将类作为第1个参数传给fn(这段摘抄)
@staticmethod
根据Python文档的说明,staticmethod(fn)表明函数fn是类的静态方法。具体到类定义体内某个函数的定义上,如果该函数想声明称静态成员,则只需在其定义体前加上”
原文:https://blog.csdn.net/alaitian/article/details/82505487