导航:首页 > 程序命令 > 程序员git考试题目

程序员git考试题目

发布时间:2023-02-28 15:43:43

程序员必备知识有哪些

根据软考程序员职称的考试内容,我们可以得出,程序员需要具备以下的知识。但这些只是基础,还要不断扩展。
计算机硬件基础知识。
1. 计算机科学基础。
1.1数制及其转换。
二进制、十进制和十六进制等常用数制及其相互转换。
1.2数据的表示。
数的表示(原码、反码、补码表示,整数和实数的机内表示方法,精度和溢出)。
校验方法和校验码(奇偶校验码、海明校验码)。
1.3算术运算和逻辑运算。
计算机中二进制数的运算方法。
逻辑代数的基本运算和逻辑表达式的化简。
1.5常用数据结构。
数组(表态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树)、图的定义、存储和操作
1.6 常用算法
算法与数据结构的关系,算法效率,算法设计,算法描述(流程图、伪代码、决策表)
2. 计算机系统基础知识。
2.1计算机基础知识。
2.1.1计算机系统的组成,硬件系统、软件系统及层次结构。
2.1.3 中央处理器CPU。
运算器和控制器的组成,常用的寄存器、指令系统、寻址方式、指令执行控
处理机性能。
2.1.4 主存和辅存。
存储器系统。
存储介质(半导体、硬盘、光盘、闪存、软盘、磁带等)。
主存储器的组成、性能及基本原理。
Cache的概念、虚拟存储的概念。
辅存设备的类型、特性、性能和容量计算。
2.1.5 I/O接口、I/O设备和通信设备。
I/O接口(总线、DMA、通道、SCSI、并行口、RS232C、USB、IEEE1394)。
I/O设备的类型和特性(键盘、鼠标、显示器、打印机、扫描仪、摄像头,以及各种辅存设备)。
I/O设备控制方式(中断控制、DMA)。
通信设备的类型和特性(Modem、集线器、交换机、中继器、路由器、网桥、网关)及其连接方法和连接介质(串行连接、并行连接,传输介质的类型和特性)。
2.2 软件基础知识。
2.2.1 操作系统基础知识。
操作系统的类型和功能。
操作系统的内核(中断控制)和进程概念。
处理机管理、存储管理、设备管理、文件管理、作业管理、汉字处理。
2.2.2 程序设计语言和语言处理程序基础知识。
汇编、编译、解释系统的基础知识。
过程(函数)调用。
2.3 网络基础知识。
网络的功能、分类、组成和拓扑结构。
网络体系结构与协议(OSI/RM,TCP/IP)。
2.4 数据库基础知识。
数据模型,ER图。
数据操作(关系运算)。
数据库语言(SQL)。
2.5 多媒体基础知识。
多媒体基础概念,常用多媒体设备性能特征,常用多媒体文件格式类型。
3.软件开发和运行维护基础知识。
3.2 软件需求分析、需求定义及软件基础知识。
结构化分析概念(数据流图(DFD)、实体关系图(ER))。
面向对象设计、结构化设计基础知识。
模拟设计、代码设计、人机界面设计要点。
3.3 程序设计基础知识。
结构设计程序设计,程序流程图,NS图,PAD图。
程序设计风格。
面向对象设计基础知识、可视化程序设计基础知识。
3.4 程序测试基础知识。
黑盒测试、白盒测试、灰盒测试基础知识。
4. 安全性基础知识。
安全性基本概念。
加密与解密基础知识。
5. 标准化基础知识
标准化基本概念
6. 信息化基本知识。
有关的法律、法规要点。
7. 计算机专业英语。
考试科目2:程序设计。
1. 内部设计
1.1 理解外部设计。
1.3 物理数据设计。
确定数据组织方式、存储介质,设计记录格式和处理方式。
2. 程序设计。
2.1 模拟划分(原则、方法、标准)。
3. 程序实现。
3.1 编程
编程方法和标准。
程序设计语言的使用。
4.程序设计语言(C语言为必选,其他语言可以任选一种)。
4.1 C程序设计语言(ANSI C标准)。
程序结构,语法,数据类型说明,可执行语句,函数调用,标准库函数,指针。
4.2C++程序设计语言(ANSI C++标准)。
C++和面向对象程序设计,语法和程序结构,类、成员、构造函数、析构函数、模板、继承、多态。
4.3java程序设计(Java 2)。
语言机制(程序结构和语法,类、成员、构造函数、析构函数、继承、接口)。
4.4Visual Basic程序设计(Visual Basic 6.0)。
用户界面设计。

❷ 如何用5个问题考察一个java程序员的水平

可以的,但想更快地进步,在Java熟练的情况下,可以考虑掌握下面知识。
若开发基于 Web 的应用,下面这些内容应该熟练掌握:
Web 相关技术,比如 HTML、CSS、Javascript、jQuery
JSP/Servlets
Web 框架,比如 SSH 三大框架、myBatis
XML 和 JSON
Web 服务器,比如 Tomcat
Web 应用服务器,WebLogic、WebSphere
一些基本库,比如 Java mail、log4j 等
Java 程序员都应该掌握的数据库技术:
SQL 查询语句:Inner Outer Joins、Group by、Having
存储过程
触发器
游标
数据库驱动(JDBC)
一些工具和思想方法:
开发工具:比如 Eclipse、MyEclipse、IntelliJ IDEA
版本管理工具,比如 SVN、Git
测试:单元测试、jUnit
需求分析
版本管理

❸ 程序员需要具备哪些知识

1、程序员需要学会主动学习,要懂得懂得不断精进自己的专业技能。
2、程序员需要具有个人品牌意识,要学会自我营销,在业界打造自己的个人品牌。
3、程序员重视单元测试,专业的程序员需要知道单元测试的重要性,会把测试代码和产品代码看的一样重要。
4、程序员要善于管理时间。尊重对方的时间。只召集那些必要的同事参加会议,并且会在会议前整理好会议的主题和议程。
5、程序员要善于管理精力。专业的程序员能够让自己精力充沛地投入到工作中。
6、程序员要善于管理压力。专业的程序员会尽量避免压力,他们谨慎承诺,不答应做不到的事情;懂得保持代码的整洁,方便问题定位和重构代码。
7、要懂得去掌握一些编程之外的技术。专业的程序员除了们具备计算机原理、TCP/IP协议这些计算机学科的基础知识,他们也会对常用的Shell命令牢记于心,他们还善于使用各种工具的快捷键来提升他们的工作效率。

❹ 45 个 Git 经典操作场景,专治不会合代码-

git 对于大家应该都不太陌生,熟练使用git已经成为程序员的一项基本技能,尽管在工作中有诸如 Sourcetree 这样牛X的客户端工具,使得合并代码变的很方便。但找工作面试和一些需彰显个人实力的场景,仍然需要我们掌握足够多的git命令。

下边我们整理了45个日常用git合代码的经典操作场景,基本覆盖了工作中的需求。

如果你用 git commit -a 提交了一次变化(changes),而你又不确定到底这次提交了哪些内容。你就可以用下面的命令显示当前 HEAD 上的最近一次的提交(commit):

或者

如果你的提交信息( commit message )写错了且这次提交(commit)还没有推(push), 你可以通过下面的方法来修改提交信息( commit message ):

这会打开你的默认编辑器, 在这里你可以编辑信息. 另一方面, 你也可以用一条命令一次完成:

如果你已经推(push)了这次提交(commit), 你可以修改这次提交(commit)然后强推( force push ), 但是不推荐这么做。

如果这只是单个提交(commit),修改它:

如果你需要修改所有 历史 , 参考 'git filter-branch'的指南页.

通过下面的方法,从一个提交(commit)里移除一个文件:

这将非常有用,当你有一个开放的补丁( open patch ),你往上面提交了一个不必要的文件,你需要强推( force push )去更新这个远程补丁。

如果你需要删除推了的提交( pushed commits ),你可以使用下面的方法。可是,这会不可逆的改变你的 历史 ,也会搞乱那些已经从该仓库拉取(pulled)了的人的 历史 。简而言之,如果你不是很确定,千万不要这么做。

如果你还没有推到远程, 把Git重置(reset)到你最后一次提交前的状态就可以了(同时保存暂存的变化):

这只能在没有推送之前有用. 如果你已经推了, 唯一安全能做的是 git revert SHAofBadCommit , 那会创建一个新的提交(commit)用于撤消前一个提交的所有变化(changes);或者, 如果你推的这个分支是rebase-safe的 (例如:其它开发者不会从这个分支拉), 只需要使用 git push -f 。

同样的警告:不到万不得已的时候不要这么做.

或者做一个 交互式rebase 删除那些你想要删除的提交(commit)里所对应的行。

注意, rebasing(见下面)和修正(amending)会用一个 新的提交(commit)代替旧的 , 所以如果之前你已经往远程仓库上推过一次修正前的提交(commit),那你现在就必须强推( force push ) ( -f )。注意 – 总是 确保你指明一个分支!

一般来说, 要避免强推 . 最好是创建和推(push)一个新的提交(commit),而不是强推一个修正后的提交。后者会使那些与该分支或该分支的子分支工作的开发者,在源 历史 中产生冲突。

如果你意外的做了 git reset --hard , 你通常能找回你的提交(commit), 因为Git对每件事都会有日志,且都会保存几天。

你将会看到一个你过去提交(commit)的列表, 和一个重置的提交。选择你想要回到的提交(commit)的SHA,再重置一次:

这样就完成了。

一般来说, 如果你想暂存一个文件的一部分, 你可这样做:

-p 简写。这会打开交互模式, 你将能够用 s 选项来分隔提交(commit);然而, 如果这个文件是新的, 会没有这个选择, 添加一个新文件时, 这样做:

然后, 你需要用 e 选项来手动选择需要添加的行,执行 git diff --cached 将会显示哪些行暂存了哪些行只是保存在本地了。

git add 会把整个文件加入到一个提交. git add -p 允许交互式的选择你想要提交的部分.

多数情况下,你应该将所有的内容变为未暂存,然后再选择你想要的内容进行commit。但假定你就是想要这么做,这里你可以创建一个临时的commit来保存你已暂存的内容,然后暂存你的未暂存的内容并进行stash。然后reset最后一个commit将原本暂存的内容变为未暂存,最后stash pop回来。

注意1: 这里使用 pop 仅仅是因为想尽可能保持幂等。注意2: 假如你不加上 --index 你会把暂存的文件标记为为存储。

如果你只是想重置源(origin)和你本地(local)之间的一些提交(commit),你可以:

重置某个特殊的文件, 你可以用文件名做为参数:

如果你想丢弃工作拷贝中的一部分内容,而不是全部。

签出(checkout)不需要的内容,保留需要的。

另外一个方法是使用 stash , Stash所有要保留下的内容, 重置工作拷贝, 重新应用保留的部分。

或者, stash 你不需要的部分, 然后stash drop。

这是另外一种使用 git reflog 情况,找到在这次错误拉(pull) 之前HEAD的指向。

重置分支到你所需的提交(desired commit):

完成。

先确认你没有推(push)你的内容到远程。

git status 会显示你领先(ahead)源(origin)多少个提交:

一种方法是:

在main下创建一个新分支,不切换到新分支,仍在main下:

把main分支重置到前一个提交:

HEAD^ 是 HEAD^1 的简写,你可以通过指定要设置的 HEAD 来进一步重置。

或者, 如果你不想使用 HEAD^ , 找到你想重置到的提交(commit)的hash( git log 能够完成), 然后重置到这个hash。使用 git push 同步内容到远程。

例如, main分支想重置到的提交的hash为 a13b85e :

签出(checkout)刚才新建的分支继续工作:

假设你正在做一个原型方案(原文为working spike (see note)), 有成百的内容,每个都工作得很好。现在, 你提交到了一个分支,保存工作内容:

当你想要把它放到一个分支里 (可能是 feature , 或者 develop ), 你关心是保持整个文件的完整,你想要一个大的提交分隔成比较小。

假设你有:

我去可以通过把内容拿到你的分支里,来解决这个问题:

这会把这个文件内容从分支 solution 拿到分支 develop 里来:

然后, 正常提交。

假设你有一个 main 分支, 执行 git log , 你看到你做过两次提交:

让我们用提交hash(commit hash)标记bug ( e3851e8 for #21, 5ea5173 for #14).

首先, 我们把 main 分支重置到正确的提交( a13b85e ):

现在, 我们对 bug #21 创建一个新的分支:

接着, 我们用 _cherry-pick_ 把对 bug #21 的提交放入当前分支。这意味着我们将应用(apply)这个提交(commit),仅仅这一个提交(commit),直接在HEAD上面。

这时候, 这里可能会产生冲突, 参见交互式 rebasing 章 冲突节 解决冲突.

再者, 我们为bug #14 创建一个新的分支, 也基于 main 分支

最后, 为 bug #14 执行 cherry-pick :

一旦你在github 上面合并(merge)了一个 pull request , 你就可以删除你fork里被合并的分支。如果你不准备继续在这个分支里工作, 删除这个分支的本地拷贝会更干净,使你不会陷入工作分支和一堆陈旧分支的混乱之中。

如果你定期推送到远程, 多数情况下应该是安全的,但有些时候还是可能删除了还没有推到远程的分支。让我们先创建一个分支和一个新的文件:

添加文件并做一次提交

现在我们切回到主(main)分支,‘不小心的’删除 my-branch 分支

在这时候你应该想起了 reflog , 一个升级版的日志,它存储了仓库(repo)里面所有动作的 历史 。

正如你所见,我们有一个来自删除分支的提交hash(commit hash),接下来看看是否能恢复删除了的分支。

看! 我们把删除的文件找回来了。Git的 reflog 在rebasing出错的时候也是同样有用的。

删除一个远程分支:

你也可以:

删除一个本地分支:

首先, 从远程拉取(fetch) 所有分支:

假设你想要从远程的 daves 分支签出到本地的 daves

( --track 是 git checkout -b [branch] [remotename]/[branch] 的简写)

这样就得到了一个 daves 分支的本地拷贝, 任何推过(pushed)的更新,远程都能看到.

你可以合并(merge)或rebase了一个错误的分支, 或者完成不了一个进行中的rebase/merge。Git 在进行危险操作的时候会把原始的HEAD保存在一个叫ORIG_HEAD的变量里, 所以要把分支恢复到rebase/merge前的状态是很容易的。

不幸的是,如果你想把这些变化(changes)反应到远程分支上,你就必须得强推( force push )。是因你快进( Fast forward )了提交,改变了Git 历史 , 远程分支不会接受变化(changes),除非强推(force push)。

这就是许多人使用 merge 工作流, 而不是 rebasing 工作流的主要原因之一, 开发者的强推(force push)会使大的团队陷入麻烦。使用时需要注意,一种安全使用 rebase 的方法是,不要把你的变化(changes)反映到远程分支上, 而是按下面的做:

假设你的工作分支将会做对于 main 的pull-request。一般情况下你不关心提交(commit)的时间戳,只想组合 所有 提交(commit) 到一个单独的里面, 然后重置(reset)重提交(recommit)。确保主(main)分支是最新的和你的变化都已经提交了, 然后:

如果你想要更多的控制, 想要保留时间戳, 你需要做交互式rebase (interactive rebase):

如果没有相对的其它分支, 你将不得不相对自己的 HEAD 进行 rebase。例如:你想组合最近的两次提交(commit), 你将相对于 HEAD~2 进行rebase, 组合最近3次提交(commit), 相对于 HEAD~3 , 等等。

在你执行了交互式 rebase的命令(interactive rebase command)后, 你将在你的编辑器里看到类似下面的内容:

所有以 # 开头的行都是注释, 不会影响 rebase.

然后,你可以用任何上面命令列表的命令替换 pick , 你也可以通过删除对应的行来删除一个提交(commit)。

例如, 如果你想 单独保留最旧(first)的提交(commit),组合所有剩下的到第二个里面 , 你就应该编辑第二个提交(commit)后面的每个提交(commit) 前的单词为 f :

如果你想组合这些提交(commit) 并重命名这个提交(commit) , 你应该在第二个提交(commit)旁边添加一个 r ,或者更简单的用 s 替代 f :

你可以在接下来弹出的文本提示框里重命名提交(commit)。

如果成功了, 你应该看到类似下面的内容:

--no-commit 执行合并(merge)但不自动提交, 给用户在做提交前检查和修改的机会。 no-ff 会为特性分支(feature branch)的存在过留下证据, 保持项目 历史 一致。

有时候,在将数据推向上游之前,你有几个正在进行的工作提交(commit)。这时候不希望把已经推(push)过的组合进来,因为其他人可能已经有提交(commit)引用它们了。

这会产生一次交互式的rebase(interactive rebase), 只会列出没有推(push)的提交(commit), 在这个列表时进行reorder/fix/squash 都是安全的。

检查一个分支上的所有提交(commit)是否都已经合并(merge)到了其它分支, 你应该在这些分支的head(或任何 commits)之间做一次diff:

这会告诉你在一个分支里有而另一个分支没有的所有提交(commit), 和分支之间不共享的提交(commit)的列表。另一个做法可以是:

如果你看到的是这样:

这意味着你rebase的分支和当前分支在同一个提交(commit)上, 或者 领先(ahead) 当前分支。你可以尝试:

如果你不能成功的完成rebase, 你可能必须要解决冲突。

首先执行 git status 找出哪些文件有冲突:

在这个例子里面, README.md 有冲突。打开这个文件找到类似下面的内容:

你需要解决新提交的代码(示例里, 从中间 == 线到 new-commit 的地方)与 HEAD 之间不一样的地方.

有时候这些合并非常复杂,你应该使用可视化的差异编辑器(visual diff editor):

在你解决完所有冲突和测试过后, git add 变化了的(changed)文件, 然后用 git rebase --continue 继续rebase。

如果在解决完所有的冲突过后,得到了与提交前一样的结果, 可以执行 git rebase --skip 。

任何时候你想结束整个rebase 过程,回来rebase前的分支状态, 你可以做:

暂存你工作目录下的所有改动

你可以使用 -u 来排除一些文件

假设你只想暂存某一个文件

假设你想暂存多个文件

这样你可以在 list 时看到它

首先你可以查看你的 stash 记录

然后你可以 apply 某个 stash

此处, 'n'是 stash 在栈中的位置,最上层的 stash 会是0

除此之外,也可以使用时间标记(假如你能记得的话)。

你需要手动create一个 stash commit , 然后使用 git stash store 。

如果已经克隆了:

如果你想恢复一个已删除标签(tag), 可以按照下面的步骤: 首先, 需要找到无法访问的标签(unreachable tag):

记下这个标签(tag)的hash,然后用Git的 update-ref

这时你的标签(tag)应该已经恢复了。

如果某人在 GitHub 上给你发了一个 pull request , 但是然后他删除了他自己的原始 fork, 你将没法克隆他们的提交(commit)或使用 git am 。在这种情况下, 最好手动的查看他们的提交(commit),并把它们拷贝到一个本地新分支,然后做提交。

做完提交后, 再修改作者,参见变更作者。然后, 应用变化, 再发起一个新的 pull request 。

在 OS X 和 Linux 下, 你的 Git的配置文件储存在 ~/.gitconfig 。我在 [alias] 部分添加了一些快捷别名(和一些我容易拼写错误的),如下:

你可能有一个仓库需要授权,这时你可以缓存用户名和密码,而不用每次推/拉(push/pull)的时候都输入,Credential helper能帮你。

你把事情搞砸了:你 重置(reset) 了一些东西, 或者你合并了错误的分支, 亦或你强推了后找不到你自己的提交(commit)了。有些时候, 你一直都做得很好, 但你想回到以前的某个状态。

这就是 git reflog 的目的, reflog 记录对分支顶端(the tip of a branch)的任何改变, 即使那个顶端没有被任何分支或标签引用。基本上, 每次HEAD的改变, 一条新的记录就会增加到 reflog 。遗憾的是,这只对本地分支起作用,且它只跟踪动作 (例如,不会跟踪一个没有被记录的文件的任何改变)。

上面的reflog展示了从main分支签出(checkout)到2.2 分支,然后再签回。那里,还有一个硬重置(hard reset)到一个较旧的提交。最新的动作出现在最上面以 HEAD@{0} 标识.

如果事实证明你不小心回移(move back)了提交(commit), reflog 会包含你不小心回移前main上指向的提交(0254ea7)。

然后使用 git reset 就可以把main改回到之前的commit,这提供了一个在 历史 被意外更改情况下的安全网。

❺ 程序员需要掌握的技能

程序员需要掌握的技能如下:

1、Git

Git是一个版本控制软件,最早是Linux之父为了更好的管理Linux内核代码而编写的。版本控制是可以记录每一次修改的文件以及内容的改动,不需要远程或者架设服务器就能做到本地版本管理。比如你要查看某次改动只要查看每次修改的备注就可以了。

4、VS code

每一个程序员都应该有一个最熟悉的文本编辑器,大家如果要迈入编程这一行就应该知道文本编辑器的帮助作用。Notdpad++反华我们今天就不提它了,但是鼓励各位开发者多学习一些高级文本编辑器。



阅读全文

与程序员git考试题目相关的资料

热点内容
音乐喷泉软件要什么加密狗 浏览:491
androidhttpmime 浏览:774
威科夫操盘法pdf 浏览:981
算法可以用图表表示 浏览:948
山西太原php 浏览:273
常用cmd网络命令 浏览:676
hashmap7源码分析 浏览:898
搜索引擎原理技术与系统pdf 浏览:361
运动估计算法python 浏览:860
java正则1 浏览:538
redhatlinux最新 浏览:182
python字典编程词汇 浏览:147
微信和服务器如何通讯 浏览:13
百家号服务器配置有什么用 浏览:600
怎么为电脑加密 浏览:59
服务器出现差错是什么意思 浏览:619
苹果app移到商店里怎么删掉 浏览:257
phpjsphtml 浏览:66
吃鸡手机国际服服务器超时怎么办 浏览:69
努比亚Z5无命令 浏览:642