[关闭]
@ChristopherWu 2018-01-29T17:44:14.000000Z 字数 2753 阅读 4821

如何自学编程,提升技术以及找工作

杂文


大家好, 很高兴可以在这里跟大家分享我一点点微小的经验。
有什么想听的话题,或者要提问的, 可以提出来。
事不宜迟, 现在马上开始。

无基础者如何自学

首先,必须要有基本的电脑知识,比如开关机,下载安装软件,保存东西,搜索东西,当然,能参加这个分享,在座的各位肯定是满足的。
那么,该如何开始呢?

选择第一门语言

或许大家在网上搜索的时候,很多人会推荐C/C++,JAVA,但是我强烈建议大家先学习Python,无论是否计算机专业。
因为编程离不开实践以及兴趣,只是埋头看书是很难提升的,假如学以上语言,或许学了好几周,大家也是仅仅能写DOS黑框程序(就是没有界面,没有任何应用场景的程序),相信各位是很难坚持下去的。为什么中国这么多大学选择C/C++,一来C语言的确是很多语言的母语,JAVA,Python这些语言都是C系,但是C需要你了解操作系统的原理,机器的细节,才能真正掌握,不然会走弯路。所以现在有些外国的大学,是以Python作为入门语言了。
那么,选择Python呢?Python可以做爬虫,到网上抓取你想要的内容,比如知乎的热门精华回答,各种小电影;可以做机器学习,图像识别;可以做游戏,可以方便的处理excel表格,word等。

其实第一门语言的选择没有大家想的那么重要,关键是能够让你感兴趣就好了。因为语言基本都是由if,循环,函数等组成,其他语言也是一样;所以能够很快的上手用一门语言。

如何找适合自己的自学资料

  1. 到知乎,豆瓣查找相关语言的资料,比如知乎搜索"Python 书籍", 豆瓣搜索Python, 直接找高分的;
  2. 不要迷信。可能很多人都吹捧某书某书,可是,适合你才是最好的。所以,多买,多下载至少3本以上的入门书籍,都尝试看一下,看看最喜欢适合哪本. 就像很多人推荐A Byte of Python,我却推荐廖雪峰的新手教程以及与孩子一起学编程,别看名字是这样,不仅仅学到基础知识,还可以做你最感兴趣的游戏。
  3. 好好做题目上的例题,以及课后题目(最朴素的道理往往是需要你实践后才能理解的)

搜索问题

  1. 使用Google
  2. 用英文关键词
  3. 尽可能看官方文档

当然这需要一步步的来, 开始无论怎么样,用Google是最低要求了,这就涉及到另一个问题:如何和为什么使用Google。
在Google还没有退出中国的时候,百度还是一个不错的中文搜索引擎。现在,江河日下,大家自行对比下两者对技术资料的搜索就知道了。
为什么要使用英文关键词? 因为可以找到stackoverflow上以及官方文档,这可以迅速准确的解决问题。
另外我给出一个判断程序员的水平的根据就是, 看他是不是使用Google搜索,以及是否使用英文关键词和看官方文档。
这都不容易, 所以不急, 慢慢的一步步来。

如何翻墙

  1. VPS+Shadow Socks, 可以做服务器+翻墙(需要折腾)
  2. 云梯,300块,一天一块不到,方便配置,我用了三年了。
  3. 其他
    云梯推荐地址:http://tiziref.com/?r=ea6dfb379d172ca1, 用此链接购买你跟我都有10块优惠。

不用太在意装备

很多人会在意是不是机械键盘, 双屏幕, 配置编译器等, 事实上不大需要,这样往往会迷失了目标。
推荐使用linux,大概3个月作为常用系统,不要有windows,这样可以逼迫自己熟悉各种命令行以及常见的软连接, 装包问题。在此期间,可以学习vim,vim不仅仅是一个编辑器,已经成为了一个生态,到服务器上ssh远程?到一个linux系统上操作?只有vim作为编辑器, 想用其他IDE?sorry,没有图形界面给你。所以学习Vim百利而无一坏。
熟悉linux,Vim以及Github后, 就可以买MacBook了。。
不得不说mac是最好最适合程序员的电脑。

如何选择学习路线

在没有明确的目标之前,先把Python学好,多写个人项目(自娱自乐的项目),多看看Python的其他书籍,Python机器学习,Python爬虫;先不用急着学数据结构与算法,CSAPP, 算法导论,SCIP什么的。很多人会说是内功,但是在你表面功夫还耍不好的时候,学习这些用处不大。我以前自学C++,抱着一本《C++程序设计语言》一直看啊看,看的雾里云里的,看了好久也丝毫没有长进。

成长路线

  1. 算法
  2. 实践(实习)
    算法之道,有NOI经历,ACM算法比赛奖牌,深厚的算法能力再加上一点点项目经验,就可以面试绝大多数公司,除了小公司关注你能不能马上干活,其他公司都是关注你的成长性。
    Google,Facebook以及微软都是只是面算法题,而且很多是leetcode上的。国内公司会问一些基础知识,如线程跟进程的区别。
    第二个方法就是实践了。在掌握基本的知识,以及有3000行代码量左右后,可以去找小公司的实习了。
    相比于个人项目, 真正的商业项目才能锻炼你的水平。 因为商业项目有着高要求, 需要你把一个功能做的尽善尽美, 而且适合工程上的妥协。你不是搞科学研究的话,以后的工作也是跟这方面的东西打交道了。
    在工作或者学习中, 把一个新名词如Docker,Mongo等,查查基本概念,尝试去知道理解,可以的话使用一下, 这样就可以

国外,国内工作

相信很多人都有到国外工作的想法,但是实际上, 非常非常难, 比你想象的还要难。
我花费了半年时间准备, 才拿到了Google的电话面试。
原因就是, 到美国工作的H1B签证是需要抽签的,成功率很低, 除了大公司没有其他公司愿意提供。FLG都不提供, 只有Google提供。从这年起,想要面试不能通过内推,需要Google Code Jam前10名,而GCJ都是ACM大神去参加的。
而且国外面试都是只问算法题, 所以这个问题上, 一定要对算法熟悉。
假如你是在弱校的话, 我觉得可以放弃这个想法了。
另一个就是L1B transfer过去, 就是先去微软之类的做个5年左右, 获得推荐去美国。恩, 这个做法往往是微软的人最多。。比如: 刘未鹏,轮子, 叛逆者等知乎软粉。

国内就会问算法, 基础知识如TCP三次握手四次挥手, STL, 红黑树等。

如何写简历

指导思想:
面试者只想知道你的技术能力是如何展现在简历上,性格方面会在面试里判断而不是你仅仅写在简历上的热爱班集体。技术能力上,你的会C++,做过什么用处不大,需要更详细的成果。
必要项:
1. 好的模板,我一会会分享我的给大家
2. 不要贴上照片
3. 不要写电脑能力,使用excel,word等,也不要写个人爱好,性格
4. 应届生的简历不要超过一页
5. 不写不必要个人信息(如出生日期,汉族,已婚,教育信息)
6. 细节如标点,术语缩写以及语法一定要对

如何找实习,工作

  1. 找人内推,这个是最好的办法,尤其是大公司,一些可以免笔试直接电面。不过提前批现在在进行中
  2. 酷工作以及,上面的,主要面向程序员,比较靠谱,成功率也高
  3. 拉钩,boss直聘
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注