技术场景面试题

1.项目中遇到的比较棘手的问题,如何解决的。

第一个方向是设计模式在项目中的应用,遵循一系列的开发原则,设计模式都是前人总结出来的经验,对我们的开发有指导意义。

之前没有用设计模式,所有的登录都糅合在一个业务类中。但是发现需求经常需要改,登录方式经常会增加或者更换,
每次都要修改业务层代码。

经过我的设计,使用了工厂设计模式和策略模式,解决了经常修改业务层代码的问题。登录代码

责任链模式,开始出现了xxx问题,不断的尝试调研解决方案,最终解决问题。

第二个方向是线上的bug,作为程序员,我们开发的项目经过测试人员的测试之后,投入生产环境。
虽然测试环境测试没有bug,到了线上就会出现很多bug,因为在线上,测试环境中不好复现,所以
不好解决。

或者说项目上线初期没有问题,运行一个月之后,出现了CPU飙高,内存泄漏,线程死锁,都需要在
线上调试找到问题,这个调试问题也是比较困难的。

第三个方向是调优,这里最好说一些指标数据,比如接口比较慢,调优之前访问的耗时是2s,
调优之后访问的耗时是500ms。

中间调优的过程要重点讲:比如可能是SQL的问题,优化了SQL,加了索引,或者是添加了缓存,
或者是集群方案,高可用等方案都可以说

第四个方面是组件的封装,比如分布式锁和接口幂等算是比较小的解决方案,比如很多项目
中都会使用到分布式锁和接口幂等,所以可以尝试封装一个小型的工具或者组件。让多个项目
都能使用,这个封装也是不容易的,一般都是高级开发工程师去完成。

支付和分布式事务算是比较大的组件,就可以单独封装成一个通用的服务,这个难度要高一些。
还要考虑服务的高可用和通用性才行。

如果做过组件封装,可以聊这一方面的内容。如果没有这方面的经验,可以找一些文章参考。

2.你们项目中日志是如何采集的?

在这里插入图片描述

采集日志的原因:日志是定位系统问题的手段,可以根据日志信息快速定位系统中的问题。采集日志的方式:1.ELK:ES、Logstash和Kibana三个软件的首字母    2.常规采集:按天保存日志文件到一个专门的日志目录回答面试官:我们搭建了一个ELK的日志采集系统,
Elasticsearch是全文搜索分析引擎,可以对数据存储、搜索、分析
主要是对日志数据进行存储、搜索和分析
存储的时候一般都是按照日期进行存储的Logstash是一个数据收集引擎,可以动态收集数据,可以对数据进行过滤、分析,
将数据存储到指定的位置
主要是用来收集数据的,收集系统所产生的日志的数据Kibana是一个数据分析和可视化平台,配合Elasticsearch对数据进行搜索,分析,
图表化展示

3.查看日志的命令(考察是否在线调试过项目,如果调试过项目,会经常查看日志文件)

有了ELK,就免去用命令查看日志了。但是作为高级开发,通过命令查看日志也需要掌握。目前采集日志的方式:按天保存到一个日志文件比如 项目名称-端口号-日期.log,可以通过配置的方式来调整日志的命名在logback配置文件中,就可以设置日志的存放目录,还有命名的规范也可以按照项目的
要求设置有了日志文件之后,如果项目报错了,就可以通过查询日志解决问题。
一般我们的项目都是部署在Linux系统当中,检索这些日志也都是Linux系统中查看1.实时监控日志变化:
实时监控某一个日志文件的变化:tail -f xx.log
实时监控日志最后100行日志:tail -n 100 -f xx.log2.按照行号查询:
查询日志尾部最后100行日志:tail -n 100 xx.log
查询日志头部开始100行日志:head -n 100 xx.log	
查询某一个日志行号区间:cat -n xx.log | tail -n +100 | head -n 1003.按照关键字找日志的信息:
查询日志文件中包含debug的日志行号:cat -n xx.log | grep "debug"4.按照日期查询:5.日志太多,处理方式:
日志太多,拆分日志,分页查询日志:cat -n xx.log | grep "debug" | more筛选过滤后,输出到一个文件:cat -n xx.log | grep "debug" >debug.txt

4.生产环境的问题怎么排查:

已经上线的bug排查的思路:1.先分析日志,通常在业务中都会有日志的记录,或者查看系统日志,或者查看
日志文件,然后定位问题。2.远程debug(公司的正式环境(生产环境)不允许远程debug,一般debug都是
公司的测试环境,方便调试代码)远程debug的前提条件:远程的代码和本地的代码要保持一致1.远程代码需要配置启动参数,把项目打包放到服务器后启动项目的参数2.idea中设置远程debug,找到idea中的edit configurations,在这里面添加一个remote JVM Debug3.idea中启动远程debug 启动remote-test4.访问远程服务器,在本地代码中打断点即可调试远程

5.怎么快速定位系统的瓶颈(考察是否有线上调试问题的经验)

1.压测(性能测试):压测就是对系统的性能测试,项目上线之前测评系统的压力压测目的是在项目上线之前尽可能找出系统的瓶颈并修复压测目的:给出系统当前的性能状况,定位系统性能瓶颈或潜在的性能瓶颈指标:响应时间、QPS、并发数、吞吐量、CPU利用率、内存使用率、磁盘IO、错误率压测工具:LoadRunner、Apache Jmeter后端工程师:根据压测结果进行解决或调优(接口慢、代码报错、并发达不到要求)2.监控工具、链路追踪工具:系统上线之后进行监控监控工具:Prometheus+Grafana链路追踪工具:skywalking、Zipkin3.线上诊断工具Arthas(阿尔萨斯):项目上线之后监控、排查,是阿里推出的一个工具Arthas是阿里巴巴开源的Java诊断工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2807976.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

c++的类型转换方法

一、静态类型转换(static_cast) 静态类型的转换主要用于基本类型之间的转换,比如int类型转换为double类型。但是static_cast也可以支持上下行的转换(存在继承关系之间的转换) 基本类型之间的转换举例 上下行转换的举…

【无标题】欢迎使用Markdown编辑器

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

【Python笔记-设计模式】MVC模式

一、说明 它将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。每个部分都有不同的责任,协同工作以实现用户界面和应用程序逻辑的分离。 模型&#xff08…

完美解决ubuntu+windows双系统下时间不正确问题

在同一台电脑上安装ubuntuwindows双系统时,会出现某个系统的时间不正确的问题,而由于windows同步时间实在是太慢了,如果不去解决,windows上的时间大概率一直都是不对的。 原因分析 windows采用LocalTime机制设置时间&#xff0c…

职场经验:Python自动化生成漂亮的测试报告【干货】

运用Python的Unittest、数据驱动测试(DDT)、Excel、Jinja2和HTML技术,构建一个能够自动生成精美可视化测试报告的自动化测试框架 思路流程 封装读取数据,让所有数据都能够再excel中填写,不再填写任何一行逻辑代码 通…

LeetCode二叉搜索树的最近公共祖先

题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也…

【JavaEE】_ajax构造HTTP请求

目录 1. ajax简述 2. ajax构造HTTP请求 2.1 jquery库的引入 2.2 ajax构造HTTP请求格式 3. ajax构造GET请求实例 4. ajax构造POST请求实例 本专栏关于form表单构造HTTP请求一文中已经提到:form表单构造法只支持GET和POST,且会触发页面跳转。 原文详…

vue3+js 实现记住密码功能

常见的几种实现方式 1 基于spring security 的remember me 功能 ​​​​​​​ localStorage 除非主动清除localStorage 里的信息 ,不然永远存在,关闭浏览器之后下次启动仍然存在 存放数据大小一般为5M 不与服务器进行交互通信 cookies 可以…

装修避坑干货|阳台洗衣柜洗衣机一体柜设计。福州中宅装饰,福州装修

装修的时候常常会在洗衣柜中嵌入洗衣机,其实阳台柜的安装并不像看起来的那么简单,下面给大家说说几个注意事项‼️ 01.水电位置 在安装阳台柜之前,务必确认水电管道的位置。确保阳台柜不会阻碍水电管道的使用,以免造成不必要的麻…

辉辉数码:目前电视盒子哪个最好?目前性能最好的电视盒子

大家好,我是辉辉,上期测评发布后我收到了很多粉丝的反馈希望我这期能分享电视盒子推荐,看看目前电视盒子哪个最好。我购入了市面上最热门的十几款电视盒子对比配置、系统后整理了五款目前性能最好的电视盒子推荐给大家。 品牌型号&#xff1…

C++多继承之菱形继承原理及解决方法

目录 1.单继承和多继承 2.菱形继承 3.虚继承解决菱形继承 3.1使用方法 3.2虚继承原理 4.继承和组合 1.单继承和多继承 一个子类只有一个父类称为单继承 一个子类有多个父类称为多继承 2.菱形继承 菱形继承是多继承的一种复杂的情况 这里会出现一个问题,Assi…

Python中回调函数的理解与应用

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站零基础入门的AI学习网站~。 目录 前言 回调函数的概念 回调函数的基本用法 回调函数的实现方式 1 使用函数 2 使用类方法 3 使用类实…

洛谷P5723 质数口袋 题解

#题外话&#xff08;第39篇题解&#xff09;&#xff08;本题为普及-难度&#xff09; #先看题目 题目链接https://www.luogu.com.cn/problem/P5723 #思路&#xff08;看代码吧&#xff09; #代码 #include <bits/stdc.h> using namespace std; bool p(int p_i){for(i…

快速搭建keepalived+nginx

1.工作原理 keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面…

数据脱敏(七)脱敏算法-洗牌算法

脱敏算法篇使用阿里云数据脱敏算法为模板,使用算子平台快速搭建流程来展示数据 "洗牌脱敏"是一种数据处理技术&#xff0c;主要用于保护个人隐私和数据安全。它通过随机打乱数据集中的记录顺序&#xff0c;使得基于行或列的攻击变得困难&#xff0c;从而防止数据泄露…

经典问题之区间分组

给定 N 个闭区间 [ai,bi]&#xff0c;请你将这些区间分成若干组&#xff0c;使得每组内部的区间两两之间&#xff08;包括端点&#xff09;没有交集&#xff0c;并使得组数尽可能小。 输出最小组数。 输入格式 第一行包含整数 N&#xff0c;表示区间数。 接下来 N 行&#…

【Python笔记-设计模式】代理模式

一、说明 代理模式是一种结构型设计模式&#xff0c;提供对象的替代品或其占位符。代理控制着对于原对象的访问&#xff0c;并允许在将请求提交给对象前后进行一些处理。 (一) 解决问题 控制对对象的访问&#xff0c;或在访问对象前增加额外的功能或控制访问 (二) 使用场景…

adb-连接模拟器和真机操作

目录 1. 连接模拟器&#xff08;夜神模拟器示例&#xff09; 1.1 启动并连接模拟器 1.2 开启调试模式 2. USB连接真机调试 2.1 usb数据线连接好电脑&#xff0c;手机打开调试模式 2.2 输入adb devices检测手机 3. Wifi连接真机调试 3.1 USB连接手机和电脑 3.2 运行 adb…

YOLO学习中的琐碎知识点

目录 一、导入的库 二、名词介绍 &#xff08;1&#xff09;pytorch张量 &#xff08;2&#xff09;边界框&#xff08;bounding box&#xff09; 三、pycharm操作 &#xff08;1&#xff09;参数设置 四、文件认识 五、YOLO如何训练自己的模型 一、导入的库 import to…

【python】学习笔记03-循环语句

1. whlie循环的基础语法 - while循环的语法格式 - while循环的注意事项 条件需提供布尔类型结果&#xff0c;True继续&#xff0c;False停止 空格缩进不能忘 请规划好循环终止条件&#xff0c;否则将无限循环 """ 演示while循环基础练习题&#xff1a;求1-100…