30岁转行程序员,java并发编程实战第二版pdf

第一个:Alibaba[搜索推荐]

一面:算法题:长度为n的数组里放了n+1个大小在[1,n]的数,必然至少有一个重复的数,找出来

二面:概率题:求一根绳子被切两刀能组成一个三角形的概率。

三面主管面:FM推导,deepfm原理,graph embedding,问了之前的一些项目。

四面交叉面:模型上线时应该注意的事,如果请求过高模型服务挂了怎么办,tensorflow和torch的区别,如何降低模型复杂度。

第二个:百度

原生商业推广部

一面:算法题:快排非递归,旋转有序数组找某个值

二面:算法题:一个二维数组,上有0和1,把所有相邻的1给连起来,求最终有几块连起来的1。 L1和L2正则区别,softmax损失函数

推荐技术平台部

一面:算法题:bitmap

二面:算法题:链表去重,扩展:删除链表中的所有重复值

第三个:Google

心酸呐,之前一直想去投岗谷歌,结果却倒在了这么一道小小的算法题上…

算法题:设计一个循环有序链表,实现增删改查四个函数。

第四个:字节跳动

字节最爱算法…

算法题:蛇形打印二叉树 算法题:给出[[1, 2], [3, 5], [8, 8], [15, 16], [32, 38]],求间隔

算法题:给出两个升序数组A、B和长度m、n,求第k个大的数

算法题:给出数组A,长度为n,数组中元素的值位于[0, n - 1]之间,求是否有重复元素

算法题:二叉树的左视图 算法题:面值[1,3,4]的硬币,输入n,输出最少组成n的硬币个数以及组成的硬币

算法题:给定正整数n,问1-n组成的二叉搜索树有多少

第五个:Tencent

算法题:合并有序链表

算法题:有序整数数组,给定一个数,从数组中找出2个数相加等于它。要求O(n)时间复杂度

算法题:一个字符串,假设空足够,将其中所有空格替换为"%20",要求不开辟额外新空间

算法题:说思路,100台机器,每台机器上10亿个数,求里面最大的100个数

算法题:判断一个二叉树是否存在一个路径和为指定值的路径(不用临时变量) 算法题:大数相乘(直接敲代码,十分钟后回来看结果)

第六个:网易

算法题:给定0~9的英文OneTwoThree…这种的字符串,将其完全乱序,怎么还原其中的各个数?

算法题:给定n个正整数,找到ai和aj,使得(i,0)(i,ai)(j,0)构成的形状最大

算法题:最大子序和 leetcode 53

算法题:字符串排序(区分大小写)

第七个:360搜索

一面:算法题:在大量文本中匹配词表

二面:算法题:字符串编辑距离,求第n个丑数,最长公共子串

三面:算法题:设计一个hashmap 算法

精英加面一面:算法题:长度为n的数组里放了n+1个大小在[1,n]的数,必然至少有一个重复的数,找出来

第八个:拼夕夕

一面,算法题:链表快排

二面,智力题:100个球,甲乙两个人依次拿球,每次只能拿1-5个,甲先拿,求甲必胜的方案

第九个:美团北斗

一面问了实习项目,

算法题:旋转有序数组找某个值 二面也偏重项目,

算法题:使用O(N)复杂度完成GBDT分裂 三面还是项目,

算法题:找出无序数组中相隔距离最长的逆序对

第十个:小米搜索

一面问了项目, 算法题:一个数组里只有0和1,把0换到1前面,不能使用统计次数的方法。 扩展:如果有0,1,2三个数咋办?

二面项目,算法题:无向图的迪杰斯特拉算法实现。

image

算法大全:程序员代码面试指南(左程云)+阿里云:70+刷题+解析笔记

相关的所有笔记等都已收集整理好,算法大全:数据结构与算法+阿里云70+算法题30种大厂笔试高频知识点+左程云-程序员代码面试指南+算法刷题LeetCode+算法解析-第4版等

第一个:<算法-第4版>

作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第 4 版具体给出了每位程序员应知应会的 50 个算法,提供了实际代码,而且这些 Java 代码实现采用了模块化的编程风格,读者可以方便地加以改造

image
image.png

image

第二个:<程序员代码面试指南-IT名企算法与数据结构题目最优解>

左程云(左神)的<程序员代码面试指南-IT名企算法与数据结构题目最优解>包含了近200道真实出现过的经典代码面试题(且每个都有标明难度等级小星星),分为以下九个部分:

一、栈和队列部分(10)

二、链表问题(20)

三、二叉树问题(24)

四、递归和动态规划(17)

五、字符串问题(23)

六、大数据和空间限制(6)

七、位运算(6)

八、数组和矩阵问题(26)

九、其他问题(34)

程序员代码面试指南-IT名企算法与数据结构题目最优解:栈和队列部分(10)

  • 1. 设计一个有getMin功能的栈(士★☆☆☆)

  • 2. 由两个栈组成的队列(尉★★☆☆)

  • 3. 如何仅用递归函数和栈操作逆序一个栈(尉★★☆☆)

  • 4. 猫狗队列(士★☆☆☆)

  • 5. 用一个栈实现另一个栈的排序(士★☆☆☆)

  • 6. 用栈来求解汉诺塔问题(校★★★☆)

  • 7. 生成窗口最大值数组(尉★★☆☆)

  • 8. 构造数组的MaxTree(校★★★☆)

  • 9. 求最大子矩阵的大小(校★★★☆)

  • 10. 最大值减去最小值小于或等于num的子数组数量(校★★★☆)

程序员代码面试指南-IT名企算法与数据结构题目最优解:链表问题(20)

  • 1. 打印两个有序链表的公共部分(士★☆☆☆)

  • 2. 在单链表和双链表中删除倒数第K 个节点(士★☆☆☆)

  • 3. 删除链表的中间节点和a/b 处的节点(士★☆☆☆)

  • 4. 反转单向和双向链表(士★☆☆☆)

  • 5. 反转部分单向链表(士★☆☆☆)

  • 6. 环形单链表的约瑟夫问题(原问题:士★☆☆☆进阶:校★★★☆)

  • 7. 判断一个链表是否为回文结构(普通解法士★☆☆☆)(进阶解法尉★★☆☆)

  • 8. 将单向链表按某值划分成左边小、中间相等、右边大的形式(尉★★☆☆)

  • 9. 复制含有随机指针节点的链表(尉★★☆☆)

  • 10. 两个单链表生成相加链表(士★☆☆☆)

  • 11. 两个单链表相交的一系列问题(将★★★★)

  • 12. 将单链表的每K个节点之间逆序(尉★★☆☆)

  • 13. 删除无序单链表中值重复出现的节点(士★☆☆☆)

  • 14. 在单链表中删除指定值的节点(士★☆☆☆)

  • 15. 将搜索二叉树转换成双向链表(尉★★☆☆)

  • 16. 单链表的选择排序(士★☆☆☆)

  • 17. 一种怪异的节点删除方式(士★☆☆☆)

  • 18. 向有序的环形单链表中插入新节点(士★☆☆☆)

  • 19. 合并两个有序的单链表(士★☆☆☆)

  • 20. 按照左右半区的方式重新组合单链表(士★☆☆☆)

image

程序员代码面试指南-IT名企算法与数据结构题目最优解:二叉树问题(24)

  • 1. 分别用递归和非递归方式实现二叉树先序、中序和后序遍历(校★★★☆)

  • 2. 打印二叉树的边界节点(尉★★☆☆)

  • 3. 如何较为直观地打印二叉树(尉★★☆☆)

  • 4. 二叉树的序列化和反序列化(士★☆☆☆)

  • 5. 遍历二叉树的神级方法(将★★★★)

  • 6. 在二叉树中找到累加和为指定值的最长路径长度(尉★★☆☆)

  • 7. 找到二叉树中的最大搜索二叉子树(尉★★☆☆)

  • 8. 找到二叉树中符合搜索二叉树条件的最大拓扑结构(校★★★☆)

  • 9. 二叉树的按层打印与ZigZag打印(尉★★☆☆)

  • 10. 调整搜索二叉树中两个错误的节点(原问题:尉★★☆☆)(进阶问题:将★★★★)

  • 11. 判断t1 树是否包含t2 树全部的拓扑结构(士★☆☆☆)

  • 12. 判断t1 树中是否有与t2 树拓扑结构完全相同的子树(校★★★☆)

  • 13. 判断二叉树是否为平衡二叉树(士★☆☆☆)

  • 14. 根据后序数组重建搜索二叉树(士★☆☆☆)

  • 15. 判断一棵二叉树是否为搜索二叉树和完全二叉树(士★☆☆☆)

  • 16. 通过有序数组生成平衡搜索二叉树(士★☆☆☆)

  • 17. 在二叉树中找到一个节点的后继节点(尉★★☆☆)

  • 18. 在二叉树中找到两个节点的最近公共祖先(原问题:士★☆☆☆

  • 19. Tarjan算法与并查集解决二叉树节点间最近公共祖先的批量查询问题(校★★★☆)

  • 20. 二叉树节点间的最大距离问题(尉★★☆☆)

  • 21. 先序、中序和后序数组两两结合重构二叉树(先序与中序结合士★☆☆☆)(

  • 22. 通过先序和中序数组生成后序数组(士★☆☆☆)

  • 23. 统计和生成所有不同的二叉树(尉★★☆☆)

  • 24. 统计完全二叉树的节点数(尉★★☆

image

程序员代码面试指南-IT名企算法与数据结构题目最优解:递归和动态规划(17)

  • 1. 斐波那契系列问题的递归和动态规划(将★★★★)

  • 2. 矩阵的最小路径和(尉★★☆☆)

  • 3. 换钱的最少货币数(尉★★☆☆)

  • 4. 换钱的方法数(尉★★☆☆)

  • 5. 最长递增子序列(校★★★☆)

  • 6. 汉诺塔问题(校★★★☆)

  • 7. 最长公共子序列问题(尉★★☆☆)

  • 8. 最长公共子串问题(校★★★☆)

  • 9. 最小编辑代价(校★★★☆)

  • 10. 字符串的交错组成(校★★★☆)

  • 11. 龙与地下城游戏问题(尉★★☆☆)

  • 12. 数字字符串转换为字母组合的种数(尉★★☆☆)

  • 13. 表达式得到期望结果的组成种数(校★★★☆)

  • 14. 排成一条线的纸牌博弈问题(尉★★☆☆)

  • 15. 跳跃游戏(士★☆☆☆)

  • 16. 数组中的最长连续序列(尉★★☆☆)

  • 17. N皇后问题(校★★★☆)

image

程序员代码面试指南-IT名企算法与数据结构题目最优解:字符串问题(23)

  • 1. 判断两个字符串是否互为变形词(士★☆☆☆)

  • 2. 字符串中数字子串的求和(士★☆☆☆)

  • 3. 去掉字符串中连续出现k 个0 的子串(士★☆☆☆)

  • 4. 判断两个字符串是否互为旋转词(士★☆☆☆)

  • 5. 将整数字符串转成整数值(尉★★☆☆)

  • 6. 替换字符串中连续出现的指定字符串(士★☆☆☆)

  • 7. 字符串的统计字符串(士★☆☆☆)

  • 8. 判断字符数组中是否所有的字符都只出现过一次(按要求1 实现的方法士★☆☆☆)(按要求2 实现的方法尉★★☆☆)

  • 9. 在有序但含有空的数组中查找字符串(尉★★☆☆)

  • 10. 字符串的调整与替换(士★☆☆☆)

  • 11. 翻转字符串(士★☆☆☆)

  • 12. 数组中两个字符串的最小距离(尉★★☆☆)

  • 13. 添加最少字符使字符串整体都是回文字符串(校★★★☆)

  • 14. 括号字符串的有效性和最长有效长度(原问题士★☆☆☆

  • 15.公式字符串求值(校★★★☆)

  • 16. 0 左边必有1 的二进制字符串数量(校★★★☆)

  • 17. 拼接所有字符串产生字典顺序最小的大写字符串(校★★★☆)

  • 18. 找到字符串的最长无重复字符子串(尉★★☆☆)

  • 19. 找到被指的新类型字符(士★☆☆☆)

  • 20. 最小包含子串的长度(校★★★☆)

  • 21. 回文最少分割数(尉★★★☆)

  • 22. 字符串匹配问题(校★★★☆)

  • 23. 字典树(前缀树)的实现(尉★★☆☆)

image

程序员代码面试指南-IT名企算法与数据结构题目最优解:大数据和空间限制(6)

  • 1. 认识布隆过滤器(尉★★☆☆)

  • 2. 只用2 GB 内存在20 亿个整数中找到出现次数最多的数(士★☆☆☆)

  • 3. 40 亿个非负整数中找到没出现的数(尉★★☆☆)

  • 4. 找到100 亿个URL 中重复的URL 以及搜索词汇的top K 问题(士★☆☆☆)

  • 5. 40 亿个非负整数中找到出现两次的数和所有数的中位数(尉★★☆☆)

  • 6. 一致性哈希算法的基本原理(尉★★☆☆)

程序员代码面试指南-IT名企算法与数据结构题目最优解:位运算(6)

  • 1. 不用额外变量交换两个整数的值(士★☆☆☆)

  • 2. 不用任何比较判断找出两个数中较大的数(校★★★☆)

  • 3. 只用位运算不用算术运算实现整数的加减乘除运算(尉★★☆☆)

  • 4. 整数的二进制表达中有多少个1 (尉★★☆☆)

  • 5. 在其他数都出现偶数次的数组中找到出现奇数次的数(尉★★☆☆)

  • 6. 在其他数都出现k 次的数组中找到只出现一次的数(尉★★☆☆)

程序员代码面试指南-IT名企算法与数据结构题目最优解:数组和矩阵问题(26)

  • 1. 转圈打印矩阵(士★☆☆☆)

  • 2. 将正方形矩阵顺时针转动90 °(士★☆☆☆)

  • 3. "之"字形打印矩阵(士★☆☆☆)

  • 4. 找到无序数组中最小的k 个数(O(Nlogk)的方法尉★★☆☆)(O(N)的方法将★★★★)

  • 5. 需要排序的最短子数组长度(士★☆☆☆)

  • 6. 在数组中找到出现次数大于N/K 的数(校★★★☆)

  • 7. 在行列都排好序的矩阵中找数(士★☆☆☆)

  • 8. 最长的可整合子数组的长度(尉★★☆☆)

  • 9. 不重复打印排序数组中相加和为给定值的所有二元组和三元组(尉★★☆☆)

  • 10. 未排序正数数组中累加和为给定值的最长子数组长度(尉★★☆☆)

  • 11. 未排序数组中累加和为给定值的最长子数组系列问题(尉★★☆☆)

  • 12. 未排序数组中累加和小于或等于给定值的最长子数组长度(校★★★☆)

  • 13. 计算数组的小和(校★★★☆)

  • 14. 自然数数组的排序(士★☆☆☆)

  • 15. 奇数下标都是奇数或者偶数下标都是偶数(士★☆☆☆)

  • 16. 子数组的最大累加和问题(士★☆☆☆)

  • 17. 子矩阵的最大累加和问题(尉★★☆☆)

  • 18. 在数组中找到一个局部最小的位置(尉★★☆☆)

  • 19. 数组中子数组的最大累乘积(尉★★☆☆)

  • 20. 打印N 个数组整体最大的Top K(尉★★☆☆)

  • 21. 边界都是1 的最大正方形大小(尉★★☆☆)

  • 22. 不包含本位置值的累乘数组(士★☆☆☆)

  • 23. 数组的partition 调整(士★☆☆☆)

  • 24. 求最短通路值(尉★★☆☆)

  • 25. 数组中未出现的最小正整数(尉★★☆☆)

  • 26. 数组排序之后相邻数的最大差值(尉★★☆☆)

image

程序员代码面试指南-IT名企算法与数据结构题目最优解:其他问题(34)

  • 1. 从5 随机到7 随机及其扩展(原问题尉★★☆☆补充问题尉★★☆☆)(进阶问题校★★★☆)

  • 2. 一行代码求两个数的最大公约数(士★★☆☆)

  • 3. 有关阶乘的两个问题(原问题尉★★☆☆进阶问题校★★★☆)

  • 4. 判断一个点是否在矩形内部(尉★★☆☆)

  • 5. 判断一个点是否在三角形内部(尉★★☆☆)

  • 6. 折纸问题(尉★★☆☆)

  • 7. 蓄水池算法(尉★★☆☆)

  • 8. 设计有setAll功能的哈希表(士★☆☆☆)

  • 9. 最大的leftMax与rightMax之差的绝对值(校★★★☆)

  • 10. 设计可以变更的缓存结构(尉★★☆☆)

  • 11. 设计RandomPool结构(尉★★☆☆)

  • 12. 调整[0 ,x)区间上的数出现的概率(士★☆☆☆)

  • 13. 路径数组变为统计数组(校★★★☆)

  • 14. 正数数组的最小不可组成和(尉★★☆☆)

  • 15. 一种字符串和数字的对应关系(校★★★☆)

  • 16. 1 到n 中1 出现的次数(校★★★☆)

  • 17. 从N 个数中等概率打印M 个数(士★☆☆☆)

  • 18. 判断一个数是否是回文数(士★☆☆☆)

  • 19. 在有序旋转数组中找到最小值(尉★★☆☆)

  • 20. 在有序旋转数组中找到一个数(尉★★☆☆)

  • 21. 数字的英文表达和中文表达(校★★★☆)

  • 22. 分糖果问题(校★★★☆)

  • 23. 一种消息接收并打印的结构设计(尉★★☆☆)

  • 24. 设计一个没有扩容负担的堆结构(将★★★★)

  • 25. 随时找到数据流的中位数(将★★★★)

  • 26. 在两个长度相等的排序数组中找到上中位数(尉★★☆☆)

  • 27. 在两个排序数组中找到第K 小的数(将★★★★)

  • 28. 两个有序数组间相加和的TOP K 问题(尉★★☆☆)

image

第三个:<算法刷题LeetCode>

<算法刷题LeetCode>应该是大家最熟悉不过的了,这里就不再过多的介绍,刷刷刷刷刷…

image

image

Over!关于算法,就到这儿了,关键还得多动手,刷刷刷起来!代码敲起来!

最后,附一张自己面试前准备的脑图:

image

面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典

  • Java核心知识整理

image

  • Spring全家桶(实战系列)

image.png

Step3:刷题

既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

以下是我私藏的面试题库:

image

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。

资料领取方式:Java全套学习手册

]

面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典

  • Java核心知识整理

[外链图片转存中…(img-8fEIxifh-1625121113455)]

  • Spring全家桶(实战系列)

[外链图片转存中…(img-KgPYJB4g-1625121113455)]

Step3:刷题

既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

以下是我私藏的面试题库:

[外链图片转存中…(img-ZEgQViQz-1625121113456)]

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。

资料领取方式:Java全套学习手册

以上学习资料均免费分享,最后祝愿各位身体健康,顺利拿到心仪的offer!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着多核处理器的普及,使用并发成为构建高性能应用程序的关键。Java 5以及6在开发并发程序取得了显著的进步,提高了Java虚拟机的性能,提高了并发类的可伸缩性,并加入了丰富的新并发构建块。在本书中,这些便利工具的创造者不仅解释了它们究竟如何工作、如何使用,同时,还阐释了创造它们的原因,及其背后的设计模式。 本书既能够成为读者的理论支持,又可以作为构建可靠的,可伸缩的,可维护的并发程序的技术支持。本书并不仅仅提供并发API的清单及其机制,本书还提供了设计原则,模式和思想模型,使我们能够更好地构建正确的,性能良好的并发程序。 本书的读者是那些具有一定Java编程经验的程序员、希望了解Java SE 5,6在线程技术上的改进和新特性的程序员,以及Java并发编程的爱好者。 目录 代码清单 序 第1章 介绍 1.1 并发的(非常)简短历史 1.2 线程的优点 1.3 线程的风险 1.4 线程无处不在 第1部分 基础 第2章 线程安全 2.1 什么是线程安全性 2.2 原子性 2.3 锁 2.4 用锁来保护状态 2.5 活跃度与性能 第3章 共享对象 3.1 可见性 3.2 发布和逸出 3.3 线程封闭 3.4 不可变性 3.5 安全发布 . 第4章 组合对象 4.1 设计线程安全的类 4.2 实例限制 4.3 委托线程安全 4.4 向已有的线程安全类添加功能 4.5 同步策略的文档化 第5章 构建块 5.1 同步容器 5.2 发容器 5.3 阻塞队列和生产者一消费者模式 5.4 阻塞和可中断的方法 5.5 Synchronizer 5.6 为计算结果建立高效、可伸缩的高速缓存 第2部分 构建并发应用程序 第6章 任务执行 6.1 在线程中执行任务 6.2 Executor 框架 6.3 寻找可强化的并行性 第7章 取消和关闭 7.1 任务取消 7.2 停止基于线程的服务 7.3 处理反常的线程终止 7.4 JVM关闭 第8章 应用线程池 8.1 任务与执行策略问的隐性耦合 8.2 定制线程池的大小 8.3 配置ThreadPoolExecutor 8.4 扩展ThreadPoolExecutor 8.5 并行递归算法 第9章 GUI应用程序 9.1 为什么GUI是单线程化的 9.2 短期的GUI任务 9.3 耗时GUI任务 9.4 共享数据模型 9.5 其他形式的单线程子系统 第3部分 活跃度,性能和测试 第10章 避免活跃度危险 第11章 性能和可伸缩性 第12章 测试并发程序 第4部分 高级主题 第13章 显示锁 第14章 构建自定义的同步工具 第15章 原子变量与非阻塞同步机制 第16章 Java存储模型 附录A 同步Annotation 参考文献 索引

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值