
面试
五道口纳什
wx公众号/B站:五道口纳什
展开
-
Python 标准库 —— queue、heapq与PriorityQueue
优先队列,有别于普通队列的先入先出(虽然字面上还是队列,但其实无论从含义还是实现上,和普通队列都有很大的区别),也有别于栈的先入后出。在实现上,它一般通过堆这一数据结构,而堆其实是一种完全二叉树,它会对进入容器的元素进行排序(根据事先指定的规则),出队的顺序则会是二叉树的根结点代表的元素。1. 接口介绍import Queueclass ComparableObj:原创 2016-08-25 18:06:59 · 28076 阅读 · 1 评论 -
面试中的智力题及编程实践(二)
小圆绕大圆旋转两圆半径分别为 1cm、3cm,小圆绕大圆旋转一周,小圆自转了几周? 2π(r1+r2)2πr1=4\frac{2\pi(r_1+r_2)}{2\pi r_1}=4 提示:考虑小圆圆心走过的距离。原创 2016-05-16 15:46:40 · 1118 阅读 · 0 评论 -
[面试] C/C++ 语法 —— 内存与操作系统
while(A && B)循环退出的条件只有两种:(1)A 不成立(2)A 成立 B 不成立while (A || B)循环退出的条件只有一个:(1) A B 均不成立原创 2016-03-27 00:04:20 · 1055 阅读 · 0 评论 -
数组(有序数组)的公共部分
常量一般定义为全局变量,且大写;1. 字符串常量const string EXPAND_X = "X+YF";const string EXPAND_Y = "FX-Y";原创 2016-10-17 16:33:19 · 1248 阅读 · 0 评论 -
C/C++ —— signed 与 unsigned 有符号和无符号数及其移位
unsigned int a = 0;unsigned int b = -1; // b 为 0xffffffffunsigned int c = a - 1; // c 为 0xffffffff原创 2016-09-21 08:26:56 · 2542 阅读 · 1 评论 -
排序 —— 希尔排序(Shell sort)
希尔排序(Shell sort)的名称源于它的发明者 Donald Shell,该算法是冲破二次时间屏障(冒泡和插入排序,基于相邻元素的交换)的第一批算法。希尔排序改进了冒泡和插入排序的相邻元素才进行交换,而是比较相距一段距离的元素来工作,各趟比较所用的距离随着算法的进行而减少,直到只比较相邻元素的最后一趟排序为止。正是因为这样的工作机制,希尔排序有时也称为缩小增量排序。原创 2016-10-04 10:56:22 · 1301 阅读 · 0 评论 -
Python 基础——tuple与list、append与extend
tuple可读不可写,tuple的元素不可作左值,list反之两者的成员函数:tuple几乎没什么成员函数,list却有着丰富的成员函数彼此间类型转换`tuple`的切片还是`tuple`,`list`的切片还是`list`(这可能是一句废话)原创 2015-10-29 23:43:08 · 9500 阅读 · 0 评论 -
链表面试细节
Python 中的 list 并不是我们传统(计算机科学)意义上的列表,这也是其 append 操作会比 insert 操作效率高的原因。传统列表——通常也叫作链表(linked list)——通常是由一系列节点(node)来实现的,其每一个节点(尾节点除外)都持有一个指向下一个节点的引用。其简单实现:class Node: def __init__(self, value, ...原创 2016-03-21 08:00:18 · 13080 阅读 · 3 评论 -
Python、Java 在线笔试
1. 循环输入输出交互Python在线笔试琐碎求两个整数 A+B 的和。while True: try: (n, m) = (int(x) for x in raw_input().split()) print(n+m) except KeyError: break原创 2016-09-06 21:26:16 · 1267 阅读 · 0 评论 -
Java 原生数据类型、Integer
count:统计出现的次数,当某种情况发生时,执行 +1 的动作,+1 的动作常置于循环体内。基本结构如下;count = 0while count < vnum and **: ... count += 1 ...原创 2016-09-02 12:07:10 · 1881 阅读 · 0 评论 -
面试中的智力题及编程实践
我曾经把我从各处总结的智力题(也即是稍微需要点技巧的)题目,拿给周围的人解,鲜有人能很快给出解决方案,更不消说充满技巧性的解决方案。所以,一时之间,第一次接触,想不出答案,并不丢脸,需要有意识的训练与总结。三个瓶盖能换一瓶水,问100个人需要喝水,最少需要买多少瓶水即可解决100人的喝水问题1+2 -> 3 1+2+2 -> 6 1+2+2+2原创 2015-12-11 16:02:17 · 1439 阅读 · 0 评论 -
微积分基本概念相关证明 —— 导数与极限(洛必达法则)
(uv)′=u′v+uv′(uv)'=u'v+uv'导数定义:(uv)′原创 2016-11-22 00:56:13 · 4321 阅读 · 0 评论 -
python 运算符优先级、Chaining comparison operators
1. **>> 2**2**3256>> (2**2)**364>> 2**(2**3)256相同优先级的运算符会优先进行左结合,也即第一个操作数和第二个操作数结合,结果再与第三个操作数结合。对于 ** 是个例外。2. 比较运算符与 Chaining comparison operators>> 1<2==2>1Tr...原创 2019-02-19 21:56:53 · 1802 阅读 · 1 评论 -
优先队列(priority queue)的实现(java,jdk接口)
底层数据结构,最简单的情况为一维数组;两大接口(以大顶堆为例):push首先将要插入的值置于底层数据结构的末尾:heap[size-1] = value不断地将其与其父节点比较,heap[parent] &gt;= heap[pos],break否则交换 heap[parent] 与 heap[pos] 的值,并将 pos = parentpoppos = 0h...原创 2019-02-24 12:41:28 · 2065 阅读 · 7 评论 -
[面试] 算法 —— 数组(有序二维数组的查找)
这里的有序二维数组指的是:每一行都是按照从左到右递增,从每一列都是按照从上到下递增的顺序排序。我们定义如下的查找规律:首先选取数组中右上角的数字。(1)如果该数字等于要查找的数字,查找过程结束;(2)如果该数字大于要查找的数字,则剔除该数字所在的列;(3)如果该数字小于要查找的数字,则剔除该数字所在的行;原创 2016-03-26 19:06:15 · 1149 阅读 · 0 评论 -
Python 基础 —— Python程序员常犯的那些错误
python包含大量简洁而优雅的编程范式,若使用得当,将大大简化代码。原创 2015-10-30 13:06:23 · 1325 阅读 · 1 评论 -
leetcode —— 字符串相关(28、344)
以下内容转自知乎<如何进入国内CV+DL领域优秀公司实习?>。看完之后,再次感受到浓浓的压力。问 想略了解下研究方向为DL、CV有关方向的国内master去国内相关公司难度、需要技能、笔试or面试大概流程(此步可当我没说 )、薪水(当然业内价格呐!!!)、是不是不招渣硕只招phd等。 所说的相关公司有:360颜水城老师人工智能lab,SenseTime商汤科技,阿里IDST,格灵深瞳,知图原创 2015-11-14 09:53:25 · 4561 阅读 · 0 评论 -
leetcode 动态规划 —— 53(最大子序列的和)
序列(数组)的区间通过左右端点确定,这样首先设置一个最值变量用来记录最值,从左端点一步步移动到右端点,自然移动的过程中也可以计算整个区间的和,也即一次线性遍历下来,可同时获得多个有用信息。原创 2016-09-07 15:05:46 · 1844 阅读 · 0 评论 -
溢出、上溢、下溢
国外著名的程序员技术网站:stackoverflow,国内对其的效仿,也有 segmentfault;overflow:溢出 overflow:上溢underflow:下溢 stack underflow:堆栈下溢;1. 上溢是当一个超长的数据进入到缓冲区时,超出部分被写入上级缓冲区,上级缓冲区存放的可能是数据、上一条指令的指针,或者是其他程序的输出内容,这些内容都被覆盖或者破坏掉。可见一小原创 2016-08-01 10:08:33 · 14565 阅读 · 0 评论 -
负数的移位、有符号数的移位转换为无符号数的移位
对于计算机而言,用 32 去乘一个数,并非真的去乘,而是移动二进制的 5 位,显然是十分容易。(对于计算机没有 10 进制的概念,本质上都是 2 进制)原创 2016-09-20 23:25:57 · 1556 阅读 · 0 评论 -
周志华《机器学习》读书笔记与习题答案(持续更新)
1. make itI’ll not make it to Rio in time. 我将不能按时到达里约;原创 2016-08-22 15:54:36 · 1722 阅读 · 0 评论 -
LeetCode 一题多解
1. 括号匹配20. Valid Parentheses堆栈版:class Solution(object): def isValid(self, s): """ :type s: str :rtype: bool """ stack = [] para_map = {')':'('..原创 2018-11-05 21:54:16 · 1475 阅读 · 2 评论 -
LeetCode 堆栈队列 —— 括号匹配(20、232、155)
1. 堆栈(stack)20,20. Valid Parentheses,括号匹配,堆栈(python 中使用 list 即可实现表示堆栈,list.append:入栈,list.pop():出栈)实现:左括号((、[、{)入栈;右括号()、]、})出栈;遍历全部字符串后,堆栈为空;class Solution(object): def isValid(sel...原创 2018-11-05 13:03:01 · 1476 阅读 · 2 评论 -
jdk 反汇编工具—— javap
1. 举一个内部类的实例(jdk 中)java Collection 容器的 iterator() 成员函数的实现,比如 ArrayList 内部的 iterator 的实现:public class ArrayList&amp;lt;E&amp;gt; { public Iterator&amp;lt;E&amp;gt; iterator() { return new Itr(); ...原创 2018-07-18 23:01:19 · 1931 阅读 · 0 评论 -
Java 并发 —— Java 标准库对并发的支持及 java.util.concurrent 包
1. 使用 java.util.concurrent.*下的类并非万事大吉ConcurrentHashMap、synchronized与线程安全使用 hashmap 做字符串的次数统计,为保证容器的线程安全,在修改容器内容时,加锁,在java中即是通过 synchronized 的关键字实现加锁。原创 2017-11-18 23:04:36 · 851 阅读 · 0 评论 -
迭代器模式在 Java 容器中的实现
迭代器接口是迭代器模式实现的精髓:public interface Iterator&lt;E&gt; { boolean hasNext(); E next(); ...} 假设某容器名为 XxCollection(该类本身并不需实现 Iterator 接口),调用其迭代器遍历访问其所有成员时,一般是通过其 iterator() 方...原创 2018-02-03 00:08:18 · 851 阅读 · 0 评论 -
Java Colections 集合类 —— List、ArrayList、Set(HashSet)
1. 删除元素的标准写法public void removeObserver(Observer o) { int i = observers.indexOf(o); if (i &amp;amp;amp;amp;amp;amp;amp;amp;gt;= 0) { observers.remove(i); }}原创 2017-07-23 23:54:47 · 851 阅读 · 0 评论 -
C 语言经典面试题 —— 宏
1. 运算符优先级与括号#define Cube(a) a*a*a无法解决 Cube(1+1) ⇒ 1+1*1+1*1+1 ⇒ 4,期待的应当是 8,故将其改造为 #define Cube(a) (a)*(a)*(a)如此,自身运算的优先级是能解决了,和其他表达式结合时便又存在先运算和后运算的算符优先级的问题,比如其前跟着一个除法运算符:16/Cube(2) ⇒ 16 /...原创 2018-06-01 21:42:00 · 1553 阅读 · 0 评论 -
Python 笔试 —— 效率与优雅
1. 效率字符串拼接:加号拼接字符串将造成对象的创建和垃圾的回收;使用字符串的 join 方法对尤其是循环中的字符串进行拼接(先将不断出现的字符串 append 到 一个 list 中,再进行 join);>> ''.join('hello').join('world')'whelloohellorhellolhellod' # 会对 'hello' ...原创 2018-05-30 21:59:05 · 1240 阅读 · 0 评论 -
Java 经典面试题 —— 性能与安全
1. 性能String、StringBuffer 与 StringBuilder两个字符串相加,str1+str2,相当于执行:StringBuilder strBuilder1 = new StringBuilder(str1);strBuilder1.append(str2);String result = strBuilder1.toString();执行到最后,我们所...原创 2018-05-30 21:35:08 · 1282 阅读 · 0 评论 -
Java 内存管理、JVM 工作原理与 Java 运行时系统
1. 访问修饰符,static,栈内存Java Error - Illegal Modifier for Parameter - Only final Permitted函数内的局部变量仅存在于栈内存上; 局部变量不可用 public/private/protected、static 等词修饰;最多使用 final(only final permitted);栈内存上(局部对象)无所谓访问权原创 2017-09-12 00:11:08 · 1025 阅读 · 0 评论 -
JVM 内存管理、自带性能监测调优工具 (jstack、jstat)及 JVM GC 调优
1. jstack:占用最多资源(CPU 内存)的Java代码https://www.cnblogs.com/chengJAVA/p/5821218.html https://blog.youkuaiyun.com/u012448083/article/details/76855340jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码(代码行号)。第一步,先找到 java 进程...原创 2018-07-15 18:52:57 · 2541 阅读 · 0 评论 -
java 面试 —— java 基础
1. char =&amp;amp;amp;amp;gt; intchar 类型转换为 int 类型时,是转换为其 ascii 码或 unicode 码(比如中文)char ch = 'A';int i = ch; // (int)ch // i = 65;int ch = '香';int i = ch; // (int)ch // i = 39321; \u9999;...原创 2018-09-01 20:30:29 · 999 阅读 · 0 评论 -
LeetCode —— 链表相关(206、141)
0. 数据结构定义链表节点:class ListNode(object): def __init__(self, x): self.val = x self.next = None1. 链表206,翻转链表,206. Reverse Linked List:def reverseList(head): cur, prev = hea...原创 2018-11-03 22:29:23 · 1050 阅读 · 1 评论 -
Python 数据结构与算法 —— 常见面试题
1. 排序快速排序(quick sort)原创 2017-02-21 13:02:55 · 3171 阅读 · 0 评论 -
Python 奇葩语法
m = 1 vs m =1, l.append(None)原创 2016-09-14 10:56:27 · 1721 阅读 · 0 评论 -
递推公式与递归退出的条件
1. 二叉搜索树查找原创 2016-09-19 18:36:43 · 1875 阅读 · 0 评论 -
链表的应用 —— 实现 LRU(least recently unused)
基本知识尾部插入改变的是最后一个节点的next尾部删除改变的是倒数第二个节点的next,需考虑如下的三种情况 空表表中只有一个节点一般的表class LNode: def __init__(elem, next_=None): self.elem = elem self.next = next_class LList: def __init原创 2016-05-25 18:19:08 · 1292 阅读 · 0 评论 -
数据结构与算法总论
缓存结构无论是栈、队列还是优先队列,都可视为一种缓存结构,可将数据元素保存其中,可以访问和弹出。原创 2016-04-17 23:58:15 · 1048 阅读 · 0 评论 -
字符串算法 —— 两字符串相同的单词
1. navie:集合 intersect以集合的形式分别存放两字符串,然后求集合交集。def common_words_naive(str1, str2): str1_set = set(str1.strip().split()) str2_set = set(str2.strip().split()) return str1_set & str2_set # 集合 int...原创 2018-09-27 08:19:53 · 1918 阅读 · 2 评论