网上找的面试题大都不痛不痒的,感觉是一个开发人员必须掌握的知识点,还停留在概念层面,本文将其换种问法,以应用层的角度来剖析自己,为自己以后的面试打下基础。
目录
正文
WEB开发
项目:
相信大家自己也准备了,略
开发流程:
我是在一家产品公司工作的,公司采用的是敏捷开发模式。
首先,(提出需求)Boss提出产品规划路线,明确各季度目标,每个季度最低迭代,并提出迭代需求,细化到每次迭代的功能点
(产品开发沟通)产品经理与开发人员讨论具体细节(功能实现难点,数据库建表难点,前端开发所需时间),明确各自任务,通过任务看板记录各人任务完成情况
(开始立项)产品写需求文档,画原型图,UI与产品沟通所需素材。。。(这块不是很了解)后端搭建服务器,数据库,GIT,测试环境,生产环境以及开发环境,前端搭建前端框架(其实这段时间感觉前端蛮闲的)
(产品开发沟通)其实后边沟通很多的,因为防止返工,开发之间需要确认好编码风格,统一命名风格等(写成文档),前端确定UI框架,前端编写测试demo,测试后端接口。
(测试阶段)测试人员提交bug(什么黑白盒自动化测试这个真不懂)
(迭代完成,部署上线)最终测试产品完美运行时(无bug?不可能的,有些问题特别难解决但又不是严重错误的,比如前端对ie兼容性的bug,就说服测试),发布上线。
顺便提一下外包公司的开发流程,大部分采用瀑布式开发,简单粗暴
1,运营(也可以是产品)给出客户需求,报价,工时,素材,竞品(就是模仿哪家的产品,也可以没有。不过价钱要+)
2、技术总监/产品经理(也可以身兼数职)与客户/运维沟通,给出一份细致的产品方案,给开发人员也准备了一份(对开发更友好)的需求文档。
3、开始立项,严格按照需求文档要求(一般都会很全,需求至上)
4、边开发边测试,开发及时处理测试出的bug
5、完成项目雏形,满足部分需求,让客户看,满意就继续,不满意商量接下来的解决方案(加钱,因为严格按需求来的)
6、完成测试 部署上线,交接项目
项目的开发模式
我相信大家都遇到过卡住很久的bug,但猛的问起来,大脑一片空白
下边的面试题有些可以作为这个问题的答案,继续往下看
肯定用过,作为后端开发,git没用过说不过去了,即使公司常用svn,对git也该熟悉的
先说下回退版本的应用场景
开发人员A,B,两人往一个git项目提交代码,A提交了一个错误的版本,导致B git pull以后出现问题,现在需要回退到上个好的版本
git checkout b_branch //先回到自己的分支
git reflog //接着看看当前的commit id,例如:0bbbbb
git reset --hard B1 //回到被覆盖的那次提交B1
git checkout -b b_backup //拉个分支,用于保存之前因为回退版本被覆盖掉的提交B1
git checkout b_branch //拉完分支,迅速回到自己分支
git reset --hard 0bbbbbb //马上回到自己分支的最前端
git checkout master //切换到master
git merge tony_backup //再合并一次带有B1的分支到master
简单来说就是先查看错误提交之前的版本id reset命令回到正确版本 拉个分支保存正确版本 然后回到自己分支将正确版本合并
提交代码冲突的应用场景
A、B同时修改了一块代码,A提交之后,B也提交,发现有修改需要先pull ,Bpull代码发现报错 提示merge有冲突
git pull origin master --allow-unrelated-histories
git status
这种做法是将代码拉下来手动修改冲突部分
Git高级教程二 版本回退
Doker是Linux开发环境的一种容器,是目前最流行的 Linux 容器解决方案。
Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
docker简介
docker启动django
我在项目中用的是Django框架,因为它大而全,如果考虑到开发效率,我会选择用它。并且其内置的Django一些中间件也解决了web安全问题,对扩展库的支持也很好,ORM对数据库的操作也很方便。典型的MVC框架。
听过或用过就简单聊两句,介绍下其优缺点,使用场景,没听过在后边也表明自己的阅读文档能力较强,上手快。
Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能
这块也顺便去了解下MVC架构
django中间件
django的MVC(MTV)
现在大部分web开发项目都是前后端分离的,主要是让后端更注重服务器和数据层,前端更注重视图,前后端各司其职。但是后端如果不懂前端代码的话遇到问题是没有办法更高效的解决的。所以我平时有关注前端的一些知识。不过我更关注于JS这些业务逻辑,也了解了VUE框架,因为本身Vue框架融合了Angular和React等主流前端WEB框架的一些特性, 所以其他框架也容易看懂。毕竟前端有时候会问一些框架问题。所以自然而然的也会一些。
vue与其他框架的对比
这个问题其实就是问把代码提交到哪托管,!一般公司不会把项目托管到github上去的
我们公司用的是bitbucket,这是个国外的项目托管平台
国内平台有coding.net,码云等(最近用coding.net有些坑,版本更新之后用的很不舒服)
其实这个问题前后端都会问。。毕竟是交互的重点,后端偶尔也会使用来测试接口
会用,项目用的是axios,
pep8规范的话算是比较熟悉了,一开始了解一门语言掌握了它的基本语法之后就要开始注重他们的规范了,pep8是python的一种书写规范,它大大增强了代码的可读性。
比如缩进是使用tab还是空格,导入依赖的上下文顺序,类与函数之间的间隔,字符串过长使用换行等。
项目组开发人员的书写规范都是统一的,只要不影响可读性可扩展性,都是可以的。
pep8规范
===========更新第二次了,佛系更=========