初次上路如何提问 - 自学必备技能(附直播回放)
Posted 一头小山猪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初次上路如何提问 - 自学必备技能(附直播回放)相关的知识,希望对你有一定的参考价值。
写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。
- 对于文章中出现的任何错误请大家批评指出,一定及时修改。
- 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
- 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。
初次上路如何提问 - 自学必备技能(附直播回放)
本文关键字:新人、小白、提问、自学、必备
文章目录
一、食用需知
本篇文章的目的是指导帮助大家如何更好的进行提问,同时也希望能够帮到自学中的你。文章的内容包括但不限于各种问题的提问思路、解决问题的思路、发贴提问的办法、自我成长的方法。
博主最近一个月参加了一下问答冲榜活动,阅题数百,在各个领域和频道都尽量的帮助大家进行回答,也获得了上百的采纳。由于是发贴式提问,新问题如果没有在第一时间被人看到,很容易就会沉底。有很多问题并没有很好的表达自己的问题或者提供的信息不足,从而导致只有更少的人愿意进行追问,而反复的回贴又会导致问答周期变长。
所以在这里帮助大家疏理一下提问和学习的思路和方法,一来希望帮助大家更好的互相沟通,二来助力大家在技术这条路上更好的成长。
二、提问流程
在遇到问题时,首先尝试自己定位问题,对于初学者来说,这也许很难,所以我在后文当中会详细描述每一种问题应该提供哪些关键信息给答主,虽然这不是一篇教你如何解决问题的文章,但你依然会有所收获。
1. 问题归类
在对问题疏理时首先应该对问题进行归类,比如:环境问题、配置问题、语法错误、逻辑错误、运行异常等等。进行问题归类主要是为了确定需要提供哪些信息,以及优先排查哪些位置,应该提供哪些截图。先以三个大的问题分类为例,后文中会进行更细致的划分。
- 环境问题(部分举例)
- 软件未安装/未配置正确导致命令无法使用:command not found
- 前置环境未布置正确导致某些软件无法使用:使用Eclipse而未安装JDK
- 编程时调用或引用某些库或包失败:对应包未安装或未在项目中正确引入包
- 编码问题(部分举例)
- 编译时报错:在编译器中会有报红提示,命令界面会有无法编译的错误信息
- 运行时报错:部分代码成功执行,日志信息中会明确报错位置
- 与预期不符:程序成功执行,但是与预期结果不相符,需要对程序核心逻辑进行检查
- 配置问题(部分举例)
- 项目启动失败:项目启动时会进行配置文件读取,并初始化某些资源,优先检查配置文件
- 访问资源失败:路径正确前提下,通常是过滤、拦截、跨域配置导致
- 组件无法启动:对于解压安装的软件,需要配置正确后才能成功启动,如大数据生态圈组件
2. 提供信息
对于不同类型的问题,在描述和截图时,所提供的核心信息会有所不同。除了提供最直接报错的效果图外,了解问题的源头可以更有效的提供解决问题所需的参照信息,以上述三个大的分类简做介绍:
- 环境问题
- 截图软件无法运行的截图,或命令代码执行后的效果图
- 所使用的操作系统、软件版本
- 项目环境相关配置界面、依赖包相关界面
- 编码问题
- 编译报错截图或运行报错截图
- 相关报错代码截图
- 程序预期功能描述
- 配置文件
- 项目日志截图
- 配置界面截图
- 核心配置文件
三、详细拆解
对于提出问题,掌握以上两个步骤就可以将问题描述的很清楚了,这一部分主要是再将常见的问题进行一定的细化,让大家可以有一定自己定位和深挖问题的能力,同时也是一种自学的必备技能。为了能够更加清晰的呈献,将会对问题重新归类,对于环境问题不再赘述。
1. 纯前端问题
- 网页布局
对于网页布局属于前端的基础内容,这类问题的特点是代码可以直接影响页面的效果,所以在提问时尽量提供代码与运行效果截图。同时需要了解能够影响网页元素效果的html标签与css样式的关系,在截图时能够找出与之相关的内容。
建议使用浏览器的审查元素功能,查看元素间的关系,发送更加直观的截图。
- 功能函数
涉及到事件绑定、数据处理、动画效果、前端插件等等问题需要使用到js或轻量级框架jQuery。在提问此类问题时与编程语言类问题几乎没有太大差别,但是如果直接调用了某些前端类库需要进行说明,如layUI、ext等等。
可以使用浏览器的前端debug功能,清晰的展示获取到的元素与相关的数据。
- 前端框架
在实现前端页面功能时,一般会直接使用框架,如Vue。解决此类问题可以优先查看相关文档,并截图相关功能代码和运行效果。
2. 数据库问题
- 查询语句
除去基本的语法问题可以直接发送报错截图外,对于多表查询语句应该同时发送或描述相关表的结构,并提供部分数据。用于展示表间关系,并辅助确定相关条件的写法,用于满足查询要求。
- 内置函数
在使用某些内置函数对表数据进行处理时,需要指明数据库,因为对于不同的数据库,有各自独有的内置函数,并不像SQL一样通用。
3. 服务端问题
服务端问题主要是指较为复杂的项目级别问题,并不会像单个程序那样结构简单。在遇到问题时,需要综合考虑编码、配置、构建、部署等相关问题。
- 编码:遇到业务逻辑代码报错时需要描述功能作用,如果需要还应该提供所调用的代码截图、相关配置文件、Debug截图(其中包含变量值)。
- 配置:报错信息截图、配置文件截图,如果其中不包含所使用的框架信息可以在描述中说明。
- 构建:出现构建异常时应提供相关配置文件截图,如Maven的pom.xml,编译器的Maven相关报错界面。
- 部署:一般是由于项目本身某些资源无法初始化(如无法成功建立数据库连接)或服务组件(如部署在Tomcat、nginx后无法访问)配置出现问题,需要根据报错情况提供相应的截图。
4. 交互类问题
更为综合类的问题是涉及到数据交互与跳转,在遇到问题时可以先进行疏理和拆解。
- 前后端数据交互
由于前后端的框架很多,所以在进行数据交互或者跳转时可能采用的方式有很大的不同。所以第一步应该确认的是数据交互及界面跳转都由谁负责,这样在遇到相应的问题时才能够快速的定位。
比如:如果出现404类异常,需要检查请求地址以及服务端配置,是否成功的绑定了地址,能够处理相应的请求,此时应该发送前端页面截图(其中包含了请求地址)以及服务端与该请求对应的代码。
- 持久层数据交互
与持久层的数据交互主要的问题集中在传参与数据绑定(映射),在进行编码时,通常会借助框架进行动态传参,如果报错需要截图传入的数据类型以及参数绑定的方法(如JDBC或MyBatis)。
在获得查询结果后,需要和编程语言中定义的类型进行数据绑定后才能方便的使用(如JdbcTemplate或MyBatis),此时应该截图数据库查询到数据的结构、配置文件、对应映射的实体类等。
5. 其它类问题
由于编程语言种类繁多,同时又有诸如数据结构、算法、Matlab、数据分析、大数据各种组件等等等等相关问题,所以不在此一一阐述。毕竟这一篇文章是为为了帮助大家更明确的发问,如果能够掌握自我定位问题的方法算是锦上添花。对于不太复杂的问题,只要描述清楚并提供相关截图就可以了,如果是复杂一点的问题,可以使用上面的方法进行初步的归类或拆解,然后再有针对的去问。
四、答主展望
在问答模块回答了一段时间,虽然官方给了很大的奖金扶持,但是对于答主来说还是更希望得到题主的回应。一个问题的答案得到了采纳,这是对答主最大的鼓励,也能够帮助印证这个问题的解决方法是正确的,逐渐建立起一个技术交流讨论的环境。
目前经常发现题主发问后就无影无踪了,也可能真的是忘记自己发布过这个问题,但也有可能是看到了答案后并没有给予回应。其实在提问和回答时,大家都能够看到对于题主和答主的建议,不要直接提供代码,可见官方更希望的是题主能够在这个平台中的得到成长,而不只是完成作业或是考试。
当然很多已经工作的小伙伴对此都能够理解,笔者对此也是很认同,以后真正发挥的不只是硬实力,同样会有软实力。目前提问的相当一部分人还是初学者或者自学者,笔者在这里只是希望在提问时可以更多的思考,这样你会有更大的收获,同时对于那些给予你回答和帮助的人,点一个小小的采纳或者积极的沟通,我想整体的环境一定会越来越好。
五、直播回放
视频地址:https://www.bilibili.com/video/BV1nt4y147wy,喜欢的小伙伴儿一定要三连加关注哦~
直播回放 - 新人小白如何提问
扫描下方二维码,加入官方粉丝微信群,可以与我直接交流,还有更多福利哦~
以上是关于初次上路如何提问 - 自学必备技能(附直播回放)的主要内容,如果未能解决你的问题,请参考以下文章
「必备技能」Elasticsearch索引全生命周期管理(附代码)