leetcode:程序员面试技巧
起因
写在开头,脑袋铁定秀逗了,历时20多天,刷完了leetcode上面151道题目(当然很多是google的),感觉自己对算法和数据结构算是入门了,但仍然还有很多不清楚的地方,于是有了对于每道题目写分析的冲动。不过在看到leetcode上面的文章之后,决定先从翻译入手,顺带再写写自己做题的心得体会。今天是第一篇:程序员面试技巧。
如果你主修计算机科学,那么在你工作的时候会碰到很多有难度的编程问题。当你去找工作的时候,你会有很多的面试,而面试官通常很喜欢问你很多技术性的问题,以下就是三类主要的题型:
- 算法/数据结构
- 特定编程语言/通用的计算机知识
- 脑筋急转弯
后续我将详细的讨论上面这几点:
算法/数据结构
你必须深刻的理解以下几种数据结构:数组,链表,二叉树,哈希表等。你必须明确地知道什么时候该使用数组或者链表,譬如在实现一个列表翻转的时候。
面试官通常会问你一些算法问题用以检验你的编程解决问题能力,一些算法问题如下:
- 在一个句子里面反转单词。
- 在一个单词里面反转字母。(尝试使用迭代或者递归解决)
- 如何在一个列表里面找到重复的数字。
- 生成数字n的全排列。(小提示:递归)
- 找到两个排好序数组的中间值。(小提示:分治法)
- 如何进行拼写检查并验证单词。(小提示:编辑距离)
(译者吐槽,说句实话,上面几个问题如果没做题大部分我还真答不出来。)
特定编程语言/通用的计算机知识
如果你应聘的是C++职位,需要准备好应对很多C++的问题,其它编程语言也一样。如果你应聘的职位不需要特定的编程语言,那么你可能会被问到通用的计算机知识,譬如在堆和栈上面创建对象的区别。
我经常碰到的一些C++问题如下:
- 什么是虚函数?怎么实现的?使用虚函数会有啥性能问题?
- 什么是虚析构函数?为什么需要他们?如果你不实现成虚析构会出现什么问题?
- 什么是拷贝构造函数?它什么时候被调用?
- malloc和new的区别是什么?
(译者吐槽,上面这些感觉还算靠谱,至少没问虚拟继承是啥!我面试的时候通常还会问很多STL的东西,毕竟这在C++里面已经是很基础的了。Template这些的就算了,有时候都能把自己绕晕,还是别坑面试者了。)
脑筋急转弯
一些面试官很喜欢用一个脑筋急转弯来结束面试。这个其实很坑爹的,不过还是老老实实的准备一些吧。
一些经典的问题:
两个鸡蛋问题:
你有两个相同的鸡蛋,然后还有100层楼等你去爬。你需要知道最高到哪一层扔下鸡蛋,鸡蛋不会摔碎。(鸡蛋语录:为啥受伤的总是蛋蛋?)。很有可能第一层就碎了,也可能到了100层才碎。你需要知道最多尝试几次就能找到答案。
尽可能快的在一个byte里面反转bit。
你有5个相同的罐子,都装着球,其中有4个里面每个球都是重10g,另一个灌每个球重9g,你有一台电子称,只称一次,找到那个重9g球的罐子。
(译者吐槽,上面这些脑筋急转弯问题感觉就是算法问题,哪里是脑筋急转弯,明显的忽悠!)
总结
当然这是译者自己的,原文在上面就结束了,可以看到,作为一个程序员,我们其实是幸运的,因为我们能够接触如此多的挑战,并不断提升自己。可我们同时也是郁闷的,很多时候往往都有这样的错觉,数据结构和算法在很多工作中并不用到,但是为啥偏偏就面这个,linus貌似说过:“Bad programmers worry about the code. Good programmers worry about data structures and their relationships”,而在《大教堂与集市》这本书里面,作者直接说明“Smart data structures and dumb code works a lot better than the other way around”。有时候当写程序写多了,自然就发现算法和数据结构的重要性了。
另外,现在无论哪个公司,除非你是大牛级别的,面试几乎不会脱离上面那些东西,所以还是老老实实的学习吧,骚年。
leetcode:程序员面试技巧的更多相关文章
- PHP程序员面试技巧之口试题分享
网络上流传很广的一部分php工程师面试题目,有些phper们认为这些很形式,天下面试题目一大把,不能考核一个人的真实水平,其实细细研究起来,无论怎样,能存在就表明其有存在的价值.下面小编整理了12条P ...
- Java程序员面试技巧
Java 程序员面试技巧 对于每一个求职者,有一份优秀的简历是很必要的,企业通过简历的筛选,会给予求职者面试的机会.然而,很多求职者就是在面试过程中与钟情的工作失之交臂.如何在面试中取得成功呢?“细节 ...
- leetcode:程序猿面试技巧
起因 写在开头,脑袋铁定秀逗了,历时20多天,刷完了leetcode上面151道题目(当然非常多是google的),感觉自己对算法和数据结构算是入门了,但仍然还有非常多不清楚的地方,于是有了对于每道题 ...
- LeetCode题解汇总(包括剑指Offer和程序员面试金典,持续更新)
LeetCode题解汇总(持续更新,并将逐步迁移到本博客列表中) LeetCode题解分类汇总(包括剑指Offer和程序员面试金典) 剑指Offer 序号 题目 难度 03 数组中重复的数字 简单 0 ...
- LeetCode题解分类汇总(包括剑指Offer和程序员面试金典,持续更新)
LeetCode题解汇总(持续更新,并将逐步迁移到本博客列表中) 剑指Offer 数据结构 链表 序号 题目 难度 06 从尾到头打印链表 简单 18 删除链表的节点 简单 22 链表中倒数第k个节点 ...
- 程序员求职之道(《程序员面试笔试宝典》)之求职有用网站及QQ群一览表
技术学习网站 www.csdn.com www.iteye.com www.51cto.com http://www.cnblogs.com/ http://oj.leetcode.com/ http ...
- 《程序员面试金典(第5版)》【PDF】下载
<程序员面试金典(第5版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382252 内容简介 本书作者Gayle Laakma ...
- 新书出版 |《Oracle程序员面试笔试宝典》
新书出版 |<Oracle程序员面试笔试宝典> <Oracle程序员面试笔试宝典> 丛书[数据库 面试 笔试宝典]已在京东.淘宝和天猫预售,一共 5 本,目前市场上已有4本,丛 ...
- 两年Java程序员面试经验分享,从简历制作到面试总结!
前言 工作两年左右,实习一年左右,正式工作一年左右,其实挺尴尬的,高不成低不就.因此在面试许多公司,找到了目前最适合自己的公司之后.于是做一个关于面试的总结.希望能够给那些依旧在找工作的同学提供帮助. ...
随机推荐
- THUPC2017 抱大腿记
Day 0: 移步http://www.cnblogs.com/juruolty/p/6854848.html Day 1: 来到了清华大学. 见到了zrt巨巨. 又发了件衣服,我们开始看别的队的名字 ...
- LCD接口和RGB介绍
1. 介绍 Video的显示离不开LCD, 所以这里简单介绍一下LCD的接口和RGB LCD的全称是Liquid Crystal Display 的简称, 即液晶显示器LCD目前已经取代CRT, 成为 ...
- AQS简简单单过一遍
前言 回顾前面: 多线程三分钟就可以入个门了! Thread源码剖析 多线程基础必要知识点!看了学习多线程事半功倍 Java锁机制了解一下 只有光头才能变强! 本来我是打算在这章节中写Lock的子类实 ...
- redis分布式锁-SETNX实现
Redis有一系列的命令,特点是以NX结尾,NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists.这系列的命令非常有用,这里讲使用SETNX来实现分布式锁 ...
- python 类属性.方法 实例的基本用法
class man(): classify = "people"# 全局属性 def __init__(self,name,age,value,):#类方法 self.name = ...
- 日常实用css布局技巧汇总
1.单行完整显示,多行省略显示. .box { width: 100px; //必要 display: -webkit-box; //必要 font-size: 14px; line-heig ...
- centos 6安装opencv
昨天装好的,今天有些细节已经记不起来里,大致写一下吧. 首先,从opencv官网下载linux的opencv-2.4.9安装包,下载地址:http://jaist.dl.sourceforge.net ...
- 函数&语法
定义一个函数 加上一些算法,由自己定义的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 (). 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参 ...
- LintCode题解之斐波纳契数列
直接使用递归的方法会导致TLE,加个缓存就好了: public class Solution { private Integer[] buff = new Integer[1000]; /* * @p ...
- Tomcat安装及问题排查方法
简介: Apache Jakarta的开源项目 JSP/Servlet容器 安装: 1.1进入 Tomcat 官方下载地址 选择合适版本下载,并解压到本地. (备注)Tomcat 8.5 要求 JDK ...