该【IT面试笔试题目及答案参考 】是由【min】上传分享,文档一共【13】页,该文档可以免费在线阅读,需要了解更多关于【IT面试笔试题目及答案参考 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。IT面试笔试题目及答案参考
IT面试笔试题目难吗?求职面试时,面试官一般都会问你一些问题,也可能是通过问卷的形式提问,怎么回答才是最好的呢?这里给大家分享一些IT面试笔试题目,希望对大家有所帮助。
springcloud面试题汇总及答案
问题一:说一下springcloud?
SpringCloud是一系列框架的有序集合。它利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的开发风格做到一键启动和部署。
SpringCloud是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过SpringBoot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
问题二:使用SpringCloud有什么优势?
使用SpringBoot开发分布式微服务时,我们面临以下问题:
①与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。
②服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。
③冗余-分布式系统中的冗余问题。
④负载平衡--负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。
⑤性能-问题由于各种运营开销导致的性能问题。
⑥部署复杂性-Devops技能的要求。
问题三:SpringCloud的核心组件及其工作原理
Eureka:各个服务启动时,EurekaClient都会将服务注册到EurekaServer,并且EurekaClient还可以反过来从EurekaServer拉取注册表,从而知道其他服务在哪里;
Ribbon:服务间发起请求的时候,基于Ribbon做负载均衡,从一个服务的多台机器中选择一台;
Feign:基于Feign的动态代理机制,根据注解和选择的机器,拼接请求URL地址,发起请求;
Hystrix:发起请求是通过Hystrix的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题;
Zuul:如果前端、移动端要调用后端系统,统一从Zuul网关进入,由Zuul网关转发请求给对应的服务。
问题四:服务注册和发现是什么意思?SpringCloud如何实现?
当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。
Eureka服务注册和发现可以在这种情况下提供帮助。由于所有服务都在Eureka服务器上注册并通过调用Eureka服务器完成查找,因此无需处理服务地点的任何更改和处理。
问题五:负载平衡的意义什么?
在计算中,负载平衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载。
使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程。
问题六:什么是NetflixFeign?它的优点是什么?
Feign是受到Retrofit,JAXRS-。Feign的第一个目标是将约束分母的复杂性统一到httpapis,而不考虑其稳定性。在employee-consumer的例子中,我们使用了employee-producer使用REST模板公开的REST服务。
但是我们必须编写大量代码才能执行以下步骤
①使用功能区进行负载平衡。
②获取服务实例,然后获取基本URL。
③利用REST模板来使用服务。
Tomcat面试题汇总及答案
一、Tomcat的缺省端口是多少,怎么修改?
1)找到Tomcat目录下的conf文件夹
2)
3)
4)
<connectorport="8080"connectiontimeout="20000"protocol="HTTP/"p=""
redirectPort="8443"uriEncoding="utf-8"/>
port="8080"改成你想要的端口
二、tomcat有哪几种Connector运行模式(优化)?
bio:传统的JavaI/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:,同步阻塞或同步非阻塞IO。指定使用NIO模型来接受HTTP请求
protocol=””指定使用NIO模型来接受HTTP请求。默认是BlockingIO,配置为protocol=”HTTP/”acceptorThreadCount=”2”使用NIO模型时接收线程的数目
aio():JDK7开始支持,异步非阻塞IO。
apr:Tomcat将以JNI的形式调用ApacheHTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。
三、Tomcat有几种部署方式?
1)直接把Web项目放在webapps下,Tomcat会自动将其部署
2),设置相关的属性即可
3)通过Catalina来进行配置:进入到conf\Catalina\localhost文件下,创建一个xml文件,该文件的名字就是站点的名字。
编写XML的方式来进行设置。
四、tomcat容器是如何创建servlet类实例?用到了什么原理?
当容器启动时,,然后对xml文件进行解析,并读取servlet注册信息。然后,将每个应用中注册的servlet类都进行加载,并通过反射的方式实例化。
(有时候也是在第一次请求时实例化)在servlet注册时加上如果为正数,则在一开始就实例化,如果不写或为负数,则第一次请求实例化。
五、tomcat如何优化?
1、,需要修改conf/,修改连接数,关闭客户端dns查询。参数解释:
URIEncoding=”UTF-8″:使得tomcat可以解析含有中文名的文件的url,真方便,不像apache里还有搞个mod_encoding,还要手工编译maxSpareThreads:如果空闲状态的线程数多于设置的数目,则将这些线程中止,减少这个池中的线程总数。
minSpareThreads:最小备用线程数,tomcat启动时的初始化的线程数。
enableLookups:这个功效和Apache中的HostnameLookups一样,设为关闭。
connectionTimeout:connectionTimeout为网络连接超时时间毫秒数。
maxThreads:maxThreadsTomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数,即最大并发数。
acceptCount:acceptCount是当线程数达到maxThreads后,后续请求会被放入一个等待队列,这个acceptCount是这个队列的大小,如果这个队列也满了,就直接refuseconnectionmaxProcessors与minProcessors:
在Java中线程是程序运行时的路径,是在一个程序中与其它控制线程无关的、能够独立运行的代码段。它们共享相同的地址空间。多线程帮助程序员写出CPU最大利用率的高效程序,使空闲时间保持最低,从而接受更多的请求。
通常Windows是1000个左右,Linux是2000个左右。
10道python面试题
1、python下多线程的限制以及多进程中传递参数的方式
python多线程有个全局解释器锁(globalinterpreterlock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程序一个意思,大家都是轮着用的,这叫“并发”,不是“并行”。
多进程间共享数据,。
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的方法来共享资源。但这样做提高了程序的复杂度,并因为同步的需要而降低了程序的效率。
IT面试笔试题目及答案参考 来自淘豆网m.daumloan.com转载请标明出处.