python面试题
1、python下多线程的限制以及多进程中传递参数的方式
python多线程有个全局解释器锁(global interpreter
lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的,这叫“并发”,不是“并行”。
多进程间共享数据,可以使用 multiprocessing.Value和multiprocessing.Array。
2、什么是lambda函数?它有什么好处?
lambda 函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数。lambda
函数不能包含命令,它们所包含的表达式不能超过一个。不要试图向lambda
函数中塞入太多的东西;如果你需要更复杂的东西,应该定义一个普通函数,然后想让它多长就多长。
3、Python是如何进行类型转换的?
①函数描述
② int(x [,base ]) 将x转换为一个整数
③long(x [,base ]) 将x转换为一个长整数
④float(x ) 将x转换到一个浮点数
⑤complex(real [,imag ]) 创建一个复数
⑥str(x ) 将对象 x 转换为字符串
⑦repr(x ) 将对象 x 转换为表达式字符串
⑧eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象
⑨tuple(s ) 将序列 s 转换为一个元组
⑩list(s ) 将序列 s 转换为一个列表
?chr(x ) 将一个整数转换为一个字符
?unichr(x ) 将一个整数转换为Unicode字符
?ord(x ) 将一个字符转换为它的整数值
?hex(x ) 将一个整数转换为一个十六进制字符串
?oct(x ) 将一个整数转换为一个八进制字符串
4、python多线程与多进程的区别
在UNIX平台上,当某个进程终结之后,该进程需要被其父进程调用wait,否则进程成为僵尸进程(Zombie)。所以,有必要对每个Process对象调用join()方法
(实际上等同于wait)。对于多线程来说,由于只有一个进程,所以不存在此必要性。
多进程应该避免共享资源。在多线程中,我们可以比较容易地共享资源,比如使用全局变量或者传递参数。在多进程情况下,由于每个进程有自己独立的内存空间,以上方法并不合适。此时我们可以通过共享内存和Manager的方法来共享资源。但这样做提高了程序的复杂度,并因为同步的需要而降低了程序的效率。
5、Python里面如何拷贝一个对象?
标准库中的copy模块提供了两个方法来实现拷贝。一个方法是copy,它返回和参数包含内容一样的对象。使用deepcopy方法,对象中的属性也被复制。
6、介绍一下except的用法和作用?
Python的except用来捕获所有异常,因为Python里面的每次错误都会抛出一个异常,所以每个程序的错误都被当作一个运行时错误。
7、Python中pass语句的作用是什么?
pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作。
8、Python解释器种类以及特点?
Python是一门解释器语言,代码想运行,必须通过解释器执行,Python存在多种解释器,分别基于不同语言开发,每个解释器有不同的特点,但都能正常运行Python代码,以下是常用的五种Python解释器:
CPython:当从Python官方网站下载并安装好Python2.7后,就直接获得了一个官方版本的解释器:Cpython,这个解释器是用C语言开发的,所以叫CPython,在命名行下运行python,就是启动CPython解释器,CPython是使用最广的Python解释器。
IPython:IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的,好比很多国产浏览器虽然外观不同,但内核其实是调用了IE。
PyPy:PyPy是另一个Python解释器,它的目标是执行速度,PyPy采用JIT技术,对Python代进行动态编译,所以可以显著提高Python代码的执行速度。
Jython:Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
IronPython:IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
在Python的解释器中,使用广泛的是CPython,对于Python的编译,除了可以采用以上解释器进行编译外,技术高超的开发者还可以按照自己的需求自行编写Python解释器来执行Python代码,十分的方便!
9、列举布尔值为False的常见值?
0, [] , () , {} , '' , False , None
10、字符串、列表、元组、字典每个常用的5个方法?
字符串:repleace,strip,split,reverse,upper,lower,join.....
列表:append,pop,,remove,sort,count,index.....
元组:index,count,__len__(),__dir__()
字典:get,keys,values,pop,popitems,clear,,items.....
Tomcat面试题汇总及答案
一、Tomcat 的缺省端口是多少,怎么修改?
1)找到 Tomcat 目录下的 conf 文件夹
2)进入 conf 文件夹里面找到 server.xml 文件
3)打开 server.xml 文件
4)在 server.xml 文件里面找到下列信息
connector p=
redirectPort=8443 uriEncoding=utf-8/
port=8080改成你想要的端口
二、tomcat 有哪几种 Connector 运行模式(优化)?
bio:传统的 Java I/O 操作,同步且阻塞 IO。maxThreads=”150”//Tomcat
使用线程来处理接收的每个请求。这个值表示
Tomcat 可创建的最大的线程数。默认值 200。可以根据机器的时期性能和内存大小调整,一般可以在 400-500。最大可以在 800
左右。
minSpareThreads=”25”—Tomcat 初始化时创建的线程数。默认值 4。如果当前没有空闲线程,且没有超过
maxThreads,一次性创建的空闲线程数量。
Tomcat 初始化时创建的线程数量也由此值设置。maxSpareThreads=”75”–一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的
socket 线程。默认值 50。一旦创建的线程超过此数值,Tomcat 会关闭不再需要的线程。线程数可以大致上用
“同时在线人数每秒用户操作次数系统平均操作时间” 来计算。
acceptCount=”100”—-指定当所有可以使用的处理请求的线程数都被使用 时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。默认值
10。如果当前可用线程数为
0,则将请求放入处理队列中。这个值限定了请求队列的大小,超过这个数值的请求将不予处理。connectionTimeout=”20000”–网络连接超时,默认值
20000,单位:毫秒。设置为 0 表示永不超时,这样设置有隐患的。通常可设置为 30000 毫秒。
nio:JDK1.4 开始支持,同步阻塞或同步非阻塞 IO。指定使用 NIO 模型来接受 HTTP 请求
protocol=”org.apache.coyote.http11.Http11NioProtocol” 指定使用 NIO 模型来接受 HTTP
请求。默认是 BlockingIO,配置为 protocol=”HTTP/1.1” acceptorThreadCount=”2” 使用 NIO
模型时接收线程的数目
aio(nio.2):JDK7 开始支持,异步非阻塞 IO。
apr:Tomcat 将以 JNI 的形式调用 Apache HTTP 服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地 提高
Tomcat 对静态文件的处理性能。
三、Tomcat 有几种部署方式?
1)直接把 Web 项目放在 webapps 下,Tomcat 会自动将其部署
2)在 server.xml 文件上配置节点,设置相关的属性即可
3)通过 Catalina 来进行配置:进入到 conf\Catalina\localhost 文件下,创建一个xml
文件,该文件的名字就是站点的名字。
编写 XML 的方式来进行设置。
四、tomcat 容器是如何创建 servlet 类实例?用到了什么原理?
当容器启动时,会读取在 webapps 目录下所有的 web 应用中的 web.xml 文件,然后对 xml 文件进行解析,并读取 servlet
注册信息。然后,将每个应用中注册的 servlet 类都进行加载, 并通过反射的方式实例化。
(有时候也是在第一次请求时实例化)在 servlet 注册时加上如果为正数,则在一开始就实例化,如果不写或为负数,则第一次请求实例化。
spring cloud面试题
问题一:说一下spring cloud?
Spring Cloud是一系列框架的有序集合。它利用Spring
Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring
Boot的开发风格做到一键启动和部署。
Spring Cloud是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring
Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
问题二:使用Spring Cloud有什么优势?
使用Spring Boot开发分布式微服务时,我们面临以下问题:
①与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。
②服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。
③冗余-分布式系统中的冗余问题。
④负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。
⑤性能-问题 由于各种运营开销导致的性能问题。
⑥部署复杂性-Devops技能的要求。
问题三:Spring Cloud的核心组件及其工作原理
Eureka:各个服务启动时,Eureka Client都会将服务注册到Eureka Server,并且Eureka
Client还可以反过来从Eureka Server拉取注册表,从而知道其他服务在哪里;
Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台;
Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求;
Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题;
Zuul:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务。
问题四:服务注册和发现是什么意思?Spring Cloud如何实现?
当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。
Eureka服务注册和发现可以在这种情况下提供帮助。由于所有服务都在Eureka服务器上注册并通过调用Eureka服务器完成查找,因此无需处理服务地点的任何更改和处理。
问题五:负载平衡的意义什么?
在计算中,负载平衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载。
使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程。
问题六:什么是Netflix Feign?它的优点是什么?
Feign是受到Retrofit,JAXRS-2.0和WebSocket启发的java客户端联编程序。Feign的第一个目标是将约束分母的复杂性统一到http
apis,而不考虑其稳定性。在employee-consumer的例子中,我们使用了employee-producer使用REST模板公开的REST服务。
但是我们必须编写大量代码才能执行以下步骤
①使用功能区进行负载平衡。
②获取服务实例,然后获取基本URL。
③利用REST模板来使用服务。
2023年计算机等级考试时间
全国计算机等级考试的时间为:
每年12月12日至21日、每年6月12日至21日,可以报名参加考试;每年3月25日至27日、每年9月23日至25日,可以参加考试;每次考试报名的具体时间由各省级承办机构规定;
考生须登陆全国计算机等级考试网上报名系统网站,通过报名系统完成用户注册、信息填报、选择考点、选择报考科目、上传照片、网上交费等报名程序。考生只能选择一个考试地点,报考一个或多个科目。考生可查询各考点的考试科目、限报科次、限报人数等相关信息,根据本人情况选择一个考点报考;
全国计算机等级考试,是经原国家教育委员会批准,由教育部考试中心主办,面向社会,用于考查应试人员计算机应用知识与技能的全国性计算机水平考试体系。考生不受年龄、职业、学历等背景的限制,任何人均可根据自己学习情况和实际能力选考相应的级别和科目。考生可携带有效身份证件到就近考点报名。
二级计算机考试的时间是几点开始?
2022年全国计算机等级考试(NCRE)将举办四次考试,时间分别为3月26日至28日(第64次)、5月28日至29日(第65次)、9月24日至26日(第66次)及12月3日至4日(第67次)。其中3月和9月开考全部级别全部科目,5月和12月考试开考一、二级全部科目,各省级承办机构可根据实际情况决定是否开考5月和12月考试。
二级考试为机试,考试时间120分钟。具体考试时间根据准考证安排为准,考试一般从早上8点开始,结束时间不一,有的考点因为参加人数较多晚上会持续到10点钟,这个根据考点安排而定。三级考试是从9点开始,依次类推。
从八点开始,具体时间还是需要看学校的安排,会在准考证上有。其中3月和9月考试开考全部级别全部科目,6月和12月考试开考一、二级全部科目。各省级承办机构可根据实际情况决定是否开考6月和12月考试。根据全国计算机等级考试网站得知,NCRE所有科目每年开考两次。一般为每年3月倒数第一个周六和9月倒数第二个周六,考试持续1至4天。12月只开考一级和二级,各省级承办机构根据实际情况确定是否开考12月的考试。
计算机等级考试科目:
计算机等级考试一级:计算机基础及MSOffice应用、计算机基础及WPSOffice应用、计算机基础及Photoshop应用、网络安全素质教育,一共四个科目。计算机等级考试二级:语言程序设计类(C、C++、Java、VisualBasic、Web、Python)、数据库程序设计类(Access、MySQL)、办公软件高级应用(MSOffice高级应用)。计算机等级考试三级:网络技术、数据库技术、软件测试技术、信息安全技术、嵌入式系统开发技术共五个科目。其中,“软件测试技术”科目自2018年3月起暂停考试。计算机等级考试四级:网络工程师、数据库工程师、软件测试工程师、信息安全工程师与嵌入式系统开发工程师五个考核项目。其中,“软件测试工程师”科目自2018年3月起暂停考试。