技术场景面试题

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.log


2.按照行号查询:
查询日志尾部最后100行日志:tail -n 100 xx.log
查询日志头部开始100行日志:head -n 100 xx.log	
查询某一个日志行号区间:cat -n xx.log | tail -n +100 | head -n 100

3.按照关键字找日志的信息:
查询日志文件中包含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 Debug

	3.idea中启动远程debug 启动remote-test

	4.访问远程服务器,在本地代码中打断点即可调试远程

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

1.压测(性能测试):压测就是对系统的性能测试,项目上线之前测评系统的压力
	压测目的是在项目上线之前尽可能找出系统的瓶颈并修复

	压测目的:给出系统当前的性能状况,定位系统性能瓶颈或潜在的性能瓶颈
	指标:响应时间、QPS、并发数、吞吐量、CPU利用率、内存使用率、磁盘IO、错误率
	压测工具:LoadRunner、Apache Jmeter
	后端工程师:根据压测结果进行解决或调优(接口慢、代码报错、并发达不到要求)

2.监控工具、链路追踪工具:系统上线之后进行监控
	监控工具:Prometheus+Grafana
	链路追踪工具:skywalking、Zipkin

3.线上诊断工具Arthas(阿尔萨斯):项目上线之后监控、排查,是阿里推出的一个工具

Arthas是阿里巴巴开源的Java诊断工具

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年云南事业单位报名流程!明天就开始报名啦,千万不要错过哦

注意啦!注意啦!2024年云南事业单位报名即将开始! ▶️公告已发布,2月26日上午9:00开始报名‼️ 相关时间节点 **报名时间:**2024年2月26日9:00至3月1日18:00 **资格初审时间:**2024年2月26日…

新版Java面试专题视频教程——虚拟机篇①

新版Java面试专题视频教程——虚拟机篇① 1 JVM组成1.1 JVM由那些部分组成,运行流程是什么?1.2 什么是程序计数器?1.3 你能给我详细的介绍Java堆吗?1.3.1 1.7和1.8 堆的区别1.3.2 元空间(MetaSpace)介绍 1.4 什么是虚拟机栈1.4.1 堆和栈的区…

centos7 docker 安装

1.卸载之前docker环境 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docke…

软件测试人员的基本功包括些什么?

软件测试人员的基本功包括哪些呢?接下来该问题的阐述结构如下: 1、一看软件测试基本流程 2、明确软件测试的基本功有哪些 3、如何牢固掌握这些基本功 软件测试基本流程 上图就是软件测试的基本流程 1)需求评审 2)计划编写 …

南京观海微电子---AXI总线技术简介——ZYNQ PS和PL的互联技术

1.AXI总线介绍 AXI全称Advanced Extensible Interface,是Xilinx从6系列的FPGA开始引入的一个接口协议,主要描述了主设备和从设备之间的数据传输方式。AXI协议在Xilinx的ZYNQ系列芯片中继续使用,协议版本是AXI4。 ZYNQ为Xilinx推出的首款将高…

PHATGOOSE:使用LoRA Experts创建低成本混合专家模型实现零样本泛化

这篇2月的新论文介绍了Post-Hoc Adaptive Tokenwise Gating Over an Ocean of Specialized Experts (PHATGOOSE),这是一种通过利用一组专门的PEFT模块(如LoRA)实现零样本泛化的新方法 这个方法冻结整个模型,包括PEFT模块,并为每个模块训练一…

git之分支管理

一.理解分支 我们看下面这张图片: 在版本回退⾥,你已经知道,每次提交,Git都把它们串成⼀条时间线,这条时间线就可以理解为是⼀个分⽀。截⽌到⽬前,只有⼀条时间线,在Git⾥,这个分⽀…

动态规划--状态转移

解码方法 1.题目 2.思路 1)我们定义一个数组dp,其中dp[i]表示字符串s的前i个字符的解码方法总数。初始化时,dp[0]为1,因为空字符串有一种解码方式。dp[1]的值取决于第一个字符是否是0,如果不是0,则有一种…

LeetCode234.回文链表

题目 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 输入:head [1,2,2,1] 输出:true思路 找到链表的中间节点:可以使用快慢指针…

platform(驱动层+应用层)实现终端和中断开关点灯

设备树文件添加 myplatform{compatible"hqyj,myplatform";interrupt-parent<&gpiof>;interrupts<8 0>,<7 0>,<9 0>;led1-gpio<&gpioe 10 0>;led2-gpio<&gpiof 10 0>;led3-gpio<&gpioe 8 0>;reg<0x123…

锂电池SOC估计 | PyTorch实现基于Basisformer模型的锂电池SOC估计

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 PyTorch实现基于Basisformer模型的锂电池SOC估计 锂电池SOC估计&#xff0c;全新【Basisformer】时间序列预测 1.采用自适应监督自监督对比学习方法学习时序特征&#xff1b; 2.通过双向交叉注意力机制计算历史序列和…

从源码学习static的使用

从源码学习static的使用 前言 ​ static意味静态的&#xff0c;在Java中&#xff0c;主要用来修饰类级别的变量或方法等&#xff0c;被修饰的内容&#xff0c;表示随着类的加载而加载&#xff0c;而不是具体的实例级别。 ​ 具体到static的使用场景&#xff0c;主要有以下用…

java 并发的三大特性

CPU 三级缓存架构 为平衡CPU与主存的处理速度问题&#xff0c;提出在CPU中设置多级缓存机制。 当CPU要读取一个数据时&#xff0c;首先从一级缓存中查找&#xff0c;如果没有找到再从二级缓存中查找&#xff0c;如果还是没有就从三级缓存或内存中查找。 每个核心都含有一套L…

高频面试题整理(一)

文章目录 平台无关性如何实现&#xff1f;JVM如何加载 .class文件&#xff1f;什么是反射?谈谈ClassLoader谈谈类的双亲委派机制类的加载方式Java的内存模型?JVM内存模型-jdk8程序计数器&#xff1a;Java虚拟机栈局部变量表和操作数栈&#xff1a; Java内存模型中堆和栈的区别…

vector 用法

C++数组是继承C语言的,C++标准库中的vector封装了动态数组,是一个模板类(vector<int>,<>里面可以是各种类型。 定义方式: vector<元素类型> 对象名(长度); (注:vector还有个好处就是,数组定义时长度那里不能包含变量,但是vector定义时长度那里可…

家政小程序有哪些功能 怎么制作

随着人们生活节奏的加快&#xff0c;家政服务变得越来越受到人们的青睐。为了提升家政服务的便捷性和高效性&#xff0c;家政小程序成为了越来越受欢迎的选择。下面具体介绍家政小程序有哪些功能&#xff0c;如何制作。 1. 展示家政服务 在小程序中&#xff0c;上传所有的家政…

C语言中的字体背景颜色汇总

客官请看效果 客官请看代码 #include <stdio.h> #include <stdlib.h> #include <windows.h>int main() {int i;for (i 0; i < 254; i) {SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), i); // 设置当前文本颜色为循环变量对应的颜色printf(…

Git+py+ipynb Usage

0.default config ssh-keygen -t rsa #之后一路回车,当前目录.ssh/下产生公私钥 cat ~/.ssh/id_rsa.pub #复制公钥到账号 git config --global user.email account_email git config --global user.name account_namebug of ipynb TqdmWarning: IProgress not found. Please …

移动端自动化常用的元素定位工具 介绍

在移动端自动化测试和开发中&#xff0c;元素定位是非常关键的一步。以下是一些常用的工具和技术来帮助开发者或测试工程师在移动设备上定位元素&#xff1a; 1. **UiAutomator**: - **UiAutomator** 是 Android 官方提供的自动化测试框架。它可以用来编写测试脚本&…

【电子通识】为什么单片机芯片上会有多组VDD电源?

在单片机芯片规格书中&#xff0c;我们经常能看到多个组VDD的设计&#xff0c;如下红框所示管脚都是VDD管脚。 为什么需要这样设计&#xff1f;只设置一个VDD管脚&#xff0c;把其他的VDD管脚让出来多做几个IO或是其他复用功能不好吗&#xff1f;接下来我们从单片机内部的电路结…