北京某科技技术有限公司20k面经(已过)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 北京某科技技术有限公司20k面经(已过)

今天上午,有个辅助的学员过了北京某科技技术有限公司的面试,下面我提炼出比较好的面试问题,并给出了对应的答案


1、消息队列的Topic 和 Queue区别


队列(Queue)和主题(Topic)是JMS支持的两种消息传递模型:


点对点(point-to-point,简称PTP)Queue消息传递模型:在该消息传递模型下,一个消息生产者向消息服务器端一个特定的队列发送消息,一个消费者从该队列中读取消息。在这种模型下,消息生产者知道消息消费者的队列并直接将消息发送到消息消费者的队列。


发布/订阅(publish/subscribe,简称pub/sub)Topic消息传递模型:在该消息传递模型下,一个消息发布者向一个特定的消息主题发布消息,0或多个对此消息主题感兴趣的并且处于活动状态的消息订阅者或者建立了持久订阅的消息订阅者才可以接收到所发布的消息。在这种模型下,发布者和订阅者彼此不知道对方(这种模式好比是匿名公告板)。该模型分Nondurable subscription(非持久订阅)和durable subscription (持久化订阅,即消息消费者已注册了特定的主题目标)2种消息处理方式。


2、MVC、MVP、MVVM三种区别及适用场合


MVC模式的特点在于实现关注点分离,即应用程序中的数据模型与业务和展示逻辑解耦。在客户端web开发中,就是将模型(M-数据、操作数据)、视图(V-显示数据的HTML元素)之间实现代码分离,松散耦合,使之成为一个更容易开发、维护和测试的客户端应用程序。


MVP(Model-View-Presenter)是MVC的改良模式,由IBM的子公司Taligent提出。和MVC的相同之处在于:Controller/Presenter负责业务逻辑,Model管理数据,View负责显示只不过是将 Controller 改名为 Presenter,同时改变了通信方向。


MVVM是Model-View-ViewModel的简写。微软的WPF(Windows Presentation Foundation–微软推出的基于Windows 的用户界面框架)带来了新的技术体验, 使得软件UI层更加细节化、可定制化。与此同时,在技术层面,WPF也带来了 诸如Binding(绑定)、Dependency Property(依赖属性)、Routed Events(路由事件)、Command(命令)、DataTemplate(数据模板)、ControlTemplate(控制模板)等新特性。MVVM模式其实是MV模式与WPF结合的应用方式时发展演变过来的一种新型架构模式。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。


3、GC垃圾回收机制


JVM调优目标:使用较小的内存占用来获得较高的吞吐量或者较低的延迟。


程序在上线前的测试或运行中有时会出现一些大大小小的JVM问题,比如cpu load过高、请求延迟、tps降低等,甚至出现内存泄漏(每次垃圾收集使用的时间越来越长,垃圾收集频率越来越高,每次垃圾收集清理掉的垃圾数据越来越少)、内存溢出导致系统崩溃,因此需要对JVM进行调优,使得程序在正常运行的前提下,获得更高的用户体验和运行效率。


JVM调优工具


(1)调优可以依赖、参考的数据有系统运行日志、堆栈错误信息、gc日志、线程快照、堆转储快照等。


①系统运行日志:系统运行日志就是在程序代码中打印出的日志,描述了代码级别的系统运行轨迹(执行的方法、入参、返回值等),一般系统出现问题,系统运行日志是首先要查看的日志。


②堆栈错误信息:当系统出现异常后,可以根据堆栈信息初步定位问题所在,比如根据“java.lang.OutOfMemoryError: Java heap space”可以判断是堆内存溢出;根据“java.lang.StackOverflowError”可以判断是栈溢出;根据“java.lang.OutOfMemoryError: PermGen space”可以判断是方法区溢出等。


③GC日志:程序启动时用 -XX:+PrintGCDetails 和 -Xloggc:/data/jvm/gc.log 可以在程序运行时把gc的详细过程记录下来,或者直接配置“-verbose:gc”参数把gc日志打印到控制台,通过记录的gc日志可以分析每块内存区域gc的频率、时间等,从而发现问题,进行有针对性的优化。


(2)JVM调优工具


①用 jps(JVM process Status)可以查看虚拟机启动的所有进程、执行主类的全名、JVM启动参数,比如当执行了JPSTest类中的main方法后(main方法持续执行),执行 jps -l可看到下面的JPSTest类的pid为31354,加上-v参数还可以看到JVM启动参数。


②用jstat(JVM Statistics Monitoring Tool)监视虚拟机信息

jstat -gc pid 500 10 :每500毫秒打印一次Java堆状况(各个区的容量、使用容量、gc时间等信息),打印10次


③用jmap(Memory Map for Java)查看堆内存信息

执行jmap -histo pid可以打印出当前堆中所有每个类的实例数量和内存占用,如下,class name是每个类的类名([B是byte类型,[C是char类型,[I是int类型),bytes是这个类的所有示例占用内存大小,instances是这个类的实例数量


④利用jconsole、jvisualvm分析内存信息(各个区如Eden、Survivor、Old等内存变化情况)


 ⑤分析堆转储快照,前面说到配置了 “-XX:+HeapDumpOnOutOfMemory” 参数可以在程序发生内存溢出时dump出当前的内存快照,也可以用jmap命令随时dump出当时内存状态的快照信息,dump的内存快照一般是以.hprof为后缀的二进制格式文件。

可以直接用 jhat(JVM Heap Analysis Tool) 命令来分析内存快照,它的本质实际上内嵌了一个微型的服务器,可以通过浏览器来分析对应的内存快照


4、MySQL慢查询日志


MySQL的慢查询日志是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中(日志可以写入文件或者数据库表,如果对性能要求高的话,建议写文件)。默认情况下,MySQL数据库是不开启慢查询日志的,long_query_time的默认值为10(即10秒,通常设置为1秒),即运行10秒以上的语句是慢查询语句。


一般来说,慢查询发生在大表(比如:一个表的数据量有几百万),且查询条件的字段没有建立索引,此时,要匹配查询条件的字段会进行全表扫描,耗时查过long_query_time,则为慢查询语句。


5、怎么看是否使用MySQL索引


explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。简单讲,它的作用就是分析查询性能。


explain关键字的使用方法很简单,就是把它放在select查询语句的前面。


mysql查看是否使用索引,简单的看type类型就可以。如果它是all,那说


明这条查询语句遍历了所有的行,并没有使用到索引。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
人工智能 城市大脑 大数据
阿里云总裁胡晓明:“这些新杭州故事,明天将会在更多城市发生”
9月19日,2018杭州·云栖大会现场,杭州城市大脑2.0正式发布,管辖范围扩大28倍,覆盖面积增至420平方公里,相当于65个西湖大小。 ET城市大脑等数字化城市解决方案,掀开了“杭州故事”的新篇章。
5963 0
2020苏州·张家港全国创新创业大赛深圳赛区新材料行业赛
为更好地聚焦高端人才资源,吸引一批优质的产业化人才项目到张家港市发展,打造区域性产业人才高地,举办2020苏州·张家港全国创新创业大赛深圳赛区新材料行业赛,深圳赛区将聚焦新材料行业领域,依托深圳市丰富的双创资源、蓬勃的双创生态和动力,搭建汇聚优质资源、挖掘优质项目的重要平台,打造成为张家港市双创品牌活动。
1078 0
|
大数据 程序员
“寻梦之路 阿里之行”北城大数据学院学生代表团赴北京阿里中心参观
12月15日,北京城市学院阿里云大数据学院学生代表团一行四十余人赴北京阿里中心参观的。本次活动,旨在开拓同学们的视野,同时丰富学习生活,让同学们亲身领略大数据科学的魅力。同时让学生更好的提高实践能力,更好的实现校企间教学与实践的有效结合。
1937 0
|
大数据 Serverless 区块链
剧透 & 报名 | 蚂蚁金服ATEC城市峰会·上海即将开幕
蚂蚁金服ATEC城市峰会·上海,5大分论坛精彩看点!
2662 0
|
大数据
[开学季]内蒙古师范大学阿里云大数据学院成立仪式成功举办
11月30日,内蒙古师范大学计算机科学技术学院·阿里云大数据学院成立揭牌仪式暨内蒙古师范大学第一届大数据论坛在内蒙古自治区首府呼和浩特内蒙古师范大学盛乐校区举行。 成立大会结束后,嘉宾们来到内蒙古师范大学阿里云大数据学院实地考察指导,听取学院规划、人才培养等工作汇报。
2955 0