撩课-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中如何定义?使用场景是什么? 概念 写了一段代码实现了某个小功能; 然后把这些代码集中到一块, 起一个名字; 下一次就可以根据这个名字再次使用这个代码块, 这就 ...
随机推荐
- httpclient org.apache.http.NoHttpResponseException: host:端口 failed to respond 错误原因和解决方法
原因:httpclient 之前与服务端建立的链接已经失效(例如:tomcat 默认的keep-alive timeout :20s),再次从连接池拿该失效链接进行请求时,就会保存. 解决方法:官方链 ...
- docker设置引用国内镜像加速
设置步骤: 1 先到daocloud.io网站注册一个账号 过程略,注册成功后,进入控制台 2 点击控制台上的加速器 拉到中间部分,有一个『主机监控程序』的文字链接,见下图: 然后选择主机类型,我用的 ...
- 磁盘IO的概念
转载自:http://blog.csdn.net/letterwuyu/article/details/53542291 在数据库优化和存储规划过程中,总会提到IO的一些重要概念,在这里就详细记录一下 ...
- django入门-测试-part5
尊重作者的劳动,转载请注明作者及原文地址 http://www.cnblogs.com/txwsqk/p/6515996.html 完全翻译自官方文档 https://docs.djangoproje ...
- 网站架构:PHP针对并发访问如何优化?
1.拆表:大表拆小表(垂直拆,水平拆:分表,分区partition,分片sharding),可以在应用层实现,也可以在数据库层面实现一部分:提高系统性能. 2.分库:把表放到不同的数据库,这也是分布式 ...
- [ActionScript 3.0] 记录几个ByteArray 十六进制 String等相互转换的方法
/** * 通过hax数据返回ByteArray * @param hax 格式 "AA5A000100FF" */ private function getHax(hax:Str ...
- Ambiguous mapping found. Cannot map 'XXXController' bean method
springMVC报错,原因方法之间@RequestMapping()到了同一个地址,导致springmvc无法定位
- springmvc常遇到的错误
错误1: HTTP Status 500 - Handler processing failed; nested exception is java.lang.NoClassDefFoundError ...
- springcloud应用思考
1 springcloud注册中心eureka和zookeeper注册中心的区别: eureka注册中心,在服务选主的时候服务还是可以用的,zookeeper注册中心在选举的时候整个服务瘫痪了,是不可 ...
- JVM虚拟机指令
参考及转载: (1)https://blog.csdn.net/qq_33301113/article/details/73717855 (2)https://blog.csdn.net/wangxf ...