了解你所面试的公司:产品,成立时间,融资,竞争对手;公司列表
分析算法的时间和空间复杂度(Big-O);
java/c++ 熟练掌握一门,python面试算法题其实也ok。
对语言的细节特性有足够的理解,理解语言之间的差异,比如解释执行vs编译执行,java jvm, garbage collection等;
最好熟悉一门脚本编程语言如Python/ruby;
至少知道两种n*log(n)的排序算法,比如快速排序和归并排序。merge sort 很重要,比如K-way merge sorts;
掌握二分查找思想及应用场景,灵活处理类似问题,比如search in a sorted array查找、实现sqrt()等问题;
Hashtable: 透彻理解Hashtable的原理、性能、碰撞处理,并能用array (in your favorate language) 来实现一个简单的hashtable,考虑多线程的情况;对于java的hashmap 要了解java hashmap和hashtable区别,concurrenthashmap, linkedhashmap.
Binary Search Tree的基本操作比如添加、删除节点,树与其他数据结构的相互转化, BST删除节点操作基本都会挂。
二叉树的各种遍历算法(前序、中序、后序、层序),根据遍历结果重建二叉树;
K-ary trees(一个树有k个children)/trie-tree的实现算法和应用场景;
大体了解一种平衡树,比如(red/black tree, splay tree or AVL tree) , 比如知道treemap的内部实现是red/black tree, 了解database index 所用的b+ tree/b tree.
理解Min/Max heap的实现、各种操作时间复杂度和应用场景,熟练解决查找top(N)类型问题;
Graph在内存中的三种构造方式(objects and pointers, matrix, and adjacency list);
遍历算法BFS/DFS,分析时间和空间复杂度,以及具体实现
结合Graph常考的算法比如拓扑排序,最短路径以及最小生成树算法
掌握基本的Dynamic programing的思想,熟练解决基本的DP问题,比如两字符串的最长子串,字符串之间的edit distance等;
理解操作系统中的进程、线程、以及它们之间的区别,理解系统并发操作中的常见问题(死锁),以及如何使用locks, mutexes, semaphores来解决并发问题。
理解面向对象设计(封装、继承、多态),能把一个模糊定义的业务需求用OO的方式抽象(比如设计电梯、停车场等);设计模式:Singleton(线程安全版本)、factory等;
java primitive type的内存(boolean: 1 byte, int: 4 bytes, long: 8 bytes),了解基本位操作;
理解分布式系统的基本概念,解决的问题以及分布式系统设计中CAP(Consistency, Availability, Partition)一致性、可用性、高性能之间的trade-offs;
了解一些网络的基本知识tcp/ip三次握手, http/https区别,输入 这个网址后会发生什么;
linux基本命令: kill -9, scp, ps -ef, netstat;
sql数据库基本知识:join,index,简单的sql语句:从table中找出成绩第二好的学生姓名;sql与nosql数据库区别,简单了解几种nosql数据库;
转载于:.html
本文发布于:2024-02-02 00:04:28,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170680932840042.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |