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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
日志服务 SLS,月写入数据量 50GB 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,那说


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


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
人工智能 网络协议 Java
23.12月中旬 上海寻序人工智能科技-上海嘉定-Java开发实习生-薪资150-230/d 面经
关于上海寻序人工智能科技有限公司Java开发实习生岗位的面试经验分享,涵盖了技术问题如对象存储MinIO、ArrayList扩容、Object类方法、hashCode和equals方法、处理哈希冲突、JVM垃圾回收器、GC算法、网络协议、邮件协议、HTTP请求方法、Linux和Docker命令、Dockerfile制作等。
|
移动开发 安全 搜索推荐
中国新媒体创业大赛,全国20强项目,SegmentFault 以北京赛区第二名入选
中国新媒体创业大赛总决赛今天在杭州举行,20强项目从全国各赛区选出。 今天列了20个项目的简介, 创业者们可以看看同行者们在做什么。 大家来猜下前三名是哪三个, 上次猜杭州赛区的完全猜对的只有4个同学,猜对一个的就相当多了, 规则一样,猜一次都猜对了请吃饭。
197 0
中国新媒体创业大赛,全国20强项目,SegmentFault 以北京赛区第二名入选
|
人工智能 弹性计算 云计算
“2019国际青少年科技论坛中国行”——美国优秀高中生的阿里云之旅
2019年7月18日下午,阿里云智能团队接待了由美国非盈利机构:全美浙江总商会教育专委会和密西根青少年励能基金会组织的“2019年国际青少年科技论坛中国行”代表团,该代表团成员由来自美国不同学校的19位优秀高中生组成。
1782 0
|
大数据
第二届南京六合创业大赛暨2020南京创新周“中华门创将”大赛报名中
第二届南京六合创业大赛作为2020南京创新周“中华门创将”三创大赛分赛区,由六合区政府、南京市人社局主办,江苏科技镇长团六合团、六合区人社局、六合高新区承办,创成汇平台协办,将聚焦节能环保、新材料等六合重点产业,以及信息技术、大数据、智能汽车等未来产业,面向全球开展项目征集。
646 0
2020苏州·张家港全国创新创业大赛深圳赛区新材料行业赛
为更好地聚焦高端人才资源,吸引一批优质的产业化人才项目到张家港市发展,打造区域性产业人才高地,举办2020苏州·张家港全国创新创业大赛深圳赛区新材料行业赛,深圳赛区将聚焦新材料行业领域,依托深圳市丰富的双创资源、蓬勃的双创生态和动力,搭建汇聚优质资源、挖掘优质项目的重要平台,打造成为张家港市双创品牌活动。
1104 0
|
大数据 Serverless 区块链
剧透 & 报名 | 蚂蚁金服ATEC城市峰会·上海即将开幕
蚂蚁金服ATEC城市峰会·上海,5大分论坛精彩看点!
2708 0
|
安全 区块链
报名 | 蚂蚁金服ATEC科技大会 · 上海:数字金融新原力
数字金融新原力,引领数字化转型潮流。
4149 0
|
大数据
[开学季]内蒙古师范大学阿里云大数据学院成立仪式成功举办
11月30日,内蒙古师范大学计算机科学技术学院·阿里云大数据学院成立揭牌仪式暨内蒙古师范大学第一届大数据论坛在内蒙古自治区首府呼和浩特内蒙古师范大学盛乐校区举行。 成立大会结束后,嘉宾们来到内蒙古师范大学阿里云大数据学院实地考察指导,听取学院规划、人才培养等工作汇报。
3047 0
|
大数据 物联网
[开学季] 浙江万里学院-阿里云大数据应用学院2018级新生开学典礼隆重举行
2018年10月11日,由浙江万里学院、阿里云、慧科集团三方共建的阿里云大数据应用学院2018级新生开学典礼在浙江万里学院隆重举行。宁波市高教处、宁波市鄞州区经信局、万里学院、阿里云、慧科集团的领导老师以及阿里云大数据学院300多位新同学,参加了本次开学典礼。
2631 0