因为日常工作中经常使用到this,而且在JavaScript中this的指向问题也很容易让人混淆一部分知识。...这段时间翻阅了一些书籍也查阅了网上一些资料然后结合自己的经验,为了能让自己更好的理解this,进而总结一篇文章。 #this 是什么 this是 JavaScript 语言的一个关键字。...#深入理解 正因为比较难理解,所以this指向也是面试时最容易遇到的问题,比如下面这道我曾遇到的一个面试题: var length = 10; function fn(){ console.log(...arguments这种特殊的数组的理解。...只有真正理解了这些才能正确的判断this究竟指向了谁。 所以,只有对JavaScript中的各项知识点深入理解,才会对this的概念越加清晰。
要想做到灵活使用,得首先明白它的本质。今天,我试着用最通俗的语言,几行代码和小例子来解释装饰器的本质。...__name__,)) return g 下面是最重要的代码: myfun = call_print(myfun) myfun2 = call_print(myfun2) 大家看明白吗?...myfun2 function 你看,这与装饰器的实现效果是一模一样的。...装饰器的写法可能更加直观些,所以不用显示的这样赋值:myfun = call_print(myfun),myfun2 = call_print(myfun2),但是装饰器的这种封装,猛一看,有些不好理解...怎么样,相信你会有一些收获,恭喜你!这是我的原创,如果可以,帮我分享一下吧。 ----
我会先给出我对精通Python的理解,然后给出一些Python中有难度的知识点。如果大家在看完我这篇回答之前,已经充分理解了我列出的各个知识点,那么,我相信你已经算是精通Python了。...这段代码虽然看起来都是在对全局变量操作,其实,还涉及到命名空间和模块的工作原理,如果不能很清楚的知道发生了什么,可能需要补充一下自己的知识了。 四....关于数组和链表的知识,我想大家都知道了,这里就不再赘述。如果我们在写代码的过程中,对于自己最常用的数据结构,连它的时间复杂度都不知道,我们又怎么能够写出高效的代码呢。...在写Python代码的时候,如果你需要一个链表,你应该使用标准库collections中的deque, deque是双向链表。标准库里面有一个queue,看起来和deque有点像,它们是什么关系?...Python中的else 最后我们来看一个对Python语言优缺点理解的例子,即Python中增加的两个else。相对于C++语言或者Java语言,Python语法中多了两个else。
推荐 b 站的王道考研课程,可以二倍速快速过一遍,配合讲义标注一些重点,日后可以反复观看。 这些基础不仅能方便日后学习编程语言和扩展知识时的理解,在秋招面试中也经常会涉及。...这里重点提一下算法 算法和数据结构课程中涉及的知识都是非常基础的,一定要熟稔于心。在这个基础上可以刷 leetcode 题来提升自己的能力。...下面举一些常见的项目: 网络库/web 服务器:基本 C++的人手一个,牛客也有卖类似的课程,我也是参考 muduo 写的。...再比如一些大数相加,用 C++只能用字符串或者链表来做加法,python 就不用考虑溢出 选择合适的数据结构,比如之前的笔试题:如果按题目的意图,可能你要建立链表节点的结构,然后针对输入去解析数字,构建链表...因为自己导师比较放养,给了我很多空闲的时间可以去学习自己感兴趣的东西,也真的非常感谢我的导师,希望能让我顺利毕业哈哈哈。后续我也会整理一些面经,希望能帮助到大家。
作者 | 梁唐 大家好,我是梁唐。 今天来和大家聊聊C++当中一个非常重要的STL库,叫做vector。 为什么要讲这个?...因为这个库非常重要,学会了它对于刷题、笔试非常有帮助,熟悉使用可以大大简化代码量。有同学会说,为什么一定要用C++刷题,其他语言不行么? 其实也行,但C++最专业,其他语言难免遇到各种问题。...在C++ STL当中也非常类似,只不过我们也可以有不同的理解,比如可以理解成一个可变长度的数组。众所周知,数组的长度都是固定的,链表的长度是可以随意增长的。...当我们不知道有多少元素需要存储的时候,使用可变长度的数据结构就会非常舒服。 但使用链表的话访问起来非常不方便,我们没办法快速访问链表当中的某一个位置。...你想到了,别人没想到,自然你的代码性能更好,bug更少。 如果你还学过其他一些编程语言的话,又会发现新的问题。
面经包含:携程、阿里、京东、腾讯 十一假期,秋招基本上已经结束了,剩下少量面试和少量流程中。虽然还没有最终决定,不过也还是决定来开个帖子,写一些总结回馈一下牛客。...下面上一些面经,希望能够对大家有那么一点点帮助。 今日头条 楼主春招的时候采用的是广撒网的战术(因为当时完完全全是个菜鸡,iOS大部分都是边春招边学的。。)...假设ViewController中需要用一个Blcok来改变ViewController中的一个属性,需要怎么实现? 这样实现之后,这个Block在内存中被存在何处?引用关系又是怎么样的?...能讲一讲你对光栅化的理解吗? 三面 对Swift和OC有什么看法? 能对Swif中的可选类型谈下你的理解吗? 说一下快排的伪代码和时间复杂度? 怎么判断两个链表是否相交? 怎么反转二叉树?...如何保证多核数据的一致性? c++ new 和 malloc 有什么区别? c++ 可不可以多继承? c++ 引用和指针的区别? 如何判断两个链表是否有交点? 堆区和栈区有什么区别?
作者 | 梁唐 出品 | 公众号:Coder梁(ID:Coder_LT) 大家好,我是梁唐。 今天我们正式进入了《代码随想录》的第三章,前面写了一些关于时间复杂度、空间复杂度以及算法优化思路的内容。...区分算法和数据结构 我在学习算法以及和大家讨论的过程当中发现了一个很有意思的现象,很多人虽然知道算法和数据结构并不是同一个范畴,但是往往在理解的时候会把它们当做同一个东西来理解。...不管我们使用哪一种,在我们需要求具体数值的时候,都可以在上面再套用某个算法来实现。 之所以提这个问题,是希望帮助大家树立正确的认知。...感兴趣的同学可以读一下vector或者STL的源码,C++的STL代码都是大神写的,非常值得一读。 另外,值得一提的是,在C++当中,数组本质上也是一种指针,是指向数组中第0个元素。...和链表相比,数组的优势在于极快的元素访问速度以及明确的长度,我们可以在 O(1) 的时间内访问数组中的任意一个元素。而链表则不行,需要 O(n) 。
大家好,我是Alex,今天谈一谈设计模式,一名优秀的开发,应该多少都需要了解一些常用的设计模式和使用场景,让我们一起来重温一下那些年经典设计模式; 本文主要内容 为什么要掌握设计模式 历史的教训 时间回到...代码设计原则 代码设计原则贯穿在整个设计模式之中,是理解其中的精华,本文讨论了一些重要的设计原则,包括通用设计原则,DRY原则,KISS原则,SOLID原则等: 通用设计原则 隔离变化 找到程序中的变化内容并将其与不变的内容区分开...尽量让每个类或者函数只负责软件中的一个功能,这条原则的主要目的是减少复杂度,你不需要费尽心机地去构思如何仅用200 行代码来实现复杂设计,实际上完全可以使用十几个清晰的方法,这里核心是: 通过实现最基本...我们需要抽象出一个“基类”来实现链表的功能,其他数据结构只需要简单的继承这个链表类就可以了。...所以需要Pimp技术来消除这种变化影响--隔离变化; 这样Widget头文件里面就不需要包含“gadget.h”文件了,再CPP文件中再声明具体的类型: 在这里,我展示了“#include”指令,只为了说明所有对头文件的依赖
的回答,作者的答案如下: ---- 这个回答可能有点长,我会先给出我对精通Python的理解,然后给出一些Python中有难度的知识点。...关于数组和链表的知识,我想大家都知道了,这里就不再赘述。如果我们在写代码的过程中,对于自己最常用的数据结构,连它的时间复杂度都不知道,我们又怎么能够写出高效的代码呢。...在写Python代码的时候,如果你需要一个链表,你应该使用标准库collections中的deque, deque是双向链表。标准库里面有一个queue,看起来和deque有点像,它们是什么关系?...Python中的else 最后我们来看一个对Python语言优缺点理解的例子,即Python中增加的两个else。相对于C++语言或者Java语言,Python语法中多了两个else。...结论:我这篇回答很长,但是,我相信对很多人都会有帮助。这里想说的是,Python是一门编程语言,使用范围非常广泛,大家不要去追求精通Python程序语言自身,而应该将精力放在自己需要解决的实际问题上。
面经包含:携程、阿里、京东、腾讯 五一假期,春招基本上已经结束了,剩下少量面试和少量流程中。虽然还没有最终决定,不过也还是决定来开个帖子,写一些总结。...然后秋招的时候由于实习比较忙,所以基本上就只投了秋招正式批,内推要么没投,要么踩线投,直接没了音信…… 楼主iOS开发,主要用的Swift语言。下面上一些面经,希望能够对大家有那么一点点帮助。...假设ViewController中需要用一个Blcok来改变ViewController中的一个属性,需要怎么实现? 这样实现之后,这个Block在内存中被存在何处?引用关系又是怎么样的?...能讲一讲你对光栅化的理解吗? 三面 对Swift和OC有什么看法? 能对Swift中的可选类型谈下你的理解吗? 说一下快排的伪代码和时间复杂度? 怎么判断两个链表是否相交? 怎么反转二叉树?...如何保证多核数据的一致性? c++ new 和 malloc 有什么区别? c++ 可不可以多继承? c++ 引用和指针的区别? 如何判断两个链表是否有交点? 堆区和栈区有什么区别?
在这个过程中,思考了一些面试相关的问题,总结出这篇文章,希望给读者一些启发。 本文求职职位不是java岗位,文章仅供参考。 总结下来,技术面试大致有三种情形,下边一一来讲讲。...一般面试官会要求面试者把算法写出来,或者先结合一个具体场景来提问,需要你联想到要使用该算法,比如求一个数的平方根,接着要你把它具体实现。 链表。...常见的面试题有要求你写出从一个链表中删除一个节点的算法、单链表倒转、两个链表找相交的部分等,一般需要完全无误地写出来。 实现一些基础的函数。...堆和栈的区别,栈的结构、栈的细节一点要搞得特别清楚,因为一些对技术要求比较高的公司会问得比较深入,例如京东的一面是让我先写一个从 1 加到 100 的求和函数,然后让我写出这个函数的汇编代码,Java...第八,自信一点,每个人的经历和经验都是独一无二的,面试的时候,一些特定领域的问题,回答不出来也不要太在意。 上边这些就是我经过与 30+ 家公司过招,引发的关于面试的思考,希望对阅读的朋友有所帮助。
、Linux 4、CPU 四、我用过的一些资料 五、关于学习的一点看法 六、最后结语 大家好啊,之前看了很多朋友分享自己的经历,今天我由看客变为分享者,也来分享一下自己这几年的学习、以及找工作的一些经验等等...C++、面试时涉及的方向大概就是网络、操作系统、C++、MySQL、Linux 相关的比如常见命令之类的、以及一些杂项编译链接,ELF 文件格式之类的 1、网络、数据库 计算机网络方面,目前还没有遇到出格的面试题...另外还遇到过让模拟实现 share_ptr 的题,需要写出所有的构造函数以及析构,感觉涉及的要点还是挺多的,当时没“完全”写对。...其实设计模式我看过,真只是看过,一些东西没理解,然后隔了好几个月基本忘完了,感觉面试基本不会涉及,我也就没准备,看来还是得找个时间细细研究下。...秀哥在我求职的过程中提供了许多帮助,这篇分享也主要想要回馈秀哥,感谢秀哥在我求职期间提供的帮助。
作为C++开发者,我认为这本书是必读的(前提是必须知道STL容器的使用方法和常用的算法)。...像map和set底层的红黑树的原理,哈希表的原理,deque的原理等等 仿函数:这部分篇幅很小,看起来相对轻松 迭代器:要结合和容器,理解各种迭代器的底层原理 算法:需要知道常用的算法,还需要了解Lambda...表达式,因为算法常常结合Lambda一起使用 如果一上来就看书,可能比较吃力,一方面,正如这本书所提及的,需要C++基础。...另一方面,stl涉及模板、萃取等C++的"奇淫技巧",还涉及算法的实现,比较复杂。所以我强烈推荐结合侯捷大师的视频:STL与泛型编程(B站竟然没有了。。。)...最后是应用,我推荐两种: 一是自己尝试编码实现一些简单的容器,比如array,list,allocator。这些我也自己尝试过,看似简单,实现起来才发现简单的容器门道也挺多。不过总体来说过程很有趣。
另外LeetCode的题型都非常简单明了,并不需要的复杂的理解,一般都在50行以内就可以解决了,如果你写了上百行代码,就肯定说明你想太多了或太复杂,虽然都能用很短的代码就能解决,但并不意味着LeetCode...下面是我刷 LeetCode 的一些收获,希望能够引诱大家有空时刷刷题目。...当然,还有一部分问题可能需要一些数学知识去解决,或者是需要一些位运算的技巧去快速解决。总之,我们希望找到时间复杂度低的解决方法。...三、筛选某一类型的题 如果我们只想要找某一类型的题,可以通过Tags或Company来筛选,如果我们只想做关于字符串、数组或链表相关题,可以通过Tags, 在Tags旁边可以根据公司找题(这一功能需要收费...五、关于代码编写、测试与提交 点开我们选择的题目后,就可以进行代码编写了,LeetCode一般都会直接提供一个函数式接口,我们只需要编写函数内部就可以了,而需要考虑到库文件,另外,在上面选择栏中,可以切换选择自己需要的编程语言
而标准库就不一样了,有一部分代码根本不涉及底层原理,实现也相对简单,同时又能对 Go 的理念加深理解,作为入门再好不过了。然后再由简入深,循序渐进,就像打怪升级一样,一步一步征服 Go。...sort:提供用于对切片和用户定义的集合进行排序的原始函数。 unsafe:包含了一些打破 Go 语言「类型安全」的命令,一般程序不会使用,可用在 C/C++ 程序的调用中。...我这里做一个简单的分类,由于水平有限,只能做一些简单的梳理,然后大家可以结合自己的实际情况来做选择。 有些库涉及到非常专业的知识,投入产出比可能会比较低。...net 下的很多子包与网络协议相关,比如 net/http,涉及 http 报文的解析,需要对网络协议比较了解。 如果想要深入了解语言的底层原理,则需要阅读 runtime 库。...要想快速入门,并且了解语言的设计理念,建议阅读 io 以及 fmt 库,阅读后会对接口的设计理解更深。 我已经看了一些源码,虽然过程痛苦,但确实非常有用。
链表,常见的面试题有写一个链表中删除一个节点的算法、单链表倒转、两个链表找相交的部分,这个一般必须得完全无误的情况下写出来; 4....以C++语言为例(不是C++开发的朋友可以跳过这一点),第一类是基础的C++问题,常见的有C++的继承体系中virtual关键字的作用(如继承关系中析构函数为什么要申明成virtual函数,如果不申明为...另外,如果你应聘的职位使用C++开发,很多公司会问你一些C++11的东西(或者问boost库,基本上都一样),这个你用过就用过,没有用过就说没用过不要装X,常见的C++11需要掌握的一些技术库我也列举一下吧...,因为一些对技术要求比较高的公司会 问的比较深入,例如京东的一面是让我先写一个从1加到100的求和函数,然后让我写出这个函数的汇编代码(JAVA开发的同学可能会让你试着去写一点JVM的指令),如果你对栈的结构...下面再说下面试中需要注意的一些细节: 第一,如果你的工作年限不长,尤其是渴望在技术方面有一定的造诣,那么你首先考虑的应该是新的单位是否能有利于你技术上的成长,而不是两份同样的工作,薪资上的上下相差的三五千
、优化系统,需要熟悉操作系统的组成与调度,门槛也高,很吃经验; 最后一个是嵌入式应用工程师,主要负责编写业务逻辑,调用驱动接口控制设备,在软件开发过程中涉及的内容范围非常广,主要用C语言开发,但也会涉及...对于经典的算法,一定要有自己的理解并且学会手撕,需要重点掌握的有冒泡排序、选择排序、插入排序、归并排序、快速排序、二分查找算法,面试很有可能让你手撕代码或者问你某个算法的时间复杂度。...有条件的话,可以录制一下项目的工作视频和实验图片,在线上面试的时候,以PPT形式来介绍自己的科研经历。 Qt学习中,需要重点掌握信号和槽、事件循环机制、对象树等。...所以我在这里再补充一些学习资料,需要对各位朋友有点帮助,你可以理解为我的独家资料吧,因为秀哥有拜托我好好写来着。。。...1、Goolg Test 在学习C++过程中,还可以接触一些C++单元测试框架,比如Google Test。 Google Test是由Google开源的C++单元测试框架,简称gtest。
适合用在校招面试当中,如果我有幸去面试校招生, 我可能会选这道题。不存在算法会不会的问题,写不出来一定是基本功不够扎实。 链表已经有序了,那么相同的元素必然会排在一起,我们只需要将它们移除就可以了。...但是说起来简单,要在链表当中实现并不容易。难点主要有两个,一个是链表增删节点的操作很多人不熟悉,尤其是像是C++这样的语言涉及指针,可能更不容易。...再加上判断元素重复需要用到的指针,会需要我们同时维护多个指针,增加代码的编码难度。 针对这个问题,我们有两种解决思路。第一种是我们不在原链表上处理,而是创建一个新的链表进行返回。...相比之下, 这种方法会容易一些,因为我们不需要判断太多的指针和位置,我贴一下当时的代码: class Solution { public: ListNode* deleteDuplicates(...很多人非常讨厌涉及链表的问题,觉得链表很难操作,容易写错,但实际上这是基本功的很重要的一部分。很多公司喜欢考察候选人的基本功,提升这方面的能力对于我们应聘或者是工作非常有帮助。
现代的硬件环境开发环境和IDE都可以帮助我们高效地、快速地编写代码,然后快速调试运行,在我们开发环境中运行和调试的速度都不比使用Java或者C++编写的程序慢多少....这里会涉及Android原生开发和iOS的Object-C或者Swift的原生开发,而后端的微服技术使用的技术就很多,一般会涉及Java、Php、Node.js、C++等等技术来实现微服后端应用程序,并且还要反它们整个在一起使用...像什么单向链表、双向链表、栈、队列这些数据结构,在我们学习时一定要求自己来书写并实现这些算法,并且在面试C++开发岗位时,通常要都笔记和机试算法代码实现,以考查应聘者对数据结构和算法的掌握能力。...但是,我们在实际开发中,一般是不会使用自己的算法来实现某些功能,而是采用别人框架来实现算法功能,比如Java中的LinkedList类实现链表功能,而不需要自己实现链表算法。...比如,我们使用标准C++库中的sort函数来实现排序,而不需要自己另外手写一个快速排序算法的函数来解决问题。为什么?
03 链表 链表,常见的面试题有写一个链表中删除一个节点的算法、单链表倒转、两个链表找相交的部分,这个一般必须得完全无误的情况下写出来。...算法和数据结构部分上文提过了,下面提一下其他技术,大致包括以下东西: 01 基础的C++问题 以C++语言为例(不是C++开发的朋友可以跳过这一点),第一类是基础的C++问题,常见的有C++的继承体系中...另外,如果你应聘的职位使用C++开发,很多公司会问你一些C++11的东西(或者问boost库,基本上都一样),这个你用过就用过,没有用过就说没用过不要装X,常见的C++11需要掌握的一些技术库我也列举一下吧...,因为一些对技术要求比较高的公司会问的比较深入,例如京东的一面是让我先写一个从1加到100的求和函数,然后让我写出这个函数的汇编代码(JAVA开发的同学可能会让你试着去写一点JVM的指令),如果你对栈的结构...2 注意细节 下面再说下面试中需要注意的一些细节: 01 把目光放长远一点 第一,如果你的工作年限不长,尤其是渴望在技术方面有一定的造诣,那么你首先考虑的应该是新的单位是否能有利于你技术上的成长,而不是两份同样的工作
领取专属 10元无门槛券
手把手带您无忧上云