怎样能拿到第一份编程工作?这里告诉你答案 | 码书
“写代码时,每次都要告诉自己:最后负责维护代码的,会是一个知道你住在哪的变态暴力狂。” ——约翰·伍德(John Woods)
拿下第一份编程工作需要付出更多努力,但是如果采纳下面的建议,应该不会有太大问题。幸运地是,只要你得到了第一份工作且积累了经验,在寻找新的工作机会时,招聘者会主动接触你。
选择方向
应聘编程岗位时,根据岗位所处的领域不同,企业会要求你了解一系列技术。在学习编程时各个领域都有涉猎是没有问题的,而且也有更多机会找到有相关要求的岗位。但是,我的建议是专注某一个感兴趣的编程领域,成为该领域内的专家。专注一个编程方向会使得求职更容易。
Web开发和移动开发是两个非常流行的编程方向,各自包含两个细分领域:前端和后端。应用的前端是用户可见的部分,如Web应用的图形界面;后端是用户看不见的地方,是向前端提供数据的部分。市场上招聘的岗位名称大多类似“Python后端开发”,意味着公司寻找的是负责网站后端开发且熟悉Python的程序员。岗位描述中会列出理想的候选人应该熟悉的技术,以及其他需要掌握的能力。
有些公司将开发团队划分为前端和后端两个团队。有的公司则只招聘全栈程序员,即前后端均掌握的程序员,但是这只适用于开发网站或移动应用的公司。
我们还可以从事许多其他编程领域,如安全、平台开发和数据科学。在招聘程序员的网站上查看岗位职责,可以方便了解不同编程领域的要求。Python官网提供了一个Python工作列表:https://www.python.org/jobs,可以先从这里找起。先查看几个岗位的要求以及所使用的技术,了解需要学习哪些内容才能成功竞争该岗位。
积累初期经验
在成功应聘上第一个编程工作前,你需要积累经验。但是如果没有公司愿意在你没有经验的情况下雇佣你,怎么积累经验呢?有几个解决办法。首先,你可以参与开源项目,自己启动一个开源项目或向GitHub上的其他开源项目提交代码。
另一个方式是做外包。在Upwork等类似网站创建账号,试着申请规模较小的编程工作。我建议去找确实有编程外包需求的朋友,让他们在Upwork等网站注册账号,然后正式雇用你完成任务。这样后续可以给你很不错的评价。其他人看到你至少成功完成了一项工作之后,被雇佣的概率就会提高,因为你已经成功建立了可信度。
拿到面试机会
通过开源项目获外部工作成功积累编程经验后,可以开始寻找面试机会。我发现一个有效地获取面试机会的方法,就是通过LinkdedIn。如果你还没有LinkedIn账号,建议创建账号并试着与潜在雇主进行沟通。在个人档案中留下自我描述,突出自己的编程能力。例如,很多人会在档案上这样写,“编程语言:Python、JavaScript”,会吸引来不少关注这些关键词的招聘者。务必将自己的开源项目或外包经验列为近期的工作。
完善个人档案后,可以开始与技术招聘人联系。LinkedIn上有许多技术招聘人,他们一直在寻找新的人才,也会乐意与你沟通。他们在接受你的邀请后,你要主动联系并询问有没有招聘的岗位。
面试
如果招聘者认为你适合他们的岗位,则会在LinkedIn上发消息请求发起电话面试。电话面试是与招聘者进行的,所以通常不涉及技术问题,但是我也在第一轮面试中被问过技术问题。面试内容为你熟悉的技术,之前的工作经验,并判断能否适应公司的文化等。
如果面试效果不错,将进入第二轮技术电话面试,与技术团队成员进行交流。他们可能会问与第一轮面试中相似的问题,但是这轮中的问题会新增一个技术测试。负责面试的工程师会提供一个网址,上面有已经准备好的编程问题,需要你来解决。
如果顺利通过第二轮,通常还会有第三轮面试。第三轮面试一般会在公司当面进行。和前两次面试一样,你会见到团队中的其他成员。他们会询问你的能力和经验情况,要求完成更多的技术测试。有时候可能要留下来一起吃午饭,观察与团队成员的契合度。第三轮中会有著名的白板编程测试。如果你面试的公司有这个传统,面试者会要求你通过这种方式解决多个编程问题。我建议买一块白板提前练习,因为在白板上解决编程问题比在计算机上解决问题要难得多。
面试技巧
大部分编程面试聚焦两个主题:数据结构和算法。要想顺利通过编程面试,你需要精通这两个领域。这也会帮助你成为一名更优秀的程序员。
你还可以从面试官的角度来思考,将可能涉及的问题范围进一步缩小。有人说,软件从来无法完成,对于面试官来说也是如此。他很可能手头上有许多工作,不想花太多时间面试。他们会花宝贵的时间来自己列编程问题吗?很可能不回。他们会去搜索“编程面试问题”,挑选其中某一个提问。这就导致不断地出现同样的面试问题,因此网络上积累了诸多宝贵的资源,帮助大家练习如何回答。我强烈建议使用LeetCode网站练习,因为我发现别人在面试中问的问题,在这个网站上都可以找到答案。
本文部分内容经授权节选自《Python编程无师自通专业程序员的养成》

《Python编程无师自通——专业程序员的养成》
作者:[美] 科里•奥尔索夫(Cory Althoff)
在美国亚马逊,这是一本书的影响力超高的Python入门书,Kindle版本在美国亚马逊网站的计算机软件、软件开发分类中排行均为第一,超越了众多实力派Python书,众多五星好评。这些也许你有所耳闻。
《Python编程无师自通——专业程序员的养成》作者是一名自学成才的程序员,作为一名文科生他通过自学编程,掌握了编程技能并在eBay找到了一份软件工程师的工作。这本书是作者结合个人经验写作而成,旨在帮助读者从外行成长为一名专业的Python程序员。
这本书可以满足几乎所有想要学习编程的初学者。
目录一览
第1章 概述
第2章 起步
第3章 编程概论
第4章 函数
第5章 容器
第6章 字符串操作
第7章 循环
第8章 模块
第9章 文件
第10章 综合练习
第11章 练习
第二部分 面对对象编程简介
第12章 编程范式
第13章 面向对象编程的四大支柱
第14章 深入面向对象编程
第15章 综合练习
第三部分 编程工具简介
第16章 Bash
第17章 正则表达式
第18章 包管理器
第19章 版本控制
第20章 融会贯通
第四部分 计算机科学简介
第21章 数据结构
第22章 算法
第五部分 找到工作
第23章 最佳编程实践
第24章 第一份编程工作
第25章 团队协作
第26章 更多学习资料
第27章 下一步

这样的一本书是不是应该放到你的书单里?
识别下方二维码或者点击阅读原文即可购买
相关文章:

JSON知识点
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读…

asp常用函数(备忘)
1.数组长度: <% Dim grade,i gradesplit("1,2,5,10,20,50,100,200,500,1000",",") for i0 to ubound(grade) response.write grade(i)&"\n" next %> 2.获得插入的id set rs server.createobject(&q…

【leetcode】力扣刷题(1):两数之和(Go、Python)
一、问题描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums [2, 7,…

轻松练:如何从900万张图片中对600类照片进行分类|技术头条
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」7折优惠最后2天,请扫码咨询 ↑↑↑作者 | Aleksey Bilogur译者 | 风车云马责编 | Jane出品 | AI科技大本营(公众号id:rgznai100)【导语】完成一个简单的端到端的机器学习模型需要几步&…

介绍两个好玩的和Github相关的Chrome扩展
1. Octotree 默认的github网页里的代码显示没有我们在IDE里看到的直观,即代码文件所在的文件夹无法以树形层级结构显示在屏幕左边。 安装Octotree之后: 方便多了。 2. Isometric Contributions github commit的统计页面比较平淡: 安装了Isome…

Schema约束模式实例
book.xsd <?xml version"1.0" encoding"UTF-8"?> <!-- xmlns:默认命名空间 xmlns:xs:当前的文档的标记来自http://www.w3.org/2001/XMLSchema命名空间 前缀:xs elementFormDefault:当前文档使用的标记必须是使用http://www.w3.…

【leetcode】力扣刷题(2):两数相加(go语言)
一、问题描述 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可…

“GANs之父”Ian Goodfellow被爆已从Google离职
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」7折优惠最后2天,请扫码咨询 ↑↑↑整理 | 一一出品 | AI科技大本营(ID:rgznai100)3 月 28 日,深度学习大牛李沐在知乎爆料称,他从某机器学习大佬处获悉,…

Gulp快速入门教程
Gulp是基于流的前端自动化的构建工具,虽说如今是webpack盛行的时代,但是gulp和webpack整合效果更美味的,鱼与熊掌都可兼得哦!本文只介绍下Gulp的基本使用和一些常用的Gulp插件,废话不多说,一起来看看吧。 g…

linux 防火墙 命令
-- 永久设置防火墙(重启不恢复) 开启:chkconfig iptables on 关闭:chkconfig iptables off-- 暂时设置防火墙(重启后恢复) 开启:service iptables start 关闭:service i…

如何将TensorFlow Serving的性能提高超过70%?
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」7折优惠最后2天,请扫码咨询 ↑↑↑译者 | Major出品 | AI科技大本营(ID:rgznai100)TensorFlow已经发展成为事实上的ML(机器学习)平台,在业界和研究领域都很流行。对TensorFlow…

【leetcode】力扣刷题(3):无重复字符的最长子串(go语言)
一、问题描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是…

单点登录与权限管理本质:session和cookie介绍
本篇开始写「单点登录与权限管理」系列的第一部分:单点登录与权限管理本质,这部分主要介绍相关的知识概念、抽象的处理过程、常见的实现框架。通过这部分的介绍,能够对单点登录与权限管理有整体上的了解,对其相关概念、处理流程、…

【.Net MF网络开发板研究-04】Socket编程之服务端
前几篇文章介绍了Http相关的应用,其实从技术角度而言,应该先介绍Socket编程,然后再介绍Http,毕竟Http是用Socket相关函数编程实现的。 .NET Micro Framework的Socket函数和桌面版.NET Framework中的函数完全兼容,换句话…

【Qt】Qt中调用python接口
在Qt程序中调用python函数从步骤 1、在pro中添加python的头文件路径和库 INCLUDEPATH += /usr/include/python3.4 LIBS += -L /usr/lib/python3.4/config-3.4m-x86_64-linux-gnu -lpython3.42、添加python头文件 #undef slots #include <python3.4/Python.h> #define …

优雅的理解 call 和 apply 的使用方法
作者在看到一篇优雅的使用 js 的各种方法解决算法的时候产生的疑问,到底什么时候使用 apply 和 call 啦? 每次看到别人用 apply 和 call 其实从以前的懵懵懂懂到现在的明白,但是自己从来未下手去用过,最近比较闲。开始打一下 Jav…

何恺明等人提TensorMask框架:比肩Mask R-CNN,4D张量预测新突破
整理 | 刘畅、Jane 责编 | Jane 出品 | AI科技大本营(id:rgznai100) 看到今天要给大家介绍的论文,也许现在大家已经非常熟悉 Ross Girshic、Piotr Dollr 还有我们的大神何恺明的三人组了。没错,今天这篇重磅新作还是他们的产出&am…

init.rc的disabled含义
http://www.kandroid.org/android_pdk/bring_up.htmlhttp://androidnote.com/Article_show.asp?ArticleID649如果该服务选项中没有disabled定义,则在init.rc中解析到这个服务的时候,会马上执行这个服务。而如果在服务的选项中增加了disabled定义&#x…

【Qt】在ubuntu14.04上安装Qt5.12(失败)
注意 在ubuntu14.04上安装Qt5.12最终失败了,Qt5.12需要的libdbus库的版本和ubuntu14.04中的不一致,如果强行升级libdbus库版本,会导致系统桌面无法启动。 再次提示:不要按照下述步骤操作,它只是一个记录失败操作的笔记。 如果有大神安装成功了,还请不吝赐教。 1、安装Q…

80+机器学习数据集,还不快收藏
整理 | suiling 出品 | AI科技大本营(ID:rgznai100) 对于从事机器学习的小伙伴来说,机器学习必须以大量的数据为基础,否则构建再好的模型也不能达到你想要的效果。同时,不同质量的数据集也会影响到模型训练的效果。之…

SpringBoot+Docker+Git+Jenkins实现简易的持续集成和持续部署
前言 本篇文章引导你使用Jenkins部署[SpringBoot项目],同时使用Docker和Git实现简单的持续集成和持续部署。(项目地址:sso-merryyou) 流程图如下: push代码到Github触发WebHook。(因网络原因,本篇使用gitee…

LINUX下用C语言历遍目录 C语言列出目录
(被考了一题遍历目录,连需要的系统库函数我都不知道...打击中...)小羽给了一个答案:#include<stdio.h> #include<dirent.h>int main(int argc,char **argv) { DIR *p; struct dirent *dirp; if (argc ! 2) …

【linux】ubuntu14.04升级dbus到1.13.8,杯具了,无法进入桌面
一、问题描述 在ubuntu14.04中安装了Qt5.12,启动QtCreator报错,需要高版本的dbus。 将dbus升级到1.13.8后,杯具了,无法进入桌面 二、尝试解决 1、尝试恢复之前的版本(失败) 进入终端界面:Ct…

线下教育地位遭冲击?“AI+教育”公司同台讲了这些事实
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」7折优惠最后1天,请扫码咨询 ↑↑↑整理 | 一一出品 | AI科技大本营(ID:rgznai100)近日,网易新闻、网易有道、清华大学数据科学研究院在清华大学举办了“中国AI创新者论坛”。当…

mysql查看正在执行的sql语句
有2个方法: 1、使用processlist,但是有个弊端,就是只能查看正在执行的sql语句,对应历史记录,查看不到。好处是不用设置,不会保存。 -- use information_schema; -- show processlist; 或者: -- …

poj2472
最短路,bellman View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>using namespace std;#define inf 0x3f3f3f3f#define maxn 100#define maxm 10000#define eps 10e-9int n, m…
.net core 2.0 部署到centos 7生产环境
.netcore的跨平台如此之火,忍不住想试试 在linux下部署 .net 程序。 借鉴此篇博文:将ASP.NET Core应用程序部署至生产环境中(CentOS7) 虽然是借鉴,但过程坎坷。对从未使用过linux的我难度可想而知,但万事有…

微软沈向洋:写给AI新潮流——人工智能创作的五点建议
2019年EmTech 数字大会 本周,我有幸在旧金山举行的EmTech数字大会上发言,为大家讲述了当今人工智能发展的现状,以及未来的发展方向。我想与大家分享的是,面对新一轮的人工智能创新大潮,人们最该思考的五件大事。 1)技…

【Linux】在VirtualBox-6.0中安装Manjaro18.0
1、参考博客: VMware虚拟机下Manjaro17.1.6安装详细教程 2、在VirtualBox-6.0中安装Manjaro18.0 1)基本步骤和博客中安装17.1.6相同,下面只记录不同的。 * VirtualBox中没有Manjaro的选项,可以选择 ArchLinux; * 本…

netty里集成spring注入mysq连接池(一)
netty的性能非常高,能达到8000rps以上,见 各个web服务器的性能对比测试 1.准备好需要的jar包 spring.jar //spring包 netty-3.2.4.Final.jar // netty库 commons-dbcp.jar // dbcp数据库连接池 mysql-connector-java-5.1.6.jar // d…