base深圳,上来直接5道算法,做1小时,做完一道一道讲思路,然后反问。
上来直接五道算法,没问八股和项目,哈人。
算法:
(1) 给定一个字符串,编写一段代码测试该段字符串的括号是否完全闭合。
[()]{}{[()()]()} - true
[(()] - false
(2) 数组a[N],存放了数字1至N-1,其中某个数字重复一次。写一个函数,找出被重复的数字。
时间复杂度必须为O(N), 空间复杂度不能是O[N]。
函数原型:int find(int a[], int N)
(3) 有一个二叉树,每个节点的值是一个整数。
写一个函数,判断这棵树中是否存在从根到叶子节点的一个路径,这个路径上所有节点之和为某一个值。
存在返回1, 否则返回0。
class TreeNode
{
int value;
TreeNode left;
TreeNode right;};
int haspath(TreeNode root, int value)
}
(4) 给定一个无序的整数数组,找到其中最长的上升子序列。
示例:
输入: [10,9,2,5,3,7,101,18]
输出: [2,3,7,101] 或 [2,3,7,18]说明:
可能会有多种最长上升子序列的组合,你只需要输出其中一个即可。
你算法的时间复杂度应该为 O(n2),或者更好的 O(nlogn) 方案
(5) 实现 LRU 存储,LRUCache(capacity) 以正整数作为容量 capacity 初始化 LRU 缓存。
LRU 算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。
class LRUCache(capacity){add(var key, var val);get(var key);}
反问:
(1)有了一定项目经验后,前端学习应该先注重深度还是广度
(2)针对我的表现有什么建议
(3)岗位业务
对我的建议:加强数据结构和算法
#我的实习求职记录#