互联网技术笔试总通不过?leetcode刷对了么
https://36kr.com/p/5084645
编者按:本文来自逆行求职(ID:nixingjihua)。
对所有求职技术岗位的童鞋来说,有这么一样东西恐怕做梦都会梦到【Leetcode】,绕都绕不过去的程序员刷题神器。
“哲学是世界观和方法论的统一,是具体科学知识的概括与总结。”
今天,逆行君就带你从世界观和方法论两方面走进“leetcode”
leetcode之世界观
什么是leetcode
简单来说,leetcode是一个美国的在线编程网站,它收集了各大公司的经典算法面试题,用户可以选择不同的语言进行代码的在线编写、编译和调试。
Leetcode目前有450题(依稀记得去年还只有340多道啊),分为三个难度easy、medium、和hard。题目大致分为两类:
1、基础算法的知识。
这些题里面有大量的算法题,解这些题都是有套路的,不是用递归(例如深度优先DFS,广度优先BFS),就是要用动态规划(Dynamic Programming),或是拆半查找(Binary Search),或是回溯(Back tracing),或是分治法(Divide and Conquer),还有大量的二叉树,数组、链表、字符串和hash表的操作。通过做这些题能让你对这些最基础的算法的思路有非常扎实的了解和训练。
2、编程题。比如:atoi,strstr,add two num,括号匹配,字符串乘法,通配符匹配,文件路径简化,Text Justification,反转单词等等,这些题的Edge Case,Corner Case有很多。这些题需要你想清楚了再做,只要你稍有疏忽,就会有几个case让你痛不欲生,而且一不小心就会让你的代码会写得又臭又长,无法阅读。通过做这些题,可以非常好的训练你对各种情况的考虑,以及你对程序代码组织的掌控(其实就是其中的状态变量)。
为什么一定是leetcode
Leetcode是注重算法的刷题工具,在考算法的笔试面试中,碰见原题的概率可算是非常大:
@飞龙:面试向算法,感觉没有比leetcode更合适的训练方法了。短期刷用处也很大,如果你对代码有感觉的话,一些巧妙的解法你看一眼就会忘不了。
@anonymity:参加了一些公司的笔试,看到过leetcode上的原题或近似题。最后,从了某公司的美国总部软件工程师的offer。学生们项目经验少,只能考算法。刷题很有用。
@yuquan wang:
会leetcode,不一定能拿offer
不会leetcode,基本拿不了offer.
leetcode之方法论
简而言之,就是,leetcode到底要怎么刷?
刷题的顺序,可以按不同的难度等级练习,先把easy的题目练完,再进阶medium,最后的hard就量力而为。广度优先的练习会让你快速掌握大部分题型,这样应对突发的面试笔试需求也可以信心十足,不会出现还没有练过的地方。
还不错是不是。
当然,要是按编号刷题太无聊,你也可以按Tag进行练习,举个例子,比如复习链表的内容,就选Linked List这部分的23个题目,刷完之后可以再总结一下常用的方法和数据结构构造方式。Tag分类在网页右边,如图:
不过按Tag来刷,也可能会在惯性思维下,去想关于Tag的算法。比如138. Copy List with Random Pointer(深拷贝链表),Tag:Hash Table。尽管是一个hard的题目,但是已经提示hash表,怎么样都会想到建立映射关系(而且目前最好的解法并不是使用的hash table)。
最后提供一种综合性思路,也就是在各个Tag分类里按不同的难度刷题,这样就既有广度也有深度了。
我们还想给你一些小技巧
01 善用Github
不少人都会一边做Leetcode的题目一边在Github上repo,这样不仅对自己的解题思路有所记录,还能方便查找。不少刷Leetcode的高手,他们的答案也是写在自己的Github上,你也可以通过Github成功找到他们。
02 善用Leetcode的讨论区
同一道题的解法往往不止一种,甚至思路和方式都会完全不同,例如这位同学所说:“边刷边感叹天外有天,比如有道很简单的一个int array只有一个数只出现了一次,其他数都是出现了两次,找出只出现一次的数。看到讨论区的答案是把所有element XOR起来,顿时膜拜” 所以一般很简单的题,也有必要看看讨论区的优秀答案,毕竟提升自己的算法水平才是正义目标啊。
重点,90%同学都不知道的讨论区在的正确打开方式:
从每道题目下方的Discuss按钮里点进去,才是每道题对应的讨论!
03 徒手写代码的能力
很多同学在Leetcode上编得风生水起,但在笔试面试中遇到面试官拿出一张A4白纸,可能就懵逼了,改改涂涂半天写不完整。这个时候徒手写代码的能力就尤为突出了,无论你是先手写完代码再敲到网页上,还是代码AC(通过)后再默写一遍,徒手代码能力都是值得训练的,这也是你的整体思维和架构能力的体现。
04 善用碎片时间
有很多同学由于实习或者其他原因没有办法拿出大段时间来刷leetcode,这里为实习/工作/研究僧提供一个“一天一题时间表”:
1、早上起来出门前,迅速看一道题。
2.在拥挤的交通工具上,超脱自己,“冥想”题目。
3. 题目so easy,手机提交。
4. 短时不能通关?那就一直放在脑子里面想,到了公司/实验室,基本答案就可以动动手写在电脑上了。
5. 如前文所说,将思路和解决方案放到github上。
6. 晚上睡觉前,反思一下是不是最优解法,有时间的话看看discuss,没时间,把自己的解法理顺了,涉及的知识点再过一遍脑子。
05 菜鸟小白专用技巧栏目
对于基础不扎实的菜鸟选手,逆行君并不推荐按照前面提示的难度/tag进行刷题操作,有可能受思维暗示的影响不说,效率也会比较低下。
第一次刷,首先攻克array,string,tree,linkedlist,math这五个tag,好处在于可以迅速的在规避思维暗示的同时,迅速巩固数据结构的知识,或许还能掌握某种数据结构的小技巧。
每个tag内部就按照easy-medium-hard的顺序做,这样最开始一天刷10道easy,后面熟了这个数据结构一天也能刷5道难题,不会在初期被挫的刷不下去,培养一种刷题的“爽”感。
这个顺序完成之后,你已经完成了25%以上的进度条了,之后翻转顺序,从hard向easy进行刷题,开始会有点小虐,但后面就会效率奇高。刷完第一遍之后,就可以愉快的进行全tag刷题round 2了~
免费题解在这里
为了保证大家的刷题心情,大部分的题目的答案整理及分析,我们都给准备好了,画风是这样:
更多题解可以关注逆行求职(id:nixingjihua),回复leetcode获得。
互联网技术笔试总通不过?leetcode刷对了么的更多相关文章
- leetcode 刷500道题,笔试/面试稳过吗?谈一谈这些年来算法的学习
想要学习算法.应付笔试或者应付面试手撕算法题,相信大部分人都会去刷 Leetcode,有读者问?如果我在 leetcode 坚持刷它个 500 道题,以后笔试/面试稳吗? 这里我说下我的个人看法,我认 ...
- 看完互联网大佬的「LeetCode 刷题手册」, 手撕了 400 道 Leetcode 算法题
大家好,我是 程序员小熊 ,来自 大厂 的程序猿.相信绝大部分程序猿都有一个进大厂的梦想,但相较于以前,目前大厂的面试,只要是研发相关岗位,算法题基本少不了,所以现在很多人都会去刷 Leetcode ...
- LeetCode刷题的一点个人建议和心得
目录 1. 为什么我们要刷LeetCode? 2. LeetCode的现状和问题 3. 本文的初衷 4. LeetCode刷题建议 4.1入门数据结构,打基础阶段 4.2 建立 ...
- leetcode刷题--两数之和(简单)
一.序言 第一次刷leetcode的题,之前从来没有刷题然后去面试的概念,直到临近秋招,或许是秋招结束的时候才有这个意识,原来面试是需要刷题的,面试问的问题都是千篇一律的,只要刷够了题就差不多了,当然 ...
- LeetCode刷题指南(字符串)
作者:CYC2018 文章链接:https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Leetcode+%E9%A2%98%E8%A7% ...
- LeetCode 刷题指南(1):为什么要刷题
虽然刷题一直饱受诟病,不过不可否认刷题确实能锻炼我们的编程能力,相信每个认真刷题的人都会有体会.现在提供在线编程评测的平台有很多,比较有名的有 hihocoder,LintCode,以及这里我们关注的 ...
- 简单的自动化使用--使用selenium实现学习通网站的刷慕课程序。注释空格加代码大概200行不到
简单的自动化使用--使用selenium实现学习通网站的刷慕课程序.注释空格加代码大概200行不到 相见恨晚啊 github地址 环境Python3.6 + pycharm + chrom浏览器 + ...
- LeetCode刷题总结-树篇(上)
引子:刷题的过程可能是枯燥的,但程序员们的日常确不乏趣味.分享一则LeetCode上名为<打家劫舍 |||>题目的评论: 如有兴趣可以从此题为起点,去LeetCode开启刷题之 ...
- LeetCode刷题总结-链表
LeetCode刷题总结-链表 一.链表 链表分为单向链表.单向循环链表和双向链表,一下以单向链表为例实现单向链表的节点实现和单链表的基本操作. 单向链表 单向链表也叫单链表,是链表中最简单的 ...
随机推荐
- leetcode-mid-sorting and searching-162. Find Peak Element
mycode 54.81% class Solution(object): def findPeakElement(self, nums): """ :type num ...
- 洛谷P5022&P5049 旅行(及其数据加强版)
旅行(不是加强版) 加强版 加强版数据范围: 我们注意到 也就是说要么是个树,要么是个基环树 60pts 这60分是个树,可以简单的贪心想到每次都走子树中编号最小的那个,并且把1作为根 dfs练手题 ...
- leetcode 102.Binary Tree Level Order Traversal 二叉树的层次遍历
基础为用队列实现二叉树的层序遍历,本题变体是分别存储某一层的元素,那么只要知道,每一层的元素都是上一层的子元素,那么只要在while循环里面加个for循环,将当前队列的值(即本层元素)全部访问后再执行 ...
- c语言字串指针 char*
c语言中 char* 不仅能存字符串,还能存二进制数据,所以它的用途因使用者而定. char* 在很多使用场景下,是需要存储ascii码为0的元素的,这样就必须注意一个问题,那就是char*的长度. ...
- SSLPinning简介,使用Xposed+JustTrustMe来突破SSL Pinning
0x00 前面 如果你是一干Web安全的,当你在测试目前大多数的手机APP应用程序时,你一定遇到过burpsuite无法抓到数据包的情况,开始你以为只是https的问题,但是当你使用了burpsuit ...
- DWIN串口屏的使用
学习需要,根据dwin的官方文档及网络资料整理而来. 一. 基础知识理解 1.1.变量地址和描述指针 VP(变量地址)和SP(描述指针)通常是指显示变量功能的两种定义,两者共用0000到6FFF地址 ...
- MySQL学习-MySQL内置功能_索引与慢查询
1.索引基础 1.1 介绍 (1.)为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂 ...
- Tensorflow Learning1 模型的保存和恢复
CKPT->pb Demo 解析 tensor name 和 node name 的区别 Pb 的恢复 CKPT->pb tensorflow的模型保存有两种形式: 1. ckpt:可以恢 ...
- 20191110 Spring Boot官方文档学习(4.1)
4. Spring Boot功能 4.1.Spring应用 便捷的启动方式: public static void main(String[] args) { SpringApplication.ru ...
- lograte切割tengine日志
记录 /srv/logs/nginx/*log { create 0644 nobody nobody daily rotate 10 missingok notifempty compress sh ...