后端面经(已收到腾讯实习offer)

大家好,这篇博客是我博客生涯的第一篇博客,所以想先和大家分享一下春招过程中的收获和感受。由于博主是新手,如有需要改进的地方或者不明白的地方,请在评论区留言,博主将在第一时间赶赴现场与君讨论和请教。谢谢大家!!!

下面将知识点做个总结:

数据结构

 - 链表和数组的区别(内存上的分布、增删查的时间复杂度)
 - 树的先根、中根、后根遍历(延伸出来波兰序列和逆波兰序列)
 - 双链表的增删查
 - 图的深度优先搜索(延伸出回溯法)和广度优先搜索(延伸出分支界限法)
 - 掌握几颗树:AVL(平衡二叉树),BST(二叉排序树),红黑树,B树,B+树
 - 排序一定要掌握:堆排、基排、快排、冒泡(时间复杂度、空间复杂度、应用场景)

算法

 - 常用算法一定要有印象:
	 - 贪心算法(每次都取最优)
	 - 动态规划(笔试和面试经常出现,建议看下经典的背包问题)
	 - 递归算法(斐波列序列、快排、二叉树的遍历、求阶乘),递归一般不能达到最优解,但面试过程中用递归可以使代码更加简短。
	 - 分治(快排、归并都利用了分治思想)
	 - 分支界限法(对应广度优先算法)
	 - 回溯法(对应深度优先算法)
 - 典型的算法案例:
	 - 存储10亿个INT型的QQ号,但给的内存只有1GB。(明显,一个int型占用4个字节,10亿个QQ号就需要4GB的存储空间,直接存储内存不足。)解决方法是利用哈希存储,使用位图(每个QQ号只用一位进行存储,这样一个int型32位就能存储32个QQ号了)
	 - 在1亿个数中找出前1000个大的数(用int存储),只分配4KB的存储空间。解决这种问题(找出前n个最大或者最小的数),一般使用堆排。前n个最大的数使用最小堆,前n个最小的数使用最大堆
	 - 找出第k大的数,利用快排(快排的思想就是每次找到一个数在整个序列中的具体位置)
	 - 大整数乘法,使用分治思想
	 - 字符串匹配(判断回文串、找出最长回文子串、找出最长回文子序列、判断字符串A是否为字符串B的字序列)
	 - KMP算法(找出字符串A在字符串B的位置,不存在返回-1)
 - 必须会手写的算法
	 - 快速排序
	 - 折半查找
	 - 归并排序
	 - 链表的逆序
	 - 链表的生成、查找、删除、添加
 - 要掌握写算法的工具,博主练习算法一般使用C++,原因是网上参考例程多,而且执行起来相对高效。
	 - 要掌握C++的STL库,里面包含了队列、集合、栈等各种数据结构的容器,使用STL可以快速便捷的进行排序、去重、删除、插入、修改、统计大小、逆序(分配的是动态的内存,不像C++的数组一样是固定的)。
	 - 字符串的常见操作,博主发现很多笔试题喜欢考察字符串相关的题目,所以对字符串的逆序、统计大小、遍历等要重点掌握。
	 - 这里推荐一本书和一款视频教程,牛客网左大神写的[程序员算法面试指南](https://book.douban.com/subject/26638586/)和哈工大男神郭炜老师的[中国mooc大学程序设计与算法](https://www.icourse163.org/co
  • 27
    点赞
  • 121
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值