当前位置: 首页 > 编程日记 > 正文

华为技术面试编码题_最佳技术编码面试准备书

华为技术面试编码题

Technical coding interviews are notoriously difficult — almost borderline quiz-like for those unprepared. It can sometimes be a daunting task to navigate all the technical coding preparation resources available online, and one might ask: is there a single book/resource that best prepares for technical coding interviews?

众所周知,技术编码面试非常困难-对于那些没有准备的人,几乎像是边界测验。 浏览所有在线可用的技术编码准备资源有时可能是一项艰巨的任务,并且有人可能会问: 是否有一本书/资源最能为技术编码面试做准备?

Best, is relative of course in this case. If you’re looking for a book that will teach you how to solve any coding question, guides you on how to design something like Instagram that scales to a billion users, and makes your sandwich while you’re at it, then this book definitely isn’t it.

最好 ,在这种情况下当然是相对的。 如果您正在寻找一本可以教您如何解决任何编码问题的书,并指导您如何设计可扩展至十亿用户的Instagram之类的东西,并在您使用时做三明治,那么这本书绝对是是不是

But for polishing your technical chops and making sure you’re well prepared to face the programming challenges in an interview, this book comes darn close to it.

但是,为了完善您的技术知识,并确保您准备好在面试中面对编程方面的挑战,这本书可真是天花乱坠。

In today’s book review, I go over in detail the good and the bad of one of the top-selling books on Amazon for technical coding interviews: Elements of Programming Interviews (a.k.a EPI, and it’ll be referred to as such in the rest of this article).

在今天的书评,我去了详细 ,对亚马逊最畅销书的技术编码采访一个的 : 元素编程访谈 (又名EPI,它会在剩下的被称为这样的本文)。

这本书是关于什么的? (What is this book about?)

EPI is a book that focuses on preparing for technical software engineering interview questions that are commonly asked at tech companies. If you’re looking for a position as a software engineer, this book will have something for you.

EPI是一本书,着重于准备技术软件工程面试问题,这些问题在技术公司中经常问到。 如果您正在寻找软件工程师的职位,这本书将为您提供一些帮助。

EPI was written by 3 folks who’ve worked across some of the best-known tech companies in the world, the likes of Facebook, Google, Uber, and Microsoft. The authors have very strong technical backgrounds, and this is evidenced by the technical focus in the contents of the book.

EPI由3个人共同撰写,他们曾在全球一些最知名的科技公司工作过,例如Facebook,Google,Uber和Microsoft。 作者具有很强的技术背景,本书内容中的技术重点证明了这一点。

The book itself is highly technical in nature and deep dives into fundamental computer science. The types of technical coding questions vary widely from string manipulation to graph traversals. The book also offers concrete tips and tricks for solving specific types of coding problems, and includes a cheatsheet to help ace technical questions.

该书本身具有很高的技术性,并且深入研究了基础计算机科学。 从字符串处理到图形遍历,技术编码问题的类型千差万别。 该书还提供了解决特定类型的编码问题的具体技巧和窍门,并提供了一份备忘单,以帮助解决一些技术问题。

善良 (The Good)

In short: EPI is a highly technical book that is well-suited for anyone looking to prepare for technical coding questions that revolve around data structures and algorithms.

简而言之:EPI是一本技术性很强的书,非常适合希望为涉及数据结构和算法的技术编码问题做准备的任何人。

The things that I particularly enjoyed:

我特别喜欢的东西:

  • has many questions (300+) with detailed answers, compared to another popular book (Cracking The Coding Interview) that only has 170+

    与另一本只有170+的热门书籍(《 Cracking The Coding Interview》)相比,有很多问题(300+)都有详细的答案
  • comes in 3 different versions: Java, Python and C++. Suitable for people who want to use the language of their choice

    共有3种不同版本:Java,Python和C ++。 适合想要使用自己选择的语言的人
  • has a great cheatsheet (Chapter 4) that summarizes all the techniques and data structures you’d need

    有一个很棒的备忘单(第4章),总结了您需要的所有技术和数据结构
  • covers in detail every single data structure you need, algorithms you should know, and techniques you should know in a simple, understandable format

    以简单易懂的格式详细介绍了您需要的每个数据结构,应了解的算法以及应了解的技术
  • covers relevant technical topics you might get asked in a coding interview, like what is TCP/IP, how the Internet works, and how to capture relationships between different entities in schema design

    涵盖您可能会在编码访谈中被问到的相关技术主题,例如什么是TCP / IP,Internet如何工作以及如何在模式设计中捕获不同实体之间的关系

Those are some of the top-level points I enjoyed about the book. What I really enjoy is that the answers are very, very well constructed.

这些是我喜欢这本书的一些顶级要点。 我真正喜欢的是答案的构造非常非常好。

The answers often take a brute force/simplistic approach to the problems. The authors then provide concrete examples of how you can improve on the brute force approach. With each iteration, the authors point out where the limitations are and how you can solve them with incremental optimizations.

答案通常采用蛮力/简单的方法来解决问题。 然后,作者提供了有关如何改进蛮力方法的具体示例。 在每次迭代中,作者指出了限制在哪里以及如何使用增量优化来解决它们。

For example, EPI explains how to detect a cycle in a linked list. The first approach: use a hash map to store every node you traverse, and then check against the hash map to see if you’ve seen it. This does the job, albeit it takes additional space (so-called O(N) space complexity and O(N) time complexity).

例如,EPI解释了如何在链表中检测循环。 第一种方法:使用哈希图存储遍历的每个节点,然后对照哈希图检查是否已看到它。 尽管这样做需要额外的空间(即所谓的O(N)空间复杂度和O(N)时间复杂度),但这样做确实可行。

The book then points out that the additional space is not required, and suggests that detecting cycles in a linked list can be done without additional space by manipulating the pointers instead.

然后,该书指出不需要额外的空间,并建议通过操作指针来检测链接列表中的循环而无需额外的空间。

It takes that same approach in explaining almost all the questions, so everyone can understand how to get from a rough solution to an optimized one.

几乎所有问题都采用相同的方法进行解释,因此每个人都可以理解如何从一个粗略的解决方案过渡到一个优化的解决方案。

For someone who’s rusty and looking to start preparing for interviews, EPI does a great job — every chapter starts off with a summary of the data structure or algorithm that you will learn, why the data structure is special, what are the strengths/weaknesses of said data structure and what you need to take note of.

对于一个生疏且想要准备面试的人,EPI做得很好-每章都以您将要学习的数据结构或算法的摘要开始,为什么数据结构特别,该方法的优点/缺点是什么?数据结构以及您需要注意的内容。

In short, EPI is the notebook I wished I had when I was preparing for technical interviews. This is the book I’d give a friend who’s looking to prepare for technical interviews — aside from my best-selling interviewing course (Acing The Tech Interview), which prepares any candidate for the entire interview experience from resume preparation, behavioral questions to how to solve coding problems creatively. Classes fill up fast, so book your slot here today.

简而言之,EPI是我准备进行技术面试时希望拥有的笔记本。 除了我最畅销的面试课程 (Acing The Tech Interview)之外,这本书是我送给一位希望为技术面试做准备的朋友的书,该课程为从面试准备,行为问题到如何进行面试的所有候选人做准备创造性地解决编码问题。 上课时间很快,所以今天就在这里预订您的位置。

坏人 (The Bad)

EPI has its downsides as well. Being a highly technical book, this means the book has its focus set on coding questions.

EPI也有缺点。 作为一本技术性很强的书,这意味着这本书的重点是编码问题。

This, inadvertently, means that the book falls short in terms of other aspects of the technical interview process which are, arguably, just as important — offer negotiation, how to write a persuasive resume, what to do when you get an offer, how to handle behavioral questions etc.

这无意间意味着这本书在技术面试过程的其他方面都达不到要求,这些方面可以说是同样重要的-报价谈判,如何写有说服力的简历,获得报价时该怎么做,如何处理行为问题等

In addition, the book goes into deep detail with data structures and algorithms, but only provides a high-level overview, to the point of being confusing due to lack of context, of various other important concepts like SQL, NoSQL, how to design a proper schema for a simple application and more.

此外,本书深入介绍了数据结构和算法,但仅提供了高层次的概述,以至于由于缺少上下文而使其他重要概念(如SQL,NoSQL,如何设计一个适用于简单应用程序的适当模式等等。

The book sort of covers SQL design by explaining how to structure tables to capture entity relationships, but it does not explain more about JOINs or how to query the tables properly. I think understanding the what (SQL tables) is just as important as the how (queries).

本书通过解释如何构造表以捕获实体关系来涵盖SQL设计,但并未详细介绍JOIN或如何正确查询表。 我认为了解什么 (SQL表)与如何 (查询)同等重要。

EPI also has a chapter on systems designs, but the chapter does not cover distributed designs. I would’ve liked it better if the book had described in more details what distributed systems are or where to find more information about these.

EPI还有一章涉及系统设计,但该章未涵盖分布式设计。 如果本书更详细地描述了什么是分布式系统或在哪里可以找到有关这些的更多信息,我会更喜欢它。

这对我来说是一本好书吗? (Is this a good book for me?)

If you have ~$40 to spare and a big appetite to learn, I’d say so.

如果您有40美元的积蓄和足够的学习兴趣,我会这样说。

The book sells for $36 on average (there are 3 versions). This book is highly rated on Amazon.com, with an average of 4.53 stars across all 3 versions. The stats are as follows:

该书平均售价为36美元(共有3种版本)。 这本书在Amazon.com上获得了高度评价,在所有3个版本中平均获得4.53星。 统计信息如下:

On Amazon.com:

在Amazon.com上 :

3 versions (as of March 12):

3个版本(截至3月12日):

  • Python: 169 ratings 4.3 ave

    Python:169评分4.3平均
  • Java: 203 ratings 4.6 ave

    Java:203评分4.6平均
  • C++: 436 ratings 4.7 ave

    C ++:436评分4.7平均

In aggregate, there were a total of 808 reviews.

总计,共有808条评论。

Some of the reviews:

一些评论:

“.. the best algorithm/data structure I ever took”
“ ..我曾经尝试过的最佳算法/数据结构”
“the code is of high quality, using meaningful variable names”
“代码质量高,使用有意义的变量名”
“this is a must-have book”
“这是一本必不可少的书”

现在,你应该买吗? (Now, should you buy it?)

I think that EPI is one of the best resources to prepare for technical coding interviews, bar none. Regardless of your experience level, there’s something in there for you. I particularly enjoy reading the book for its clear and concise explanations, and I use this book as a reference in my programming course.

我认为, EPI是准备技术编码面试的最佳资源之一无所不包。 无论您的经验水平如何,都有一些适合您的东西。 我特别喜欢阅读本书,以获得简洁明了的解释,并且在本书编程课程中将其用作参考。

If you want all the data structures, algorithms you need to know in a single, easy-to-read book, then EPI is the book for you.

如果您希望在一本简单易读的书中需要了解所有的数据结构和算法,那么EPI是适合您的书。

For distributed systems designs, I recommend looking elsewhere. A good start is Designing Data Intensive Applications.

对于分布式系统设计,我建议在其他地方查找。 设计数据密集型应用程序是一个好的开始。

I love it for the depth and insights, and I recommend it to many students who are taking my courses as well.

我喜欢它的深度和洞察力,并且向很多正在学习我的课程的学生推荐它。

我推荐的资源 (Resources I Recommend)

Designing Data Intensive Applications — great resource for learning about distributed systems and how large-scale systems work.

设计数据密集型应用程序 -学习分布式系统以及大型系统如何工作的绝佳资源。

Acing The Technical Interview — my best-selling personal coaching course on how to ace technical interviews. We cover resume review, technical coding interview, behavioral questions and more.

进行技术面试 -我最畅销的关于如何进行技术面试的私人教练课程。 我们涵盖简历审查,技术编码面试,行为问题等。

Acing The Distributed Systems Design Interview — my personal coaching course on designing large scale distributed systems. Learn about how to design features like Instagram Stories, Groupon, movie streaming sites like Netflix at scale.

接受分布式系统设计访谈 —我的个人指导课程,设计大型分布式系统。 了解有关如何大规模设计Instagram Stories,Groupon和Netflix等电影流媒体网站的功能。

翻译自: https://www.freecodecamp.org/news/is-this-the-best-book-for-coding-interview-preparation/

华为技术面试编码题

相关文章:

仅需6步,教你轻易撕掉app开发框架的神秘面纱(3):构造具有个人特色的MVP模式

1. MVP的问题 之前我们说过MVP模式最大的问题在于:每写一个Activity/Fragment需要写4个对应的文件,对于一个简易的app框架来说太麻烦了。所以我们需要对MVP进行一定的简化。 关于MVP模式是什么及其简单实现,可以参照:浅谈 MVP i…

Java进阶之自动拆箱与自动装箱

序. java基本类型介绍 java中,基本数据类型一共有8种,详细信息如下表: 类型大小范围默认值byte8-128 - 1270short16-32768 - 327680int32-2147483648-21474836480long64-9233372036854477808-92333720368544778080float32-3.40292347E38-3.40…

Ceilometer Polling Performance Improvement

Ceilometer的数据采集agent会定期对nova/keystone/neutron/cinder等服务调用其API的获取信息,默认是20秒一次, # Polling interval for pipeline file configuration in seconds.# (integer value)#pipeline_polling_interval 20 这在大规模部署中会对O…

vue使用pwa_如何使用HTML,CSS和JavaScript从头开始构建PWA

vue使用pwaProgressive web apps are a way to bring that native app feeling to a traditional web app. With PWAs we can enhance our website with mobile app features which increase usability and offer a great user experience.渐进式Web应用程序是一种将本地应用程…

仅需6步,教你轻易撕掉app开发框架的神秘面纱(4):网络模块的封装

程序框架确定了,还需要封装网络模块。 一个丰富多彩的APP少不了网络资源的支持,毕竟用户数据要存储,用户之间也要交互,用户行为要统计等等。 使用开源框架 俗话说得好,轮子多了路好走,我们不需要自己造轮…

结构体成员数组不定长如何实现

【目的】 定义一个结构体类,其中的成员变量数组长度不定,根据实例化的对象指定长度,所以想到用指针实现 【现状】 指针可以指向任意长度数组,但结构体类只分配指针本身4字节长度,所以无法扩展 1 /**2 ****************…

团队项目:二次开发

至此,我们有了初步的与人合作经验,接下来投入到更大的团队中去。 也具备了一定的个人能力,能将自己的代码进行测试。接下来尝试在别人已有的基础上进行开发。 上一界51冯美欣同学的项目:http://www.cnblogs.com/maxx/ 1.每个团队从…

arduino 呼吸灯_如何改善您的Arduino呼吸机:用于临时COVID-19呼吸机设计的RTS和SCS简介...

arduino 呼吸灯The world as we know it was recently taken by storm. That storm was the outbreak of the COVID-19 pandemic. This has in turn created a shortage of ventilators world wide which has led many people to foray into the world of ventilator design. 我…

reboot 百度网盘资源

提醒:同志们这是记录,视频文件是加密的,请勿下载 基础班第十三期:http://pan.baidu.com/s/1c2GcvKG 密码: 743j 基础班第十四期链接: http://pan.baidu.com/s/1c24AYa8 密码: x2sh 第十五期: https://pan.baidu.com…

仅需6步,教你轻易撕掉app开发框架的神秘面纱(5):数据持久化

遇到的问题 有的时候程序中需要全局皆可访问的变量,比如:用户是否登录,用户个人信息(用户名,地区,生日),或者一些其他信息如:是否是首次登录,是否需要显示新手引导等等。 其中有些…

响应因特网端口ping命令_如何使用Ping命令识别基本的Internet问题

响应因特网端口ping命令Next time you call your help desk, do you want to wow them with your networking knowledge? Using a command called “ping”, built right into your existing Mac, Windows, or Linux computer, will help identify basic connection problems.…

Android 常见工具类封装

1,MD5工具类: public class MD5Util {public final static String MD5(String s) {char hexDigits[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,a, b, c, d, e, f };try {byte[] btInput s.getBytes();// 获得MD5摘要算法的 MessageDigest 对象MessageDigest md…

keras系列︱图像多分类训练与利用bottleneck features进行微调(三)

引自:http://blog.csdn.net/sinat_26917383/article/details/72861152 中文文档:http://keras-cn.readthedocs.io/en/latest/ 官方文档:https://keras.io/ 文档主要是以keras2.0。 训练、训练主要就”练“嘛,所以堆几个案例就知…

LIKE 操作符

LIKE 操作符LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。SQL LIKE 操作符语法SELECT column_name(s)FROM table_nameWHERE column_name LIKE pattern原始的表 (用在例子中的):Persons 表:IdLastNameFirstNameAddressCity1AdamsJohnOxford StreetLondon2Bush…

服务器云ide_语言服务器协议如何影响IDE的未来

服务器云ideThe release of Visual Studio Code single-handedly impacted the developer ecosystem in such a way that theres no going back now. Its open source, free, and most importantly, a super powerful tool. Visual Studio Code的发布以一种无可匹敌的方式对开发…

仅需6步,教你轻易撕掉app开发框架的神秘面纱(6):各种公共方法及工具类的封装

为什么要封装公共方法 封装公共方法有2方面的原因: 一是功能方面的原因:有些方法很多地方都会用,而且它输入输出明确,并且跟业务逻辑无关。比如检查用户是否登录,检查某串数字是否为合法的手机号。像这种方法就应该封…

MySQL优化配置之query_cache_size

原理MySQL查询缓存保存查询返回的完整结果。当查询命中该缓存,会立刻返回结果,跳过了解析,优化和执行阶段。 查询缓存会跟踪查询中涉及的每个表,如果这写表发生变化,那么和这个表相关的所有缓存都将失效。 但是随着服…

request.getSession()

request.getSession(); 与request.getSession(false);区别 服务器把session信息发送给浏览器 浏览器会将session信息存入本地cookie中 服务器本地内存中也会留一个此session信息 以后用户发送请求时 浏览器都会把session信息发送给服务器 服务器会依照浏览器发送过来的se…

alpine 交互sh_在这个免费的交互式教程中学习Alpine JS

alpine 交互shAlpine.js is a rugged, minimal framework for composing Javascript behavior in your markup. Thats right, in your markup! Alpine.js是一个坚固的最小框架,用于在标记中构成Javascript行为。 是的,在您的标记中! It allo…

浅谈 MVP in Android

一、概述 对于MVP(Model View Presenter),大多数人都能说出一二:“MVC的演化版本”,“让Model和View完全解耦”等等。本篇博文仅是为了做下记录,提出一些自己的看法,和帮助大家如何针对一个Acti…

test markdown

test test public void main(String[] args){System.out.println("test"); } 转载于:https://www.cnblogs.com/cozybz/p/5427053.html

java开发工具对比eclipse·myeclipse·idea

eclipse:不说了,习惯了 myeclipse:MyEclipse更适合企业开发者,更团队开发 idea:idea更适合个人开发者,细节优化更好转载于:https://www.cnblogs.com/gjack/p/8136964.html

软件测试质量过程检测文档_如何编写实际上有效的质量检查文档

软件测试质量过程检测文档A software product is like an airplane: it must undergo a technical check before launch.软件产品就像飞机:必须在发射前经过技术检查。 Quality Assurance is a necessary step towards launching a successful software product. I…

Android深度探索--HAL与驱动开发----第一章读书笔记

1.1 Android拥有非常完善的系统构架可以分为四层: 第一层:Linux内核。主要包括驱动程序以及管理内存、进程、电源等资源的程序 第二层:C/C代码库。主要包括Linux的.so文件以及嵌入到APK程序中的NDK代码 第三层:android SDK API …

[NOI2011]Noi嘉年华

题解:我们设计状态方程如下: num[i][j]表示从时间i到j中有多少个 pre[i][j]表示时间1~i中,A选了j个时的B能选的数量的最大值. nex[i][j]表示时间i~cnt中,A选了j个时的B能选的数量的最大值. mus[i][j]表示从时间i到j的保证选时,A和B选的数量中的较小值的最大值. ①对于num数组直…

只有20%的iOS程序员能看懂:详解intrinsicContentSize 及 约束优先级/content Hugging/content Compression Resistance

在了解intrinsicContentSize之前,我们需要先了解2个概念: AutoLayout在做什么约束优先级是什么意思。 如果不了解这两个概念,看intinsic content size没有任何意义。 注:由于上面这几个概念都是针对UIView或其子类(UILabel&…

redux rxjs_可观察的RxJS和Redux入门指南

redux rxjsRedux-Observable is an RxJS-based middleware for Redux that allows developers to work with async actions. Its an alternative to redux-thunk and redux-saga.Redux-Observable是Redux的基于RxJS的中间件,允许开发人员使用异步操作。 它是redux-t…

javascript数组排序和prototype详解

原型的概念::原型对象里的所有属性和方法 被所有构造函数实例化出来的对象所共享,类似于java中的 static 正因为共享所以单一的操作 就会影响了全局,因此使用时需注意 基于prototype:为数组扩展方法 //获取数组最大值function get…

Qt 在Label上面绘制罗盘

自己写的一个小小的电子罗盘的一个小程序,不过是项目的一部分,只可以贴绘制部分代码 效果如下图 首先开始自己写的时候,虽然知道Qt 的坐标系是从左上角开始的,所以,使用了算法,在绘制后,在移动回…

终极方案!解决正确设置LaunchImage后仍然不显示的问题

对于如何设置LaunchImage,网络上有各种各样的教程。 主要分2点: 1. 正确设置图片尺寸 2. 取消LaunchScreen.xib 但是经过上述步骤之后,你觉得完全没有问题了,但是仍然无法显示LaunchImage。 或者,你在多个模拟器上…