撩课-Python-每天5道面试题-第1天
一. 尽可能详细的描述出一个应用软件, 比如QQ, 在计算机中运行时涉及的软硬件, 以及说明我们编程的侧重点?
- 电脑开机, 从硬盘中(外部存储设备)加载操作系统(系统软件)到内存(内部存储设备), 并运行操作系统
- 下载QQ软件(网络请求)到本地电脑磁盘中(外部存储设备), 安装后, 双击运行(加载到内存, 并基于操作系统通过CPU执行程序内的指令)
- 通过QQ发送语音或视频: 使用麦克风采集音频或者连同摄像头采集视频(输入设备), 发送给对方(网络请求)
- 所以, 基于以上, 我们编程主要指的是根据需求, 使用某一种编程语言, 编写出不同的功能代码(网络请求, 数据处理, GUI界面展示等等), 最后结合各种文档素材(程序图标图片, 音频, 配置文件等等) 组成一个完整的"应用软件"; 打包好相关的执行环境, 供他人运行使用.
二. 尝试解释下, 我们作为开发人员, 在以后的公司实际开发中, 常打交道的部门, 以及打交道的经验?
首先搞清楚, 一个项目开发的部门组成, 大致如下:
(1) 产品经理
负责制定需求, 产品原型图的设计, 和程序员干架等
就是, 咱们做的到底都是啥玩意, 哪些功能要做, 哪些不要做, 比如, 让手机壳随着用户心情变色; 这都是极品产品经理;
还有一个可怕的就是, 像一些小公司, 啥都不懂的老板也会跟着提需求; 和老板合作的其他老板, 也会提一些神奇的建议(谁让别人是甲方呢); 此时, 有节操的产品经理还会反抗, 没节操的, 哎, 都转移给了开发人员... 去做吧, 老板说的, 一句话, 我们开发人员就想着法弄吧
(2) 项目经理(有的兼任开发人员);
根据原型图负责将需求转换成实施步骤, 搭建好基本的项目结构, 并配置好源代码环境; 分配给不同的小弟去做; 还会调度其他部门, 比如美工, 来提供相关素材; 而且, 项目经理会跟进项目开发进度, 就是看着你干活, 每天做的啥玩意; 有的技术难点小弟搞不定, 就得自己上;
(3) 各角色开发人员
职责就是根据分配的需求, 进行代码实现, 简称"码农", "码畜"...
通常除下编写代码外, 还需要背锅
开发大致分为前端和后端, 不管你处于哪一端, 都需要和另外一端人沟通; 比如后端, 需要提供接口, 编写好接口文档; 前端根据接口文档发送请求, 获取和上传数据;
两者之间, 相亲相爱, 一起调Bug, 一起和提出恶意需求的产品干架;
所以, 除下敲代码外, 锻炼好身体也很重要;
(4) 和队友打交道
一般我们开发, 很少一个人独立开发, 根据项目大小不同, 分配的人员也大概在3-5人最为常见; 与他们沟通是最常见的事;
而且一般项目任务划分, 是模块化, 组件化, 或者前后端分离等等方式, 尽可能保证大家都能同步开发, 而互相不干扰; 不然俩人做同一个功能, 那就乱套了;
此时, 最需要注意的问题, 其实是在于代码合并的问题; 也就是源代码管理工具(git/svn); 你可以这么理解, 我们大家写不同功能的代码, 最终肯定要合到一个地方组成一份完整的, 可执行的程序代码;
但因为一个项目代码, 不管怎么划分, 都肯定有一些公共部分代码, 那此时, 大家的对公共部分的代码修改就可能在提交时产生冲突;
此时, 要求我们以下几点:
(1) 修改公共代码时, 说一声;
(2) 每天开始编写代码前, 尽可能先从服务器下载最新代码;
(3) 别乱删别人东西, 也别改别人代码, 让别人自己改; 切记
(4) 没事多写点注释, 不然大家没法沟通, 特别是写SDK的; 不然很容易被打, 虽然每个程序员自己都不想写, 但都要求别人写的;
(5) 尽可能写完一部分代码就提交, 避免产生大量冲突; 而且要先提交, 一旦产生冲突留给队友解决; 你回家吃饭;
(6) 多做测试, 提交正确代码
(7) 测试时, 单独开一个分支(理解为单独一份代码); 别直接在正式项目那份代码中做
(8) 对新人好点好伐? 大家都是这么过来的
三. 作为码农必须了解编程语言的概念, 请阐述
机器语言
- 全部都是由0和1的二进制代码组成, 可以由计算机直接执行, 效率最高;
- 但因为人看不懂, 不好理解, 所以不适合编程使用;
例如
1+1 对应代码如下
0000000000000001 1101100100 0000000000000001
汇编语言
- 使用了一些助记符来代替0和1, 相对来说更好理解一些;
例如
1+1 对应代码如下
mov ax,1
add ax,ax
- 最终还是要转换为机器语言执行, 多了一层转换, 所以效率低于机器语言;
- 通用性依然不强,理解较差,学习曲线大, 编写大型程序繁杂;
- 但因为其效率高, 所以在某些特殊行业中,还是有不少使用;
高级语言
- 接近于人类自然语言的单词和符号来表述低级语言(机器和汇编);
例如
1+1 对应代码就是 1+1
- 可阅读性, 可移植性较高
- 缺点就是效率不如机器语言和汇编语言高;
四. Python语言的简介
- 定位
一门解释型的高级编程语言
也可以说先编译后解释
因为没法严格的划定编译和解释的概念
- 作者
Guido van Rossum(吉多·范罗苏姆), 人称“龟叔”
荷兰人
1991年初,Python发布了第一个公开发行版
- 特点
简单
语法简单
丰富的库支撑
优雅
可移植性
代码规范性
胶水语言
- 应用领域
Web全栈开发
图形界面开发
大数据
人工智能
爬虫
系统网络运维
云计算系统管理
...
- Python版本
目前流行版本两个
Python2.x
Python3.x
五. Python程序的执行过程?
撩课-Python-每天5道面试题-第1天的更多相关文章
- 撩课-Java每天5道面试题第13天
撩课Java+系统架构点击开始学习 96.JDBC操作数据库的步骤 ? .加载数据库驱动 .创建并获取数据库链接 .创建jdbc statement对象 .设置sql语句 .设置sql语句中的参数(使 ...
- 撩课-Java每天5道面试题第15天
撩课Java+系统架构点击开始学习 106.什么是Hibernate的并发机制?怎么去处理并发问题? a.Hibernate的Session对象是非线程安全的, 对于单个请求,单个会话, 单个的工作单 ...
- 撩课-Java每天5道面试题第10天
撩课Java+系统架构 视频 点击开始学习 81.Servlet的会话机制? HTTP 是一种无状态协议, 这意味着每次客户端检索网页时, 都要单独打开一个服务器连接, 因此服务器不会记录下 先前客户 ...
- 撩课-Java每天5道面试题第9天
撩课Java+系统架构 视频 点击开始学习 76.XML技术的作用? XML技术用于数据存储. 信息配置. 数据交换三方面. 可以将数据存储在XML中, 通过节点. 元素内容. 属性标示数据内容及关系 ...
- 撩课-Java每天5道面试题第8天
撩课Java+系统架构 视频 点击开始学习 71.jsp有哪些内置对象?作用分别是什么? Page, pageContext, request, response, session, applicat ...
- 撩课-Java每天10道面试题第7天
撩课Java+系统架构 视频 点击开始学习 61.什么是并发修改异常? 什么是并发修改异常: 当我们在遍历实现了collection接口 与iterator接口的集合时(List.Set.Map), ...
- 撩课-Java每天10道面试题第4天
撩课Java+系统架构 视频 点击开始学习 31.静态变量和实例变量的区别? 静态变量也叫类变量, 这种变量前加了static修饰符. 可以直接用类名调用, 也可以用对象调用, 而且所有对象的同一个类 ...
- 撩课-Python-每天5道面试题-第9天
一. Python程序中, 文件的处理步骤是什么? 打开 open("文件","模式") 读写 2.1 读 f.read(字节数) 字节数默认是文件内容长度 下 ...
- 撩课-Python-每天5道面试题-第8天
一. 解释下什么是闭包? 有怎样的场景作用? 概念 在函数嵌套的前提下 内层函数引用了外层函数的变量(包括参数) 外层函数, 又把 内层函数 当做返回值进行返回 这个内层函数+所引用的外层变量, 称为 ...
- 撩课-Python-每天5道面试题-第6天
一. 函数的概念是什么? 在Python中如何定义?使用场景是什么? 概念 写了一段代码实现了某个小功能; 然后把这些代码集中到一块, 起一个名字; 下一次就可以根据这个名字再次使用这个代码块, 这就 ...
随机推荐
- HTTP请求报文支持的各种方法
常见的HTTP方法如下: 1.GET GET是最常用的方法.通常用于请求服务器发送某个资源. 2.HEAD HEAD与GET的行为类似,但服务器在响应中只返回首部,不会返回实体的部分.这就允许客户端在 ...
- JSP入门之自定义标签
第二部分简单讲解:主要讲解el表达式,核心标签库.本章主要讲解:自定义标签库:404页面,505页面,错误页面配置方法 全部代码下载:链接 1.JSP自定义标签: 自定义标签是用户定义的JSP语言元素 ...
- 设计简单登录界面(Java web)
程序设计思想: 在Input.jsp中创建一个表格里边分别是课程名称,任课老师,教学地点,并分别用三个文本框来接受输入的三个属性, 并传到另外的Jsp页面中,又来接受三个数据,并判断传来的教师,与教室 ...
- css元素垂直居中的8中方法
1. 通过vertical-align:middle实现CSS垂直居中 通过vertical-align:middle实现CSS垂直居中是最常使用的方法,但是有一点需要格外注意,vertical生效的 ...
- Python PIL库学习笔记
1.PIL简介 Python Imaging Library(缩写为PIL)(在新的版本中被称为Pillow)是Python编程语言的开源库,它增加了对打开,操作和保存许多不同图像文件格式的支持.它适 ...
- CF1139D Steps to One 题解【莫比乌斯反演】【枚举】【DP】
反演套 DP 的好题(不用反演貌似也能做 Description Vivek initially has an empty array \(a\) and some integer constant ...
- 9. Javascript学习笔记——表单处理
9. 表单处理 9.1 表单的基础知识 ///表单用 <form> 元素表示,对应的是 HTMLFormElement 类型,继承自 HTMLElement. //属性:action.me ...
- python常用工具
创建规范目录 import os BASE_PATH = os.path.dirname(__file__) li = ['bin', 'conf', 'core', 'db','interface ...
- OpenERP __sql_constrants doesn't work.
可能的原因有两个,一个是你没有更新模块列表,第二个可能是你原有的列已经有重复的数据.(unique限制为例.)
- 用Docker构建分布式Redis集群
[编者的话]本文介绍了如何使用Docker搭建Redis集群,很多读者都在问Docker能带来哪些实质性的好处,我想本文就是一个很好的例子.不使用Docker你也可以搭建Redis集群,那使用Dock ...