2014年底回顾

蓦然间发现  原来今天已经到了2014年的倒数第二天
回顾这一年  我只能说自己不曾后悔

唯一的感觉是累  然后就是自己的付出与收获有点不成正比
作为一名运维人员  我觉得我是成功的  但又是失败的

怎么说呢   年初住在安贞 离上班的地点不是很远  这段时间刚好还有着工资的缓慢增长 所以每月都有点小激动  算是每月的神秘大礼吧
而且当时自己接手的事情也比较多  终端到交易平台 再到商户信息平台  每一次测试实际上都是对代码掌控能力的一次巩固   这样的日子 忙却安定……

不记得从哪个月开始  公司那边蔓延一种离职之风   一个个老员工慢慢的退出了福尔这个平台
当时  也没有想太多  毕竟是自己的第一份工作  就算是工资少点   自己看得都不是那么重
记得第一个走的好像是终端的届哥  然后就到了本组的财哥  信息的说姐   具体的顺序不是太记得了  只是感觉中层骨干人员在慢慢流失
当时对此看的也不是太重  毕竟雏鹰总得要经历风雨才能翱翔蓝天  中层的退出不外乎是我们新人的一次历练
虽然过程或许曲折  但前景应该是一片光明……

不得不承认期间自己犯了很多错
拖了很多后腿  时间进度控制的往往差强人意
但终归也算是体验到了成功的喜悦
也算是在一步步的成长吧

到了年中  发现自己已经毕业工作一年了
在几个好友的聚会上   总免不了会谈及到工作生活中的一些琐事
结果发现 虽然自己的生活忙碌而充实  但总少了些许东西
细想了下  应该是工作的激情~~~
想当年工作的时候都是载着满满的热情  但是那段时间  所有的一切感觉总是忙碌而没有新知识的收获
便想着挤点时间去充充电  考个软考证……
虽然明白  就算是拿到证了  或许对自己而言魅族实际上的好处  但至少总可以证明自己的青春没有白费

接下来就开始学霸的日子  周末跑去国图  徜徉在书香之中
好吧  得要承认   去那边不仅仅是纯粹的为了考试   也想着体验纸质书的那种触动以及学习的氛围
这种  或许也可以算是对考研生活中被动学习的一种弥补吧
毕竟  得不到的永远在骚动……

结果 很神奇的  这次软考竟然通过了
有点有激动  但更多的只是一种  只要有付出 总归会有收获的人生态度的认可
只是接下来的搬家让我有点淡淡的忧伤
住的远了  自己需要负担的房租还涨幅了
刚好当时奶头也刚好跟我“分道扬镳”  分住在帝都的南北
不过  兴庆的是龙宝过来了  有了大厨  自己的饮食质量总归是有指数级的增长
不过  问题也就来了   要知道吃货总归是抵挡不了美食的诱惑的
三个月增长近15斤就是一个非常明显的佐证

到下半年了  在帝都也参与了一次大学同学的游玩 —— 世界公园一日游
期间不可避免的涉及到了薪资浮动的相关事宜
想想公司从7月提出薪酬变更计划  到现在都还是“静若处子”   一下子感觉自己的工作生涯貌似缺少了点什么动力
不得不承认   运维的工资要比开发的要少  但是自己从不认为自己的能力就要比其他孩子低   只是整个行情是这样  自己也无力吐槽一点……
好吧  准切来说  也正是由于那一次的聚会  心里总感觉有些许躁动
但是  生活又总那么忙碌  基本上找不到任何空闲的时间来充实自己的技术
没办法  只能充分利用公交上的1个小时了

努力说服自己买了个手机 将自己的盛大换成了现在的荣耀
其实  最主要是准备换个双卡的手机  不要让自己接电话的时候  总在背包里面翻半天  而且也充分利用起湖南号的那100条免费短信 

然而 坏事年年有  今年特别多
在龙宝准备回广西的那几天  合租房说要拆隔断  而且还说房子已经被房东没卖出去了
没办法  自己也没有太多的精力去跟他们据理力争   只能默默的接受生活的无奈
更要命的当时  王小兵也回深圳办理离职  也就是说自己得要开始一个人接手两个人的工作了
曾记否 每天晚上拖着疲惫不堪的身躯  穿梭在天通苑周边的各个小区  回家之后看到其他租客都已经退房  只留下垃圾一片
当时真是有一种直接放弃的冲动
干脆直接回深圳办理离职!!!
终归强行制止了自己的冲动 理性的继续穿梭于房子周边  要命的是不知哪个挨千刀的将路由给顺走  搞得连续几天都木有网络~~   只能拿着手机在赶集 58上搜索合租房的信息
现在想想  也挺兴庆 当时公司那边没做监管  还是可以上外网  手机也还有足够的流量来进行搜查  不然当时估计还会是各种凌乱……
在此  还是得要非常感谢圈的收留  让我在最后的几个月里还没沦落到睡马路的境地
同时也感谢梁哥当天直接非常给力的房屋搬迁  
至少  年底的这一两个月还是相当顺利……

之后  在月底又开始筹备自己工作的转型
在拉勾 内推等网络上投递了无数次简历  每天晚上明明已经很晚了  却还在修改简历
只能说否极泰来吧 竟然第一次面试就让我直接拿到offer了
这也算是我一年来工作的认可吧~~
只是之后百度游戏及UC的电话面试 让我对电话面试累觉不爱
其实  也不是自己能力不够  而是电话面试 自己总不能在第一时间明白对方的需求  让自己有些丧失优势
毕竟  运维虽然说很多需要进行尝试与学习的  但说白了 很多时候只要建立起一套自己的理念   其他的应当都不是事

好了  感觉自己洋洋洒洒的做了年度流水账   夜深了  只能休息了 
争取年底前把总结的后半部分给写完……

UC面试

运气比较衰  今天参加UC的电话面试  前面聊的还算OK

虽然说也出现了些差错 但是多多少少不像上次百度游戏的面试一样纯粹出现了鸡同鸭讲的情况

但是  也有一件很忧桑的事情   刚刚跟他讲nginx 准备和他谈及自己站点及部署过程中的一些情况

结果人家直接华丽丽的来了一句  现在站点502!!

 

好吧 当时就震惊了

其实 也没有什么好震惊的  毕竟早上的时候 稍微瞄了一眼 站点是打开有些缓慢

但是至少也没有出现502这样直接打不开的错误……

 

哎  但是又没有办法,虽然知道是已经出现了这个问题 但是今天活本来就比较多

根本就抽不出时间来处理这个  只能想想看晚上有没有时间来处理了

 

只能承认  一旦忙起来 很多事情都忘了

下完班  跟新同事讲解了下平台运行原理及账务处理流程

结果却忘了修复站点的问题……

 

好吧  只能等圈回来  占用他电脑来处理一下站点情况了

 

首先查看一下双机使用情况,结果发现应用程序运行正常

查看了一下主机日志,结果发现他在前一刻还有访问记录
[codesyntax lang=”text”]

148.251.124.173 - - [24/Dec/2014:21:11:30 +0800] "GET /robots.txt HTTP/1.0" 200 654 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)" "-"
148.251.124.173 - - [24/Dec/2014:21:11:46 +0800] "GET /?author=11 HTTP/1.0" 301 0 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)" "-"
111.202.0.63 - - [24/Dec/2014:21:26:42 +0800] "GET / HTTP/1.1" 200 48591 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36" "-"

[/codesyntax]
好吧 那主机肯定是没有问题的

那也就是说明今天面试的时候估计蛋疼的是那边刚好访问到备机了

而且 最要命的是当初做双机负载的时候采用的

针对一个ip访问 只能访问其中的一台服务器

哎  运气真心忧桑……

 

好吧  赶紧上备机上查看一下err文件
[codesyntax lang=”text”]

2014/12/25 05:20:11 [error] 26729#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 123.125.71.125, server: favorinfo.com, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "favorinfo.com", referrer: "http://favorinfo.com/"
2014/12/25 05:20:24 [error] 26729#0: *3 connect() failed (111: Connection refused) while connecting to upstream, client: 111.202.0.63, server: iprayz.com, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.iprayz.com"
2014/12/25 05:20:24 [error] 26729#0: *3 connect() failed (111: Connection refused) while connecting to upstream, client: 111.202.0.63, server: iprayz.com, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.iprayz.com"

[/codesyntax]
好吧  问题很明显 CGI接口出现故障 不能讲数据传入进行处理

赶紧用netstat查看了一下9000端口的情况  果不其然  端口还真是没有启动

然后果断查看一下是否是当时转发出问题了

netstat | grep 9000
ps ef | grep php-fpm

好吧 果不其然 真是转接出问题了

解决起来比较容易了 直接启动对应server 就OK了

service php-fpm start

​Over了  站点至此可以正常访问了……

 

常用CI工具汇总

为了实施CI,必须使用工作的支持,以使整个过程的自动化进行,以下把该过程涉及的各种工具汇集一下

必须的工具和功能

源代码控制系统

微软的工具: Microsoft Team Foundation Server (TFS) 或VSS

开源工具:

服务端:

Subversion:http://subversion.apache.org/

AnkhSVN (http://ankhsvn.open.collab.net/)

Visual SVN Server: http://www.visualsvn.com/server/download

客户端:

VisualSVN (www.visualsvn.com/visualsvn/) 和VS集成,需要付费

TortoiseSVN (http://tortoisesvn.tigris. org ) 很流程的Shell工具

现在很流行的分布式代码管理:

GIt,一个很好的中文参考资料: http://wenku.baidu.com/view/78898a1fa76e58fafab00377.html

持续集成服务器

反馈机制

团队成员需要知道构建的状态,如邮件、门户信息、SMS等

构建管理 BUILD MANAGER

NAnt

MSBuild

或sln等各种构建脚本等

单元测试框架UNIT TEST FRAMEWORK

NUnit  MbUnit and  xUnit.net

MSTest

各种的测试框架集成

其他工具

代码分析

构建的过程对于代码规范等各方面进行自动分析也很重要,这样可以持续保持代码的质量

FxCop代码静态分析工具  http://code.msdn.microsoft.com/codeanalysis

StyleCop 代码风格检查工具http://code.msdn.microsoft.com/sourceanalysis

http://stylecop.codeplex.com/

NDepend静态分析 www.ndepend.com 商业/开源

覆盖率工具

NCover:商业软件

PartCover :http://sourceforge.net/projects/partcover/)

VS2010自带的覆盖率测试工具

TeamCity 的代码重复分析工具

http://www.jetbrains.com/teamcity/download/download_thanks.jsp

http://www.harukizaemon.com/simian/

测试工具

工具 目的
NUnit

MSTest

Performing integration tests
Mocking framework Simulating the behavior of some objects while unit testing others

mocking framework that comes with NUnit. Many other good mock

ing frameworks are available, such as Rhino Mocks, Moq, and Typemock Isolator.

White Testing Windows Forms and Silverlight applications
Selenium Testing web applications

seleniumhq.org

FitNesse Performing acceptance testing in a highly sophisticated manner

fitnesse.org/

文档生成

GhostDoc是VS的一个扩展,可以自动编写XML的注释,可一定程度的提高编写效率,安装后根据提示设置,默认在方法上按Shift-Ctrl-D即可以看到自动的注释(http://submain.com/GhostDoc/)

Sandcastle工具:

Sandcastle Help File Builder (SHFB)

www.codeplex.com/Sandcastle

SHFB at http:// shfb.codeplex.com/

安装以上两个,把生成的XML文件和库加入建立工程即可生成文档

安装

WIX开源工具:

http://wixtoolset.org/

http://wix.sourceforge.net/

Visual Stuido的工具:

ClickOnce

Visual Studio Installer

Web Deploy

数据库CI

开源工具 :

http://code.google.com/p/roundhouse/

Visual Studio:

Visual Studio 的Database项目功能很强, 可进行存储过程的单元测试

 

Git Add详解

一、前言


git add命令主要用于把我们要提交的文件的信息添加到索引库中。当我们使用git commit时,git将依据索引库中的内容来进行文件的提交。

二、基本


git add 表示 add to index only files created or modified and not those deleted
我通常是通过git add 的形式把我们添加到索引库中,可以是文件也可以是目录。
git不仅能判断出中,修改(不包括已删除)的文件,还能判断出新添的文件,并把它们的信息添加到索引库中。

三、git add -u


git add -u 表示 add to index only files modified or deleted and not those created
git add -u []: 把中所有tracked文件中被修改过或已删除文件的信息添加到索引库。它不会处理untracted的文件。
省略表示.,即当前目录。

四、git add -A


git add -A: []表示把中所有tracked文件中被修改过或已删除文件和所有untracted的文件信息添加到索引库。
省略表示.,即当前目录。

五、git add -i

我们可以通过git add -i []命令查看中被所有修改过或已删除文件但没有提交的文件,
并通过其revert子命令可以查看中所有untracted的文件,同时进入一个子命令系统。
比如:

[codesyntan lang=”bash”]
git add -i
staged  unstaged path
1:  +0/-0  nothing branch/t.txt
2:  +0/-0  nothing branch/t2.txt
3:  unchanged  +1/-0 readme.txt
*** Commands ***
1: [s]tatus  2: [u]pdate  3: [r]evert  4: [a]dd untracked
5: [p]atch  6: [d]iff  7: [q]uit  8: [h]elp
What now>

[/codesyntax]
这里的t.txt和t2.txt表示已经被执行了git add,待提交。即已经添加到索引库中。
readme.txt表示已经处于tracked下,它被修改了,但是还没有被执行了git add。即还没添加到索引库中。

 

5.1、revert子命令


可以通过git add -i的revert子命令(3: [r]evert)把已经添加到索引库中的文件从索引库中剔除。
(3: [r]evert)表示通过3或r或revert加回车执行该命令。执行该命令后,git会例出索引库中的文件列表.
然后通过数字来选择。输入”1″表示git会例出索引库中的文件列表中的第1个文件。
“1-15″表示git会例出索引库中的文件列表中的第1个文件到第15个文件.回车将执行。
如果我们不输入任何东西,直接回车,将结束revert子命令,返回git add -i的主命令行。

5.2、update子命令


可以通过update子命令(2: [u]pdate)把已经tracked的文件添加到索引库中。其操作和revert子命令类似。

5.3、add untracked子命令


通过add untracked子命令(4: [a]dd untracked)可以把还没被git管理的文件添加到索引库中。其操作和revert子命令类似。

5.4、diff子命令


可以通过diff子命令(6: [d]iff)可以比较索引库中文件和原版本的差异。其操作和revert子命令类似。

5.5、status子命令


status子命令(1: [s]tatus)功能上和git add -i相似

5.6、quit子命令


quit子命令(7: [q]uit)用于退出git add -i命令系统

六、帮助

我们可以通过git add -h命令来看git add命令的帮助文档。

[codesyntax lang=”bash”]
git add -h
usage: git add [options] [–] …
-n, –dry-run  dry run
-v, –verbose  be verbose
-i, –interactive  interactive picking
-p, –patch  select hunks interactively
-e, –edit  edit current diff and apply
-f, –force  allow adding otherwise ignored files
-u, –update  update tracked files
-N, –intent-to-add  record only the fact that the path will be added later
-A, –all  add changes from all tracked and untracked files
–refresh  don’t add, only refresh the index
–ignore-errors  just skip files which cannot be added because of errors
–ignore-missing  check if – even missing – files are ignored in dry run

[/codesyntax]

常用Git操作命令

1 赋权限

进入目录 cd .ssh/
命令:  ssh-keygen
获取key:  vim id_rsa.pub

2 安装

安装   apt-get install git-core
获得   git clone git://url
访问   http://url/gitweb

 

3 纳入版本控制:

 

git add *.txt     //添加指定文件
git add README    //添加单个文件
git add .         //添加所有文件包括子目录,但不包括空目录

 

4 提交:

git commit -m “no1”             //全部提交
git commit -m “no1” someFile    //提交指定文件
git commit -C HEAD -a —amend    //复用HEAD留言,增补提交(修改小错误,而不增加提交记录,掩盖自己的小马虎
-m “提交的说明”
-a 动把所有已经跟踪过的文件暂存,并提交.(工作目录中修改过的文件都提交到版本库,不需一个一个手动add了)
—amend 增补提交
-C 复用指定提交的提交留言
-c 打开编辑器在已有的提交基础上编辑修改

 

5 查看提交历史:

git log
这时“j”向下浏览,“k”向上浏览,“q”退出

 

6 问责:查明谁修改了代码

git blame hello.html            //查看修改过文件的人
git blame -L 12,+10 hello.html //12到22行  用”-L”参数在命令(blame)中指定开始和结束行:
blame还可以跟踪内容复制,文件复制

 

7 撤销缓存区的修改(没有commit的)

git checkout head 文件名 //撤销暂存区的修改
git checkout head readme.txt todo.txt
git checkout head *.txt
git checkout head . //撤销所有

 

8 反转提交:

git revert HEAD //创建一个反向的新提交抵消原来的提交改动
如果需要反转多个,必须从最后的开始反转, 加 -n可以不马上提交,之后一起提交。
git revert -n HEAD
git revert -n 54efhds
git commit -m “revert head and 54efhds”

 

9 复位:还没有commit,让工作目录回到上次提交时的状态

git reset —hard HEAD //所有未提交的内容清空,这会让”git diff” 和”git diff —cached”命令的显示法都变为空
git reset —soft HEAD //复位版本库,暂存差异,便于提交中发现错误需要更改时有用(例如私人密码放到里边了

 

10 分支:

在当前分支末梢建立分支:
git branch RB_1.0(建立分支不会自动切换过去
切换分支:
git checkout RB_1.0(切换到RB_1.0分支
创建并切换分支:
git checkout -b RB_1.0(简化上边2步操作
删除分支:
git branch -d RB_1.0
基于某次提交、分支或标签创建新分支:
git branch RB_1.0 master
git branch RB_1.0 6fe57de0
git branch Rb_1.01 1.0
查看分支:
git branch -r //显示远程分支
git branch -a //列出所有分支
分支重命名:
git branch -m master mymaster
-M 大写M会覆盖同名的分支
合并分支:
直接合并:
git merge 想合并到当前分支的源分支名
git merge —no-commit 分支 //合并但不提交
压合合并:将分支压合成一条commit记录,并合并过来
git merge —squash 某bug分支
git commit -m “修复某bug”
拣选合并:只合并一个提交
git cherry-pick 321d76f
如果需要连续拣选,就需要加 -n参数
然后再git commit ,但不要加-m参数,编辑器就会使用刚拣选的提交留言作为现在的留言。

 

11 标签Tag:

查看标签:
git tag
创建标签:
git tag 1.0 //在当前分支最后一次提交创建标签
git tag 1.0 RB_1.0 //基于RB_1.0分支的最新踢脚创建标签
git tag 1.0 ae468d8kt //为某次提交创建标签
检出标签:
git checkout 1.0 //检出标签与检出分支一样操作,但检出标签后用git branch查看本地分支会发现你现在不再任何分支上
这时你不应该修改,而应该立即基于此标签创建一个分支
git checkout -b from-1.0

 

12 变基:

1 git rebase RB_1.01 //也许修改过一个bug,希望新版本变基到RB_1.01分支上
2 手动解决冲突 //如果解决不了直接git rebase -skip或-abort来跳过特定提交或完全放弃变基
3 git add xxx.html //冲突解决
4 git rebase —continue
//—onto参数可以改写历史抹掉中间的参数,将倒数第一个参数变基到倒数第3个参数,为防止出错建议在试验性分支上先试验。
rebase -i 可以排序历史记录,多个提交合并为1个,一个提交分解成多个提交 ,
详见版本控制之道p86 ,需要编辑器支持,windows记事本不行

 

13 远程相关:

git clone git://github.com/schacon/grit.git //从现有仓库克隆
git clone git://github.com/schacon/grit.git mygrit //换名,唯一区别就是新建的目录成了mygrit,其他都一样
添加远程仓库:
git remote add pb git://github.com/paulboone/ticgit.git
clone会默认添加origin仓库,如果原本用git init创建的版本库,后来又想提交到远程版本库,就可以用下边的办法
git remote add origin git@example.com:/xxxxxx
查看远程分支:
git remote -v //查看远程仓库,默认clone后,应该有一个origin仓库,-v显示对应的clone地址
git remote show origin //查看远程仓库信息
远程仓库重命名和删除:
git remote rename pb paul
git remote rm paul
获取数据:
现在pb/master可以在本地访问了,你可以合并到自己的某个分支,或者切换到这个分支看看有什么有趣的更新
git pull 抓取数据合并到工作目录中当前分支
推送数据:
git push [remote-name] [branch-name] //默认为 git push origin master
git push origin serverfix //推送分支,其实是下边一句的简化,提取我的 serverfix 并更新到远程仓库的 serverfix
git push origin serverfix:serferfix
git push origin :serverfix //这个语法用于删除,只要把分号前留空

 

14 其他:

git gc //垃圾回收,每隔一段时间例如一个月运行一次可以减少磁盘占用空间。
git reflog //最后的保障,列出误删的东东
git bisect //二分查找,版本控制之道p124页,略
归档版本库,导出压缩包:
git archive —format=格式 —prefix=目录/ 版本>压缩包.zip
git archive —format=zip head>test.zip
git archive —format=tar —prefix=mysite-1.0/ 1.0 | gzip>mysite-1.0.tar.gz
git archive —format=zip —prefix=mysite-1.0/ 1.0 >mysie-1.0.zip
通过git pull更新仓库,使用git init-db初始化自己的仓库。
commit:
git commit -a -e        提交全部修改文件,并调用vim编辑提交日志。
git reset HEAD^ or
git reset HEAD~1        撤销最后一次提交。
git reset –hard HEAD^  撤销最后一次提交并清除本地修改。
git reset SHA1          回到SHA1对应的提交状态。
add/delete/ls:
git add -a              添加所有文件。除了.gitignore文件中的文件。
git rm file             从git仓库中删除文件。
git commit              添加或是删除后要提交。
git ls-files -m         显示修改过的文件。
git ls-files            显示所有仓库中的文件。
这些事情都可以先在本地开 local branch 做,而不需要立即 Push 分享给别人。
git branch name       建立本地 local branch
git branch -m old_name new_name    改名字 (如果有同名会失败,改用 -M 可以强制覆盖)
git branch           列出目前有那些 branch 以及目前在那个 branch
git checkout name      切换 branch (注意到如果你有档案修改了却还没 commit,会不能切换 branch,解法稍后会谈)
git checkout -b name       本地建立 branch 并立即 checkout 切换过去
git branch -d  name       删除 local branch
git merge name     合併另一个 branch,若没有 conflict 衝突会直接 commit。若需要解决衝突则会再多一个 commit。
git merge –squash <branch_name> 将另一个 branch 的 commit 合併为一笔,特别适合需要做实验的 fixes bug 或 new feature,最后只留结果。合併完不会帮你先 commit。
git cherry-pick 321d76f 只合併特定其中一个 commit。如果要合併多个,可以加上 -n 指令就不会先帮你 commit,这样可以多 pick几个要合併的 commit,最后再 git commit 即可。
查看 分支版本
git branch -a
除了master之外,我们还可以随便创建分支,然后push到服务器上去。
$ git add .
$ git commit -m “”
$ git pull origin camp
$: git push origin camp
远程分支和本地分支需要区分,所以,在从服务器上拉取特定分支的时候,需要指定本地分支名字。
$: git branch product origin/product
更新分支到本地
$: git pull origin camp

上班族愤怒值飚升的常见情景

人生是如此艰难,每个星期都有那么六七天不想上班……又是一个万恶的周一,带着上坟的心情,拖着沉重的脚步,结果发现世界处处和自己作对,办公室已被逗比占领……这不是逼老子/娘掀桌的节奏么?!像这种事情,你遇到了哪几件?

  1、公司网速慢成渣

  2、电脑在你做完工作要保存时,突然不跟你玩了

  3、同事居功,办公室天天上演《甄嬛传》

  4、遇到都不知道自己想要什么,态度又很粗鲁的客户

  5、当你设法集中精神准备发功时有人在闲聊

  6、打印机在你需要它的时候傲娇了

  7、同事借用你的办公桌,弄得乱七八糟后扬长而去

  8、总是被叫错或被称作“那个谁”

  9、很努力地工作,想稍微放松一下的时候正好被领导看到

  10、想集中精力做事时总是有电话打进来

  11、你以为跟合作伙伴已经达成了共识A,但第二天他说他理解的是B

  12、听到同事背后说你坏话但是当面跟你很亲热

  13、看到别人拍老板马屁

  14、但你总是拍到老板马蹄

  15、工作累成狗但是总也不涨工资

  16、别人涨了工资而你只长了膘

  17、整天散布八卦和谣言的人

  18、遇到问题没人肯负责,纷纷推卸责任

  19、没时间吃午饭

  20、有时间也想不出午饭吃什么

10条优质的面试技巧

在开发者工作面试上,并没有大量的建议。 我发现很多有才华的开发者都会在工作面试上存在困难,这是因为他们都把自己大部分时间花在他们所热爱的技术和开发上,而没有锻炼他们的面试技巧。 这是不幸的,因为拥有好的面试技巧,通过给你不熟悉领域上可能得不到的一些机会,真的能帮助你提高你的职业生涯。

  1.聘请专家为你创建简历

我之前就说过该想法,但它如此重要,所以我再说一遍。除非你以写简历谋生,否则你不会是一名专业简历写手。 有许多人以写简历谋生,那些职业简历写手可能不会尝试在他们自己的电脑上写自己的软件。 因此,倘若简历写手不会写软件,为什么软件开发者尝试写简历呢? 也许你可以有一份好的工作,但够专业的话可以得到一份更好的工作。 我的建议是,如果你想使得到工作的机会最大化,那就硬着头皮支付美元吧,为了使你的建立更加专业化。这是一个基于更好的机会,相对较小的的投资,你很有可能有大量的潜在的收益。

  2.了解你的面试官

当我对开发者进行面试的时候, 我总是感到很惊讶。我在开始面试之前已经给这些开发者发过邮件,这些(邮件)包含了我的全名和我的博客地址,但在面试中我与他们交谈的时候,似乎他们对我一无所知。 反过来说,在那里我曾经面试过一些人,他们在面试中提到我曾经写过的有一篇博文或者在Pluralsight上观看过我的课程。 猜猜对于某一份工作我更倾向于推荐那类开发者? 我们都是凡人,我们想知道的是我们感兴趣的人。 Dale Carnegie曾教过我,最简单的方式来获得对你感兴趣的人,是对他们显示出真正的兴趣。(的确,我好像第八次推荐这本书了,是的,这是一个亚马逊的链接。) 不论这是否是公正和客观,另外几点。如果你为了一份工作需要面试,提前不去了解下你将要面试的公司和面试官,将是非常荒谬的(如果你知道面试官是谁的情况下)。 今天,通过Facebook页面,Twitter或者博客,比任何时候都容易找人。仅进行一点点的研究你就会学到相当多的(知识),同时也表示你注重细节,更关心你的职业生涯。

  3. 争取得到内部推荐

想知道什么是最简单直接的方式得到工作吗?那就是争取得到内部推荐。内部推荐可以提高两倍被面试的可能性以及40%的概率得到这份工作。这会产生很大影响。其实也并不困难,如果你能够提前播种下很多种子,那么在你想采摘的时候自然会收获充足的果实。 回想下,你找到一家理想的公司,想在此工作,该如何做呢? 首先,可以找到这家公司中一个开发人员的博客,并且发现你和他在某些方面有共同的想法,接着开始留意他的博客。 然后,评论他的博客,并且表示对他所从事的工作以及所在的公司感兴趣,当然最终目的是为了得到你理想职位的内部推荐。 许多开发者会说,“很抱歉,我不认识XXX组的任何人”。好吧,如果这个时候你想放弃,那就放弃吧,但是我敢打赌,如果你用这种方式继续下去,一定能够和任何一家公司的人员见面甚至成为朋友。 所有的秘密就是,在你需要一份工作时必须有网络,现在就开始吧!

  4.学习解决算法问题

我总结了6步,用于解决在开发者面试中经常出现的算法问题。 在我的Pluralsight里关于工作面的课程中,我将逐步教你怎样实现这些。 它是每个开发者应该掌握的很重要的一项技能,学会它实际上没有那么困难。多数(注重实际能力)的面试都会涉及到一个或多个问题,让你解决一些编程问题,不管是在白板还是计算机上,多数开发者都是这样,除非是伟大的程序员,当被问及这样做的时候变得手脚无措,然后搞得一团糟。 如果你花时间去学习怎样解决这类问题,你将很容易把自己放到最高的10% 的能得到大部分工作的开发者中,同时在被问到上述问题时,你会放松许多。 我们之所以变得紧张与表现的焦虑无关,与解决该类问题的自信程度和熟悉程度有关。 例如,假如有人要你做10个玩玩,你可能不会觉得周围所有的紧张和桎梏…为什么?因为你自信你可以做到这一点。 在该领域建立自己自信心,你再也不会感到紧张。

  5.回答问题要饱含激情

如果这是你想要的,用一个词来回答问题,或者用教科书般的句子来回答,在技术上可能是正确的,但你错过了展示一名开发者能带给团队的最大的资产的机会—激情。 如果我问你多态是什么,我不仅想知道你能从教科书上读到并记住定义再重复给我。我试着去发现你对多态性的理解。我期望你能阐述上述主体,并且借此作为一次谈话交流的机会。 现在,并不是所有的面试官都以同样的方式,你必须弄清何时该闭嘴,如果可能的话,在你回答和解释的是时候,你应该尝试表现出一定的激情

  6.避免“陷阱”式问题

你为什么寻找新的机会? 你最大的优点和缺点是什么。 最近一次你和你的同事关于某个存在分歧的技术问题的结果如何?

在你被问及这类问题之前,你应该知道你将如何回答这类型的问题,并且知道面试官问这些问题时想要的答案是什么。 在我的课程中我针对如何回答这些问题给出了一些恰当的建议,但你至少该提前考虑这些问题,同时通过一些你可能给出的答案的理由。 例如,加入我们看一下第一个问题,关于为什么你会寻找一个新的机会。。。 在多数情况下,面试官试着发现你是否会说你目前或之前同事的坏话。这是一个明确的信号,你会对他们做同样的事,所以不要这样做。如果你没有提前考虑这些,你会很容易的就掉入对目前工作的同事做出负面的评价的陷阱,这样将会严重的影响到你获得新工作的机会。

  7. 永不说谎!

面试时最坏的就是说谎。 如果你不知道,不要给予答案。不要假装自己使用过一些你没有用过的技术,或是编造你上分工作所做事情的故事。 当然,即便你不能百分之百确定,甚或不知道,你也可以试着基于你所知道的事情给出一个回答。向面试官询问一下正确答案也无伤大雅,因为你真的感兴趣。 大多数面试官的提问方向都是他们所熟知的,这样,当你开始就问题展开讨论时,他们不会难堪。基于这个原因,哪怕你觉得自己是个扯淡高手,你扯的蛋也会迅速被察觉,你将立刻失去诚信,诚信一去难回。

  8. 不要过于诚实

有一点,很多开发者做的有些过火了,他们揭露了太多的个人信息,认为诚实和完全透明是最好的策略。 尽管不应说谎,但同样也不应该将太多个人生活琐碎或是个人缺陷丢给你的面试官。 人们会被一点点神秘所吸引,他们不会压注于你的强迫症或对魔兽世界的痴迷是否会影响你的工作。 有个性是好事,性格缺陷则不然。 永不说谎,诚然,但也不要主动给予对自己不利的信息;不仅仅因为这些信息会伤害到你,同样也会显的你缺乏判断能力。

  9.了解你的计算机科学基础知识

在我的工作面试课程中也涵盖了这一点,因为它非常重要,并且在不到一小时的时间能学会的。 当然,众多的开发者声称他们不知道链表和堆栈为何物,因为他们没有参加过计算机科学方面的正式教育或者距他们毕业的时间太久了。 我承认在大多数编程工作中,我们都没有用到深层次的计算机科学概念,但作为一名专业软件开发者,你至少应该知道最基本的知识。 我非常质疑,如果电工对电子工程的基本知识都不了解,你会期望他对你的房子重新布线,因此不要假定有人期望雇能编码但连他们专业最基本的知识都不了解的人。 你不必成为计算机科学教授,但你至少应该知道最基本的知识,那些我能确信在一小时之内能学会的知识,因为我在我的工作面试课程里就是这么做的。

  10.创造性的积累经验

最后,但同样重要的是,大多数开发者,特别是刚起步的开发者或者进入到另一个不同的领域,缺乏相关的工作经验,也不知道该如何获得。 这有点像排在第一位的先有鸡还是先有蛋的问题。 如果你没有工作经验,你怎么才能获得经验呢? 答案是要创造性的(获得)。有很多方式去获得经验,不涉及到直接作为软件开发的公司。 这里仅仅是一些想法:

加入开源项目 启动一个开源项目 建立一个移动App,并且将其加入到app store 建立一个小型的web app 写博客 在代码营或其他用户组里展示

有很多方式你能获得在你的简历上看起来很漂亮的经验,并给你的雇主信心,让他雇用你,你仅仅需要的是要有点创意。

大学毕业英文简历

hello everyone,

My name is Jian Liu, and you can also call me Alfred. At this moment, I studied in the University of Science and Technology, and majored in Computer Science and Technology.

As for my hoby, I do think that is simply working hard for what I want. Use what I had presented in my resum, once I had used the Fedora, a stable relaese of Linux, I had met all kinds of problems. Make the configuration of loading for example, as I has no experience of using the grub2, I had to ask some team in IRC for help, while most of them are not Chinese. Of course, you may say that I can search the Google, or some other search engines. However, the question is that you may not know the procedure of the whole configuration or you may not know the reason why you configure it or what you had done.

Of course, it practise me anywhere. So let me show my experience in my campus life. I became the repondent in the arms training as I feet in the university, and now I’m still the group secretary in my class. Further more, for overcoming my characteristic of being shy, I had joined in the Student Union, and become the Minister of Technology Department. So I expanded my horizon during my campus life.What impressed me most is that I had the hounor for gaining the award of Labor Model. Besides, as studying hard during my campus life, I had own the 3-year scholarship. Maybe it can be the brief view of what I had paid.

I love programming before I had particpate in the campus, and still now owing the deeply intrest in it. What regret me most is that I had no experince for training or handling some professional project as I spend most of my time in the Student Union or some professional intrest. Take the using of Linux for example, I just use it after joined the course, High-Level Operation System, or configuring the lamp for testing my site, favorinfo.com.

So once I had the chance of joining in your team, I’ll pay all my passion to show myself.

That’s all, thanks for listening.