一叶障目
广东大学·2022届

你得伸手,苹果才是你的

截止到今天中午,正式结束秋招。写这篇帖子,主要是给下一届学弟学妹或者准备参加春招的同学一个参考,以及给自己的秋招辛酸史一个交代。 按照时间顺序: 百度——测开 一面: 1、基本的Linux指令 2、快排 时间复杂度和空间复杂度 3、在项目中用到了什么排序的算法 4、有100亿个URL,从里面找出重复的URL 5、描述HashMap 6、HashCode怎么计算(考虑哪些东西) 7、HashCode的作用(映射) 8、内存泄漏 9、信息熵是什么 有什么意义 11、判断一个树的左右子树是否对称 12、目前觉得比较有成就感的事情 13、描述一下JAVA的反射机制 为什么JAVA能实现反射C++不能 14、Spring框架的AoP的实现原理 15、描述一下生产者和消费者的模式 多线程和单线程在代码上的主要的区别 16、Object对象有哪些方法 17、equals和==的不同 18、判断一个链表是否有环 19、java里面怎么实现单例模式的 二面: 1、一面的java反射 再解释一下 2、项目 3、输入是整形的数组和一个给定的数 返回数组内等于这个目标数的两个数字的下标 4、Linux文件的权限(管理) 5、Linux下查找目录下的子文件 并进行删除 6、还是针对项目里面问的 7、在数据库里面 视图和表的区别 视图一般在什么场景进行应用(安全机制、查询性能并不比MySQL快) 8、JDBC连接数据的时候,Statement和PreparedStatement的区别 9、MySQL里面什么东西是预编译的 10、存储过程 11、存储过程是预编译的么 12、String和StringBuffer的区别 13、final可以用在哪里 14、copy命令 cp 原地址 目标地址。把文件从原来的的地址复制到目标地址上 有哪些方面需要进行测试 15、项目中是否用到过排序的算法 在什么场景下用到的 16、两根蜡烛 燃烧的时间是一样的都是一个小时,两个蜡烛的密度分布是不均匀的,通过两个蜡烛确认一段15分钟的时间 17、两个整形数组,找出两个数组的交集,两个数组的长度不一定一样 18、数据量很大,内存有限不能用相同大小的存储空间,时间复杂度不能超过O(n)。(用Hash) 19、平时用过版本管理么(Git进行代码的版本管理 Gradle Wrapper) 20、线程之间发生死锁的原因 21、同时来多个测试工作给你,你将怎么规划这些工作 三面: 1、自我介绍 2、针对本科的项目 说说自己负责的地方 有没有什么难点 3、详细讲述论文的创新点和完成的过程 4、有没有和同学合作完成过什么东西 5、合作的过程中如果发现他有错误,你是怎么提醒他的 6、有没有因为和别人争论而发生不愉快 7、你觉得自身有什么缺点 8、你到目前为止觉得最有趣的经历 9、你自己有没有对自己有什么规划 10、本科和研究生中你觉得最有趣的课程,为什么觉得数据结构有趣 11、你的家人支持你做互联网么 12、对前阶段百度的负面新闻,你觉得百度应该怎么应对 13、你认为在工作中你想对他人自己有什么优势,又有什么劣势,针对劣势自己怎么补救 14、有没有什么想去的城市工作 15、你有什么要问我的么 8月16号收到offer call。突然的顺利,突然的惊喜。由于自己的短浅眼界,流连在这个offer里。自以为就这么顺利的结束秋招,开始只学习自己感兴趣的东西并着手开始写毕业论文。 8月底,收到电话告诉我看看别的机会,不录用我了???收到电话的当晚一夜没睡,问我自己我到底都干了什么。 不到一周,知道了爷爷在住院的噩耗。整个人感觉就垮了,没有支撑点。 在不到十天的时间里,整个人感觉跌倒了低谷。重整旗鼓,准备重新备战秋招。 小红书——测开 一面: 1、用数组实现ArrayList 2、倒序栈(不能用辅助空间) 3、说说自己熟悉的数据结构 4、详细说HashMap 5、为什么HashMap的大小都是2的n次方 6、TCP挥手为什么是四次 二面: 1、JAVA虚拟机的内存模型 2、HTTPS的具体实现 3、手撕:查出数组里面出现次数最少的n个数字 4、手撕:查找左右节点的最低公共祖先 5、TCP 6、25匹马,5个跑道,需要几次能找到跑的最快的3匹马 7、小红书打开的时候该出现的广告没出现,说说原因 8、什么样的数值适合做索引 9、什么情况下不会用到索引 10、找出班级里面平均分前三的学生 11、为什么做测试开发 12、针对项目,详细展开 三面: 设计一个程序题,要求不断去优化 手撕:实现矩阵的翻转 HR面: 1、对小红书的印象 2、对未来的规划 3、认为平台和leader哪个更重要 4、家人对你做这个行业的看法 猫眼——测开(只写了自己记得了的) 1、两道手撕题记不清了,但是都不难 2、单索引和复合索引 3、什么字段适合做索引 4、equals和==的区别 5、常用的端口号 6、Map和List 度小满——测开 一面: 1、项目 2、手撕:找到合为定值的两个数字的下标 3、手撕:二叉树的镜像 4、TCP、UDP 5、HTTP中的cookie和session 它们之间有什么联系 6、get和post 7、为什么post安全 详细说明 二面: 1、项目 2、手撕:给你一系列字符串,像abc、bd、cb这种前后相接是能连在一起的,不限制第一个单词和最后一个单词的顺序。问给你n个字符串,判断这些字符串是否能这样窜起来 3、手撕:工厂模式 4、进程死锁 5、进程和线程 6、HTTP压缩和分段 三面: 1、项目 2、为什么想要做测开 3、针对数据库问了一些问题 4、研究生自己觉得的成就 5、觉得困难的事情,怎么看待并且怎么解决 依图——测开 1、手撕:实现多线程 2、手撕:单例模式、工厂模式 3、手撕:快速排序 并说出自己对快排的理解 4、手撕:一个动规我记得 面经主要就是自己记录的这些,知识点的话: TCP、HTTP、进程、线程出现频率较高,一定要深入的去了解。刷题的话尽量每天都刷不要断,JVM多查查知识点,较注重垃圾回收机制和数据存储。 以上就是自己对秋招的一些总结和记录,作为一个失败的菜鸡,不指望能帮助大家很多,就想要告诉大家不要像我这样容易松懈,每个人都不差一定要坚持。还有就是提前批能参加就参加,不要觉得自己还没学完,活到老学到老,知识是永远学不完的,苹果就摆在那里,你不试着去拿,不可能自己跑到你手里!你的成果定不负你的付出~
分享
6
先马后看
望舒Eloise
四川大学·2022届

paypal电面

有面过PayPal的同学吗?刚接到电面通知,以我手头有活为由推迟到今天下午了。大神们求分享啊。(●'◡'●) 自问自答吧。PayPal感觉更偏好有机器学习和大数据处理背景的同学。总时长接近四十分钟吧,先给面试官点个赞b( ̄▽ ̄)d。 一.语言方面   1. 函数式编程和面向对象编程的区别? 只凭印象硬着头皮回答了出了在函数式编程里面函数是一等公民,然后支支吾吾半天,善解人意的面试官就让我停住了,说知道我这方面的深度了。 2. python水平怎么样? 我说会用但不熟,自己主要写java和c的。 3. java里面的Object里有哪些方法? 这个还我很熟呀,立马答道equals、hashcode、toString、wait、notify、notifyAll,面试官说行了,然后又打住了。盼望着多来几个java的题目,可面试官转移到我的项目了。 二.项目 1. 介绍下这个J2EE的项目?你在里面主要负责哪一块? springMVC,spring-core,IOC,aop,orm,hibernate, blabla。。。。,说了一大堆,但感觉面试官对这个项目不是很感兴趣,也许只是简单想要看下自己能否表达清楚吧。 2.介绍下你的这个建模大赛题目?用到了啥算法?解释下原理? 选的是一个场景特征提取问题,里面主要用到了PCA(主成分分析法),然后讲了一下实现过程,以及是怎样降维的。面试官听完后说我原理方面理解不是很头侧,然后给我讲了一下。(★ω ★),面试官还是很耐斯的。 3.介绍下离散傅里叶变换呗?分析下它的时间复杂度,以及如何改进? ( ̄▽ ̄)",可算是遇到行家啦。dft基的正交性。O(n2)的复杂度,采用fft分组计算,蝶形算子可以降低时间复杂度。 三. 机器学习和大数据处理 1.spark的rdd,和hadoop的区别,在什么情况spark会优于hadoop? 一年前用过的spark,忘得差不多了。但还是说了一点,内存计算,减少io开销,transform和action等。 2. 知道overfitting吗?linearregression的l1、l2正则有啥区别? overfitting过拟合还是知道的,本来想说cross-validation可以避免过拟合的,但当时一直没想起来,更加具体的也不知道啦(▼-▼ )关于l1、l2正则,自己只知道其中一个可以得到稀疏的解。然后也就这样啦! 四. 算法与数据结构 1.知道快速排序吗?讲下原理?时间复杂度?以及如何选取pivot? 主要是选取pivot上答得不是很好,只给出了一个随机选取pivot的方法。
分享
10
原味笔面经
Damon
上海外服_总监

点击上方链接, 用简历来砸我吧! 1. 负责Linux软件的设计、研发; 2. 负责软件需求分析、软件方案制定、核心模块的详细设计、编码; 3. 负责代码单元测试和集成测试; 4. 负责产品的软件维护和前沿技术研究。 职位关键词:Linux 职位亮点:技术前沿成长迅速大牛导师 工作地点:郑州
分享
评论
我这里招人
虾仁仁
安徽财经大学·2022届

舍弗勒长沙研发中心2021校园招聘

招聘对象:2021年全日制应届毕业生 网申时间:9月20日至10月15日 招聘详情点击图片进行浏览 😎网申地址:http://campus.51job.com/schaeffler2021/
分享
1
校招情报局
远醇
西安电子科技大学·2022届

浙江省水利水电勘测设计院2021校园招聘

招聘对象:2021年全日制应届毕业生 网申时间:9月27日至10月22日 招聘详情点击图片进行浏览 😎网申地址:https://zdwp.zhiye.com/Campus
分享
1
校招情报局
流年煮书
清华大学·2022届

京东HR面 (提前20分钟通知+3次电话中断)

京东HR面 33分钟 这个我真的是不想吐槽嗷,真的是我见过效率"最高的公司".6点40邮件通知我7点电话面试,京东,你可以的! 1. 自我介绍 2. 之前的工作都是与市场和品牌相关的,请问你有什么优势胜任商家运营的岗位呢? 3. 深挖简历:3份实习经历深挖!从开始到结束,事无巨细! 4.详细问了团队合作的问题,和很多性格问题 5.如何做数据分析?怎么做? 6. 如果让你去分析天猫的商家运营如何做的,你会怎么做?你会怎么把这些内容运营在京东平台,你认为哪些内容可以优化,哪些内容可以传承 7. 未来3年的职业规划,近五年准备在哪里定居,什么时候结婚 8. 为什么选择北京?父母做什么的?是不是独生子? 9. 反问 等这么久,我已经佛系了,希望能快点给我个痛快!!!对了,中间电话断了3次,搞人心态!!!
分享
10
原味笔面经
Alkaid.K
重庆邮电大学·2022届

美团SRE工程师一面面经

被美团捞起来了,感谢美团爸爸 1.自我介绍 2.项目上最难的,为啥子难? 3.tcp\udp的区别 4.三次握手四次挥手为什么三次握手。 5.linux查看内存,查看端口。 6.数据库的一致性,可用性,矛盾的什么什么 这个我还真不知道。 7.喜欢看什么书 8.电脑上不了网了如何排查? 哈哈哈 我说给电信打电话。 9.造成cpu100%可能有哪些原因。 复制代码 1 2 3 4 5 6 7 8 1,首先根据top命令,发现占用cpu最高的进程PID 通过ps aux | grep PID命令,进一步查看当前进程的具体信息。 ps -mp 14811 -o THREAD,tid,time 找到耗时最高的线程TID,并将其线程ID转换为16进制格式: printf “%x\n” tid 3. 打印线程的堆栈信息,thread dump jstack pid |grep tid -A 30 进一步分析堆栈信息,就会定位到问题所在 10.你们大学生现在是咋找工作的? 面试官应该工作好多年了,是个大叔感觉! 11.学爬虫觉得难不难,当时咋搞的? 下面就乱扯聊天了,讲了讲部门做什么,讲了讲和测试开发的区别等等,整个40分钟左右,挺轻松愉快的。说技术面好像还得三轮,天哪 许愿二面。
分享
评论
超好运许愿池
FameX
利物浦大学·2020届

测试开发工程师面试经验(广州) - 中国平安

面试过程:上海平安资管测试岗面试,总共四轮面试,1面技术面,2位面试官,2面-3面综合面,4面hr面。 面试官主要考察的是项目经验,测试体系各测试方法熟悉度,测试流程、敏捷、开发技术水平、业务敏锐度。 面试官问的面试题: 1. 自我介绍,根据我自己简历中的所做的项目来提问其中的一些细节。比如做过什么、怎么做的,遇到什么问题,最后怎么解决的。 2. 对质量保障和把控的理解 3. 对自动化测试、性能测试的熟悉度 4. 对人工智能、区块链的了解程度 另外面试官在介绍公司业务后,自己的提问。我问了 1)要做的这个新产品,市场前景怎么样,是否有竞争力 2)关于执行层面,这个项目的团队规模有多大,都有哪些角色,承担哪些职责 3)我入职后,会负责哪一块,对我的技术和业务上的期望有哪些 4)我的岗位的职业规划是怎么样的
分享
2
原味笔面经
无念很爱学习哟
昆士兰大学·2022届

非科班的渣渣总结

一般来说,XXX总结都是大佬写的,然后下面就是一堆Offer以及面经,我还真不好意思写面经,毕竟没有啥大offer,所以大佬请别嘲笑。 我的春招实习差不多就结束了吧,还剩下头条的面试流程以及等待快手的HR面(或者挂了)。 春招实习从2月4号开始准备,到今天,整三个月。拿到的offer非常非常一般,和大佬不能比。 楼主三个月记录如下(按时间来): 1.阿里一面挂(第一次就是面阿里,话都数不清楚) 2.百词斩(offer) 3.华为(排序) 4.顺丰(一面挂,真的不忍吐槽,下面会讲) 5.去哪儿一面挂(我不服) 6.京东一面挂(问前端。。。) 7.携程(offer) 8.腾讯(offer) 9.头条(面试流程中) 10.快手(内推走到二面,笔试走到二面) 面经如下: 阿里: 1.你是非专业的,如何规划学习,平常如何接触计算机行业?在学校有什么突破性的研究成果? 2.为什么想到转计算机这一块,而且花这么多学Java?(回答热爱互联网自由、开放的氛围) 3.谈谈当前互联一些主流应用技术,未来的趋势往哪些发展,谈谈微服务吧?(这个就瞎了) 4.抽象类和接口的区别?(接口方法都是抽象,只能有静态常量;) 5.讲一讲平时用到的抽象类,为什么使用抽象类?(我提到了AbstractStringBuilder以及他的子类StringBuilder和StringBuffer) 6.谈谈Java堆和栈?(巴拉巴拉都说了一遍) 7.什么时候发生Full GC?(老年代空间不够的时候) 8.写代码时候如何避免FullGC对系统的影响?(我回答的是减少对象的创建,多使用单例) 9.多线程如何实现线程安全?(synchronized,lock,volatile只能是轻量级,不能保证线程安全,对于线程不共享的资源使用ThreadLocal) 10.解释一下信号量?(举了一个上厕所的例子) 11.解释一下乐观锁和悲观锁的区别? 12.乐观锁如何实现?乐观锁在什么时候进行加锁?(CAS,资源竞争的时候加锁) 13.线程死锁如何调试?用什么工具来调试定位?(我回答Jconsle) 14.SQL注入是什么,如何避免SQL注入?(回答SQL使用preparestament,应用上面使用正则表达式过滤有危害的sql) 15.MySQL如何实现分页?如何优化limit?(第二点没有答出来。) 16.SQL语句调优有哪些方法?(看慢日志定位SQL语句,使用explain 分析SQL)(面试回答,了解,基本可以) 17.Timestamps和datetime的差异?(我只回答了起始时间不同,没有回答字节不同)(行了,我大概了解) 18.Linux下如何查看文件?在文件中如何搜索关键字?(第一问回答了vi/vim,第二问我回答find+查找内容命令,我的脑子肯定出了问题,回答了搜索文件命令) 19.用什么命令查看端口是否被占用?(我回答用top看线程,然后 ps +grep,应该是没回答出来,Linux确实不太行,平时偶尔用下Ubuntu) 20.了解过Zookeeper嘛?(回答正在看Paxos到Zookeeper这本书) 21.如何实现session共享?(回答做过单点登陆,我使用Redis实现session)(好的呀,我知道了,你这边的情况我了解了,你有什么问我的嘛?) 百词斩: 1面 13分钟: 1.最大堆最小堆的插入流程说一下(先插入最后一个,然后再调整,调整的复杂度是(好了)) 2.优先队列有了解嘛?(嗯了解(好的)) 3.数据库了解吗,你应该用过的吧?(了解,做的项目里面有设计数据库存,自己也写关于MySQL的博客,对MySQL的了解还是可以的(哦哦,好的)) 4.说说秒杀如何实现的?(用redis预库存的减少,然后方式异步消息队列rabbitMQ中) 5.如何实现一个线程安全的HashMap(说了一下HashTable、Collections.sysn。。。、chm。本来还想着说chm的源码实现(好的)) 6.算法题做的多么(刷过leetcode,offer也刷完了) 7.图的最短路劲算法?(不会,说了一下迪杰斯特拉算法这个东西) 8.leetcode的edit—distence(口述了一下,使用dp,说了一下思路) 9.说一下最长子序列?(我正要说,还没开口(¥%……&,哦好)) 10.你研究方向是什么?(做硬件方面的存储,(硬件啊?,也就是软件不是主修?)) 11.做过什么系统吗?(您说操作系统吗?(就是你本科学什么的?)) 12.说一下solr?(说了一下solr,(ok)) 13.我看了你推了一下实习生,你是实习吧?(what?我难道投递错了?) 14.%^&#$^&,嗯,就这样(前面真没听清楚,what?老师结束了嘛?(嗯,技术面就这样结束了,后面因该会有人联系)) 二面 45分钟: 1.B+树查找的效率分析,使用B+树作索引结构相比较使用B树有什么优点,和Hash比有什么优点? 2.如何分析一个SQL语句是否使用索引? 3.一个非多表链接的sql语句能否同时使用到多个索引?例如where  id=xx and  name = xxxx? 4.把NIO说一遍(这里我把5种IO都说了一下,然后说了java中的实现) 5.linux中select在轮循多个连接的时候如何操作?不会回出现CPU100%的情况?为什么不会出现? 6.不同的服务是否能得到所有的cookie?服务器如何识别?除了host还有没有别的识别方法? 7.cookie在请求时是如何写在request中的?服务端是如何写到cookie中的?response里面的cookie是怎样表示的? 8.linux命令行中如何使用管道? 9.操作系统如何控制一个资源只能被一个进程访问,也就是锁是如何实现的?(这里我说能不能从Java说,面试官说,我需要底层原理,Java应该解释不清楚) 10.项目的抢购模块如何解决超卖的问题? 11.项目里的QPS如何提高和优化的? 华为: 一面: 1.说一下redis? 2.说一下缓存击穿是什么? 3.为什么用rabbitMQ而不用kafka? 有什么要问的么? 二面: 1.机械硬盘的转速多少? 2.固态硬盘的读取速度多少? 3.你电脑的硬盘速度多少? 4.说一下工资和地点 顺丰(真的不忍吐槽,花了一个半小时做测试花了一个半小时做笔试,就是浪费时间): 1.进程线程说一下? 2.项目觉得做的最好的地方和最不好的地方? 3.和同事之间有矛盾怎么解决? 4.和同事时间如何配合? 5.我们不看中技术,更加看重学习能力。 然后我就挂了,可能我学习能力不够吧,浪费3小时在顺丰上,还让我注册智联招聘,注册以后一个接一个垃圾邮件。MMP 去哪儿:(最不顺的一天) 项目的意义和出发点?项目数据库如何设计的?http?谈了两个报文的详细结构,以及说了常见的状态码。索引的结构。我这里对于Hash索引的缺点没有说完整 手写sql:手写两个算法。递归和非递归的实现。 除了Hash索引的缺点,其他都回答出来了。然后GG 京东电话面: 1.你不是科班的,那你知道总线么?(啥?) 2.不是科班的话知道数据结构吗?二叉树呢?说说在项目里面的应用(我没用到过,别人的项目也没看到人直接用二叉树啊) 3.你知道前端页面的时间是有误差的么?如何减少误差?(我一个后台的你问前端的?) 4.如何避免少买?(不用付钱就行了;秒杀情景下,有支付环节就有少买,这是避免不了的,问的莫名其妙) GG 腾讯: 一面82分钟: 首先问到了项目的架构设计,然后扩展,如果自己项目需要满足10W QPS的需求,架构如何设计? 项目里面高并发下如何实现请求的过滤以及消峰? 集群环境下如何保证数据的一致性? 服务器集群以后如何做到数据的共享? 说一说一致性Hash吧? 问我MySQL主从复制会不会?回答不会。 那你自己设计一下MySQL的主从复制应该如何解决?画一下你的思路? 最后面试官告诉了我MySQL主从复制的原理。然后和他探讨了一下我对这个原理的疑惑。 当时是使用了Redis主从复制的思想来考虑的。 你这种解决办法是从结果来考虑,是不能从原因角度考虑? 说一下STL的Map? 我说我不会,然后讲了一下java的实现,画了一下数据结构图。 讲一下红黑树? 我说您直接看我博客吧,里面有对他的分析。 ali云用的linux什么版本?虚拟机的呢? 说一下常用的shell命令? 看过那些书? 选择出最好的三本? 学习过程? 为什么硕士不报计算机? 你项目里面的这些架构的设计是怎么学习的? 还有一些架构设计的问题忘了了。 二面: 面试开始(被吊打之旅开始,完完全全被吊打的没有还手之力): 一轮面试官对你评价比较好啊,说你是自学Java的?说一下过程? 你懂不懂C++呢?说一些你会的就行。 -1的二进制码是多少? 说一说大小端? 描述一下客户端和服务端进行socket的系统的过程吧? 系统调用是怎样的? 如果服务端在listen以后sleep了,那么client的connect还能接收到么? 进程间通信说一下? 选择一种说一下实现原理? 那么管道和消息队列之间有什么区别么? 为什么有这个区别? 快排思路说一下? 手下一下,拍照片给我。 知道队列么? 手写一下用数组实现的循环队列吧,只需要两个方法入队以及出队? 在改进一下? 为什么使用这种写法?这样就会有一个空间没有利用。可以不可在改一下? 快手内推: 一面全程55min: 全程聊自己的项目架构设计以及改进点的设计,还是面试官提出场景需求,我负责系统架构的设计,2分钟的时间考虑。 技术问题: 数据库的隔离级别? 默认的隔离级别? 三次握手? 最后和面试官沟通的时候才知道我是实习,他以为我是社招,然后让我加他的微信。和面试官微信沟通后确认已经过了,让我好好准备下一轮。 二面: 原定于11点,改到下午5点,改到下午6点。 全程20min 1.自我介绍 2.什么时候能来实习啊? 3.实习来快手想做什么事情? 4.设计双11的系统? 首页静态化+CDN,服务器临时增加负载均衡+集群,数据库Redis增加集群节点数,将一些非核心的业务功能关闭。 5.聊一下CAP? 我说我不知道这是啥。然后面试官解释给我听,让我说一下自己的理解。 携程: 1.自我介绍 2.介绍学习过 3.技能栈里面的开源框架和中间件都是自学的么? 4.哈夫曼编码知道么? 我说我知道哈夫曼树。 5.你项目里面的有优惠券这个东西,有没有涉及到真正的支付过程? 没有,只是做了一个Demo,还没有接入支付API。 6.说说秒杀模块的架构设计? 7.为什么使用Redis做两次过滤? 第一次用来拦截,第二次用来减少少买。然后异步队列消峰。 8.只有一次过滤可以么? 可以,第二个项目里面的优惠券抢购就是一次过滤。 9.有没有tomcat调优过? 我说我简历里面都写了调优后提高了多少QPS,然后又说了说自己如何调优的。 10.无限量数据排序去除前100W大的数据? 首先问了每一个数据的范围。可以使用bitMap,Hash分治,还有堆排序 11.说一说堆排序的原理? 12.刚才的场景用大顶堆还是小顶堆? 13.手写一下堆排序? 14.Spring和MyBatis了解到什么程度? 源码级别,写过相关的博客,也debug过,您可以随便问。 15.反射知道吗? 说了一下SpringIOC里面用到了反射,以及反射用来干嘛。 16.你是软件工程的么? 17.为什么想转Java? 18.有什么要问的? 头条还没有面试完成。 之前有一个同学让我说一下自学之路,那就稍微说一下吧: 16年10月  就看了一本Head First Java,当时看不懂,然后就看一下马士兵的视频,感谢马老师。 17年3月,看了一下JDBC和MYSQL 17年7月到8月,暑假开始看了一下框架,白天做家教,就晚上花三个小时看的。 9月  初看了一下数据结构,中旬跟着视频做了一下项目,然后不看视频完全自己做。 10月  开始看基础,并发,JVM,MYSQL,写博客 11月  重新写了一下之前的视频项目,月底花了一个礼拜自己用SSM写了一个博客放在阿里云上了 12月  开始看Redis,Solr,学习了一下RabbitMQ,月底看了《大型网站技术架构》,然后自己设计了一个小架构,写了一个秒杀的Demo 18年1月   自己想做一个食堂外带项目,自己构思需求,自己设计架构以及数据库表,模块分离,以及集群+主从搭建。 18年2月   回顾自己学习的知识点,看书,项目做的比较少了 18年3月   完善了一下项目,减少XSS和CRSF攻击,以及消除缓存击穿以及缓存学奔,优化了项目,提高了一些QPS。然后就是不断投简历,笔试+面试+看面经 18年4月   笔试+面试+看面经 10次面试,给我的感觉就是我作为非科班的同学,计算机基础知识比较薄弱,所以需要加强很多。 书籍的话其实就那几本书,没什么好推荐的,倒是可以看看优秀的博客。 还是写一写吧: Thinking in Java 算法与数据结构 OS concepts Tcp/ip详解 卷1,图解TCP图解HTTP 深入浅出MySql以及InnoDB 技术内幕 JVM Spring In Action Spring源码解读(我是自己Debug过一遍,书看一遍,再博客看一遍,然而一个面试官否没问到源码),MyBatis也看了源码 JavaWeb技术内幕(神书) Head First 设计模式 大型网站技术架构(神书,学习了好多好多) 从Paxos到ZooKeeper 并发的书籍,算了还是看博客吧 Redis,Solr,RabbitMQ都看博客吧。 还有一些乱七八杂的树就不推荐了。
分享
12
先马后看
森林
长安大学·2022届

机器学习笔记——相似性度量

1. 欧氏距离(EuclideanDistance) (1)二维平面上两点a(x1,y1)与b(x2,y2)间的欧氏距离: (2)三维空间两点a(x1,y1,z1)与b(x2,y2,z2)间的欧氏距离: (3)两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的欧氏距离: (4)Matlab计算欧氏距离 Matlab计算距离主要使用pdist函数。若X是一个M×N的矩阵,则pdist(X)将X矩阵M行的每一行作为一个N维向量,然后计算这M个向量两两间的距离。 例子:计算向量(0,0)、(1,0)、(0,2)两两间的欧式距离 X= [0 0 ; 1 0 ; 0 2] D= pdist(X,'euclidean') 结果: D=     1.0000   2.0000    2.2361 3. 切比雪夫距离 ( Chebyshev Distance )  国际象棋玩过么?国王走一步能够移动到相邻的8个方格中的任意一个。那么国王从格子(x1,y1)走到格子(x2,y2)最少需要多少步?自己走走试试。你会发现最少步数总是max(| x2-x1 | , | y2-y1 | ) 步。有一种类似的一种距离度量方法叫切比雪夫距离。 (1)二维平面两点a(x1,y1)与b(x2,y2)间的切比雪夫距离 (2)两个n维向量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的切比雪夫距离 (3)Matlab计算切比雪夫距离 例子:计算向量(0,0)、(1,0)、(0,2)两两间的切比雪夫距离 X= [0 0 ; 1 0 ; 0 2] D= pdist(X, 'chebychev') 结果: D=      1    2     2 4. 闵可夫斯基距离(MinkowskiDistance) 闵氏距离不是一种距离,而是一组距离的定义。 (1)闵氏距离的定义 两个n维变量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的闵可夫斯基距离定义为: 其中p是一个变参数。 当p=1时,就是曼哈顿距离 当p=2时,就是欧氏距离 当p→∞时,就是切比雪夫距离 根据变参数的不同,闵氏距离可以表示一类的距离。 (2)闵氏距离的缺点 闵氏距离,包括曼哈顿距离、欧氏距离和切比雪夫距离都存在明显的缺点。 举个例子:二维样本(身高,体重),其中身高范围是150~190,体重范围是50~60,有三个样本:a(180,50),b(190,50),c(180,60)。那么a与b之间的闵氏距离(无论是曼哈顿距离、欧氏距离或切比雪夫距离)等于a与c之间的闵氏距离,但是身高的10cm真的等价于体重的10kg么?因此用闵氏距离来衡量这些样本间的相似度很有问题。 简单说来,闵氏距离的缺点主要有两个:(1)将各个分量的量纲(scale),也就是“单位”当作相同的看待了。(2)没有考虑各个分量的分布(期望,方差等)可能是不同的。 (3)Matlab计算闵氏距离 例子:计算向量(0,0)、(1,0)、(0,2)两两间的闵氏距离(以变参数为2的欧氏距离为例) X= [0 0 ; 1 0 ; 0 2] D= pdist(X,'minkowski',2) 结果: D=     1.0000   2.0000    2.2361 5. 标准化欧氏距离(Standardized Euclidean distance ) (1)标准欧氏距离的定义 标准化后的值 =  ( 标准化前的值  - 分量的均值 ) /分量的标准差 经过简单的推导就可以得到两个n维向量a(x11,x12,…,x1n)与b(x21,x22,…,x2n)间的标准化欧氏距离的公式: 如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(WeightedEuclidean distance)。 (2)Matlab计算标准化欧氏距离 例子:计算向量(0,0)、(1,0)、(0,2)两两间的标准化欧氏距离 (假设两个分量的标准差分别为0.5和1) X= [0 0 ; 1 0 ; 0 2] D= pdist(X, 'seuclidean',[0.5,1]) 结果: D=     2.0000   2.0000    2.8284 6. 马氏距离(MahalanobisDistance) (1)马氏距离定义 (2)马氏距离的优缺点:量纲无关,排除变量之间的相关性的干扰。 (3)Matlab计算(1 2),( 1 3),( 2 2),( 3 1)两两之间的马氏距离 X = [1 2; 1 3; 2 2; 3 1] Y = pdist(X,'mahalanobis') 结果: Y=     2.3452   2.0000    2.3452    1.2247   2.4495    1.2247 7. 夹角余弦(Cosine) 有没有搞错,又不是学几何,怎么扯到夹角余弦了?各位看官稍安勿躁。几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。 (1)在二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式: (2)两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夹角余弦 类似的,对于两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用类似于夹角余弦的概念来衡量它们间的相似程度。 即: 夹角余弦取值范围为[-1,1]。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。 (3)Matlab计算夹角余弦 例子:计算(1,0)、( 1,1.732)、(-1,0)两两间的夹角余弦 X= [1 0 ; 1 1.732 ; -1 0] D= 1- pdist(X, 'cosine')  % Matlab中的pdist(X,'cosine')得到的是1减夹角余弦的值 结果: D=     0.5000  -1.0000   -0.5000 8. 汉明距离(Hammingdistance) (1)汉明距离的定义        两个等长字符串s1与s2之间的汉明距离定义为将其中一个变为另外一个所需要作的最小替换次数。例如字符串“1111”与“1001”之间的汉明距离为2。        应用:信息编码(为了增强容错性,应使得编码间的最小汉明距离尽可能大)。 (2)Matlab计算汉明距离 Matlab中2个向量之间的汉明距离的定义为2个向量不同的分量所占的百分比。        例子:计算向量(0,0)、(1,0)、(0,2)两两间的汉明距离 X = [0 0 ; 1 0 ; 0 2]; D = PDIST(X, 'hamming') 结果: D=     0.5000   0.5000    1.0000 9. 杰卡德相似系数(Jaccardsimilarity coefficient) (1) 杰卡德相似系数      两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示。 杰卡德相似系数是衡量两个集合的相似度一种指标。 (2) 杰卡德距离 杰卡德距离用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。 (3)杰卡德相似系数与杰卡德距离的应用 可将杰卡德相似系数用在衡量样本的相似度上。 样本A与样本B是两个n维向量,而且所有维度的取值都是0或1。例如:A(0111)和B(1011)。我们将样本看成是一个集合,1表示集合包含该元素,0表示集合不包含该元素。 p:样本A与B都是1的维度的个数 q:样本A是1,样本B是0的维度的个数 r:样本A是0,样本B是1的维度的个数 s:样本A与B都是0的维度的个数 那么样本A与B的杰卡德相似系数可以表示为: 这里p+q+r可理解为A与B的并集的元素个数,而p是A与B的交集的元素个数。 而样本A与B的杰卡德距离表示为: (4)Matlab计算杰卡德距离 Matlab的pdist函数定义的杰卡德距离跟我这里的定义有一些差别,Matlab中将其定义为不同的维度的个数占“非全零维度”的比例。 例子:计算(1,1,0)、(1,-1,0)、(-1,1,0)两两之间的杰卡德距离 X= [1 1 0; 1 -1 0; -1 1 0] D= pdist( X , 'jaccard') 结果 D= 0.5000    0.5000   1.0000   10. 相关系数( Correlation coefficient )与相关距离(Correlation distance) (1)相关系数的定义 相关系数是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。 (2)相关距离的定义 (3)Matlab计算(1, 2 ,3 ,4 )与( 3 ,8 ,7 ,6 )之间的相关系数与相关距离 X = [1 2 3 4 ; 3 8 7 6] C = corrcoef( X' )   %将返回相关系数矩阵 D = pdist( X , 'correlation') 结果: C=     1.0000   0.4781     0.4781   1.0000 D= 0.5219       其中0.4781就是相关系数,0.5219是相关距离。 11. 信息熵(Information Entropy) 信息熵并不属于一种相似性度量。那为什么放在这篇文章中啊?这个。。。我也不知道。 (╯▽╰) 信息熵是衡量分布的混乱程度或分散程度的一种度量。分布越分散(或者说分布越平均),信息熵就越大。分布越有序(或者说分布越集中),信息熵就越小。
分享
4
先马后看
Ozean
天津商业大学·2022届

职场感言:没有学不会的业务,只有看不懂的人事

职场感言:没有学不会的业务,只有看不懂的人事 现在越来越觉得马克思的一句话说的好,人是社会关系的总和,业务没有多复杂,复杂的是人,人事关系很复杂,如果你周围的人都和蔼、都乐于助人,那么即使一个并不聪明的人,在这个环境下,也能迅速地成长,一个乐于分享的环境是很重要的,能够培植后进的、年轻的,而不去搞其他事情,这点环境很重要,即使你起点不高、学历不高、能力不强,这里的工资收入不高,但是只要有好的人事环境,你就一定能够发展起来,而且会发展得不错。 记住一点,业务永远没有那么难,普通的银行业务、科技业务、你只要具备普通人的智商,足够用了,你所要关注的是什么呢,是人事关系,周围的人是不是乐于助人,是不是包容大度,如果你与周围的领导、同事相互包容,相互理解,相互帮助,内部相互团结,那么这个环境你就选对了,一定要干下去,除非原有的与你相合的领导、同事换了,那么你要考虑下一步的去向了,就是这样,很简单。
分享
评论
先马后看
GEM-Sene
华南农业大学·2022届

面试常问智力题

赛马次数 有 25 匹马和 5 条赛道,赛马过程无法进行计时,只能知道相对快慢。问最少需要几场赛马可以知道前 3 名。 先把 25 匹马分成 5 组,进行 5 场赛马,得到每组的排名。再将每组的第 1 名选出,进行 1 场赛马,按照这场的排名将 5 组先后标为 A、B、C、D、E。可以知道,A 组的第 1 名就是所有 25 匹马的第 1 名。而第 2、3 名只可能在 A 组的 2、3 名,B 组的第 1、2 名,和 C 组的第 1 名,总共 5 匹马,让这 5 匹马再进行 1 场赛马,前两名就是第 2、3 名。所以总共是 5+1+1=7 场赛马。 A 组:1,2,3,4,5 B 组:1,2,3,4,5 C 组:1,2,3,4,5 D 组:1,2,3,4,5 E 组:1,2,3,4,5 用绳子计时 15 分钟 给定两条绳子,每条绳子烧完正好一个小时,并且绳子是不均匀的。问要怎么准确测量 15 分钟。 点燃第一条绳子 R1 两头的同时,点燃第二条绳子 R2 的一头; 当 R1 烧完,正好过去 30 分钟,而 R2 还可以再烧 30 分钟; 点燃 R2 的另一头,15 分钟后,R2 将全部烧完。 九球称重 有 9 个球,其中 8 个球质量相同,有 1 个球比较重。要求用 2 次天平,找出比较重的那个球。 将这些球均分成 3 个一组共 3 组,选出 2 组称重,如果 1 组比较重,那么重球在比较重的那 1 组;如果 1 组重量相等,那么重球在另外 1 组。 对比较重的那 1 组的 3 个球再分成 3 组,重复上面的步骤。 药丸称重 有 20 瓶药丸,其中 19 瓶药丸质量相同为 1 克,剩下一瓶药丸质量为 1.1 克。瓶子中有无数个药丸。要求用一次天平找出药丸质量 1.1 克的药瓶。 可以从药丸的数量上来制造差异:从第 i 瓶药丸中取出 i 个药丸,然后一起称重。可以知道,如果第 i 瓶药丸重 1.1 克/粒,那么称重结果就会比正常情况下重 0.1 * i 克。 得到 4 升的水 有两个杯子,容量分别为 5 升和 3 升,水的供应不断。问怎么用这两个杯子得到 4 升的水。 可以理解为用若干个 5 和 3 做减法得到 4。 不能从 3 做减法得到 4,那么只能从 5 做减法得到 4,即最后一个运算应该为 5 - 1 = 4,此时问题转换为得到 1 升的水; 1 升的水可以由 3 做减法得到,3 - 2 = 1,此时问题转换为得到 2 升的水; 5 - 3 = 2。 扔鸡蛋 一栋楼有 100 层,在第 N 层或者更高扔鸡蛋会破,而第 N 层往下则不会。给 2 个鸡蛋,求 N,要求最差的情况下扔鸡蛋的次数最少。 可以将楼层划分成多个区间,第一个鸡蛋 E1 用来确定 N 属于哪个区间,第二个鸡蛋 E2 按顺序遍历该区间找到 N。那么问题就转换为怎么划分区间满足最坏情况下扔鸡蛋次数最少。 E1 需要从第一个区间开始遍历到最后一个区间。如果按等大小的方式划分区间,即 E2 的遍历次数固定。那么最坏的情况是 N 在最后一个区间,此时 E1 遍历的次数最多。为了使最坏情况下 E1 和 E2 总共遍历的次数比较少,那么后面的区间大小要比前面的区间更小。具体来说,E1 每多遍历一次,E2 要少遍历一次,才使得 N 无论在哪个区间,总共遍历的次数一样。设第一个区间大小为 X,那么第二个区间的大小为 X-1,以此类推。那么 X + (X-1) + (X-2) + … + 1 = 100,得到 X (X + 1) / 2 = 100 ,即 X = 14。
分享
2
先马后看
椰子
京东商城员工

秋招经验谈

以下乃一家之言,有用,则吾心甚慰,无用,君权当一笑。 一家之言,常有多家之辩,望诸君善待吾之善心,莫急言于在下。 吾求无错,奈何水平所限,失误再所难免,请各位提之,吾当改之。 吾所求岗位均为研发岗位,故技术人才更适用之。 目录 0. 个人情况 1. 准备工作 1.0 概述 1.1 我的练级之路 1.2 认知思维篇 1.3 专业技术篇 1.4 面试技巧篇 1.5 学习资料篇 2. 面经 2.0 概述 2.1 中国银联 2.2 顺丰科技 2.3 VIVO 2.4 海康威视 2.5 招商银行信用卡中心 2.6 华为 2.7 携程 2.8 虎牙 2.9 平安科技 2.10 其他公司 零.个人情况 学校:211 专业:非计算机专业,但是是电子类专业 应聘岗位:Java后端开发(或者相关开发岗位) offer:中国银联 顺丰科技 vivo 海康威视 招商银行信用卡中心 Java相关知识学习时间:2017.11 ~ 2018.9 (以前是做雷达相关的研究) 秋招正式准备时间:2018.5.15 ~ 2018.8 (前面还有零散的准备) 面试城市:西安 no offer: bat(二面挂) 网易(一面挂)虎牙(一面挂)平安科技(一面挂) 华为(还在池子里泡着呢)携程(还在池子里泡着呢) 一. 准备工作 1.0 概述 首先要明确,offer与认知思维、专业技术、面试技巧以及运气都分不开,即 offer = 认知思维 + 专业技术 + 面试技巧 + 运气 (1)认知思维是指求职者的心理准备,思维准备,决定了准备的质量以及offer的质量; (2)专业技术是指求职者的专业实力,是校招的基础,敲门砖,决定了offer的下限; (3)面试技巧是指求职者的语言表达,归纳整理,能力包装等能力,为专业能力锦上添花(而非雪中送炭),决定了求职者是能够发挥出应有的专业水准。 接下来我将围绕认知思维、专业技术以及面试技巧展开介绍。 1.1 我的练级之路 1.1.1 选择与方向 关于我的练级之路,我想从一个面试经常问到的问题谈起:你为什么要从搞雷达转到搞Java开发呢?为什么从一个非常高端的领域转到一个简单的应用领域呢?你不觉得浪费你的才能吗?是的,我的研究方向是雷达相关,与Java开发完全不搭边,为什么要转呢?主要原因有以下几点(注意,面试的时候可不能这么回答呀,童鞋们,我这里只是说了个大实话而已,面试的时候得包装啊,童鞋们): 我发现我不适合做雷达方向的研究,整个雷达领域其实涉及的知识点是非常多的,需要掌握雷达相关理论和雷达设备本身以及战场环境3个纵深领域的知识,而雷达理论、雷达设备与战场表现三个领域的表现其实并不完全一致,想要做出成绩,其实需要经历大量年限的积累,对整个雷达领域有了一个整体的积累之后,你才能做出有效的成绩(注意这里的有效是指不是骗国家钱的那种研究,而是实实在在的能用在实战中的研究,不细说了),因此整个领域的发展不是循序渐进的发展,而是断崖式厚积薄发的发展,因此其实挺难的。 雷达方向的就业面很窄,基本上主要去研究所工作,而研究所的工作氛围并不适合我(说的直接点,事实上是工资更加不适合我)当然了,现在其实随着自动驾驶的兴起,雷达算法工程师也逐渐可以去民用公司赚钱,这点其实非常好 因此想要换一个方向去做,或者说换一个技术路径去发展,但是毕竟是换一个方向去发展,时间和精力有限,需要选一个难度较低的切入点,因此选择了 Java后端开发工程师。 既然谈到了选择,这里需要提醒一下大家,在找工作之前,一定要想想自己适合做什么样的工作,自己感兴趣的是什么工作,这点非常重要。 1.1.2 制定计划 谈完选择,定下方向,接下来就是制定计划了。整个准备过程其实一直都是制定计划、执行计划、打破计划、重新制定计划、重新执行计划的循环。因此我下面就直接介绍我都做了哪些事情。直接上图吧。 在这个过程里你会发现,生活从来没有准备到完美的时候,计划永远都赶不上变化,那么校招也是一样,你永远不会有准备好的那一天,那就在准备了多少就直接上战场吧。 1.1.3 执行计划 既然知道了该做什么事情,那么你就应该像一只野兽一样,开始捕猎,不见血不停止,你需要拼命地野蛮生长。 2018.10.1 - 2018.10.15 我其实是2018.10就有意识的开始准备找工作了,但是那个时候需要干实验室老板的任务,因此都是每天项目任务完成之后,开始零散的学习Java基础知识,当时每天项目任务完成,开始复习的时候,基本都是晚上11点左右了,每天基本上学习到凌晨0:40左右,回宿舍休息,第二天接着来。就这样,学习了差不多有半个月,后面项目越来越紧,需要投入的时间越来越多,然后就开始中断了。对Java有了一个整体的认识。 2019.2 直到寒假放假,大概2019.2 才有了2周完整的学习时间,这2周,深化了一下Java基础知识,Java基础基本上已经有一个全面的了解了。3月返校,老板的任务更重了,基本上挤不出什么时间复习,因此我加班到5月中旬,把我所有的相关的任务全部做完之后,跟老板商量,能不能开始找工作,不再做实验室项目了,老板曰,可以。尽管后面老板还找我,但是其实已经没有那么频繁了,因此我开始有了一定的时间复习,但事实上,其实并不够,其实还是有很多实验室项目的事情需要做,但是好歹可以有自己的时间复习了。 在这里我要给大家一个建议:当你实验室活很多的时候,你需要给你的老板去说你即将要找工作的事情,去和他商量,为啥这么做呢?首先,老板对你毕业有身杀大权,你需要征求他们的同意,才能有一定的时间去找工作,不至于发生因为找工作而没有完成实验室任务,导致和老师发生冲突,那就不好了;其次,你提出找工作的事情,其实是给老师释放一个信号:你要找工作了,希望老师能少安排活,即使他最后没有少安排活,也会降低对你完成任务的期许,这样不容易造成冲突。 2019.5.15 - 2019.6.15 正式复习开始了,在这段时间里,开始大量复习计算机网络、Linux、数据库(MySQL, Redis)的知识,大量总结归纳。同时呢,也开始准备一个Java后端的项目:这个项目其实就是叶神的高级项目课https://www.nowcoder.com/courses/semester/senior, 然后边做边学习Spring Boot,Spring,MyBatis这些框架,同时也加深对数据库的理解,并且有意识地开始学习如何优化代码,如何引入设计模式。 在整个项目的学习和准备过程中,我要给大家一个建议:那就是准备校招的时候,其实应该以结果为导向,以实战为线索,在实战中,在项目中去应用自己学习过的知识,同时学习新的知识,通过迭代来将知识、能力以及思维逐渐形成一个体系:知识-思维-能力-案例 四位一体的体系。 2019.6.16 - 2019.7.15 这段时间里,最重要的事情莫过于算法了,在这段时间里,主要的工作就是看算法相关的书籍,了解算法基础知识,然后开始刷题,加深理解。 在学习算法的过程中,其实,也一直接着做Java后端的项目;同时呢,还在深入的学习JVM, 学习设计模式。 2019.7.16 - 2019.8.8 这段时间呢,主要完成Java后端的项目,同时,伴随着Java多线程、设计模式的学习,然后开始复习计算机网络、Linux、数据库等。 2019.8.9 - 至今 这段时间呢,就开始了大量的笔试,面试。 1.1.4 总结 其实整个校招准备的过程中,就是一个制定计划、执行计划、打破计划、重新制定计划、重新执行计划的循环。在这个过程里,你会被很多乱七八糟的事情打断,你需要不断平衡实验室工作和校招复习之间的准备工作。这里你就需要采取很多策略,去保证你的复习时间和复习质量,同时你也需要采取有效的心态和认知去对待整个过程。 整个校招过程中,你会发现,你的认知和思维会影响你的技术准备、面试发挥,你的技术准备的程度、面试发挥的好坏又会反哺你的认知和思维,整个过程是一个稳定自我,提升自我,然后挑战外在的一个过程。 下面就详细地介绍一下,该如何准备。 1.2 认知思维篇 1.2.1 战略悲观与战术乐观 我在学习过程中,一直有个态度,就是战略悲观与战术乐观。什么意思呢?解释一下: 所谓的战略悲观是指,在整个准备的过程中,心态上,要认识到自己永远都不可能准备完美,永远会有缺失和漏洞,这是很正常的,甚至单纯的一个知识点,以现在的能力,每个人都不可能准备到面面俱到,因此不要苛求自己,不要追求完美***,抓大放小,抓住主要矛盾,解决核心问题,这是很重要的。 所谓的战术乐观是指,一旦要参与战斗,一旦去笔试,去面试,那么你就认为你是准备好的,在这样的情况下,你要明白,你需要做的是发挥出你现有的水平,发挥出你当下的水平就够了,而不是去瞻前顾后,认为自己这也不会,那也没看,不要管那些,你要做的就是自信地去应对每一场笔试,每一场面试,把你会的发挥出来,而且每次战斗都要比上次要进步,那么你的目标就达到了。 因此,在整个校招的准备过程中,你需要做到: 对于整个校招而言,你要保持战略悲观的态度,充分利用每一分每一秒去准备,不要苛求完美,抓住核心知识和技能去准备; 对于每一场笔试或者面试而言,你要保持战术乐观,你要每一场都保持自信,认为你已经准备好了,然后尽情地去发挥,以战养战,不断精进。 整个校招由大大小小多场战斗组成,你要赢的是最后的胜利,而不是某一场的胜利,因此自信地去应对每一场。所谓胜败乃兵家常事,单场的失败只能证明你当下没有准备好,你要做的是查漏补缺,不断精进,迎接下一场战斗。其实,当你参加一定场次之后就会发现,哎呀,原来套路是一样的,那个时候你就可以开始收割了。 记住:战略悲观与战术乐观。做一个长远有野心,当下有信心,事后有决心,正确认识成败,立足长远的求职者。 1.2.2 自由与平等 我在面试的过程中,保持的态度是自由与平等,什么意思呢?解释一下: 所谓的自由与平等,指的是面试者和面试官之间是平等的,面试者与面试的公司之间是平等的,没有任何的等级之分,这里的自由与平等,既指个人尊严与人格的平等,也指面试者和公司之间的选择平等,双方没有任何的权力和资格去藐视和歧视对方。这个非常重要。 面试者在参加面试的时候,需要保有自由与平等的态度,要做事先做人,要认识到你与面试官之间是平等的,首先保持你自己的人格尊严,然后再考虑面试,因此你没有必要对面试官卑躬屈膝,低声下气,没有必要惧怕对方,没有必要去紧张,见面了,一声干净利落地“老师好”或者“面试官好”,然后一字一句的清晰地去与面试官交流你的观点和主张,这个非常的重要。不要因为一个面试而丢掉了自己的骨气,这远比你面试本身更重要。 既然是自由平等的,那么面试者与公司之间的选择也自然是自由平等的,有时候,你可能会发现自己明明准备的很好,面试交流的也很好,但是就是被挂了,为啥?只能说明你的面试不符合这个公司的招聘标准,只能说明公司认为你不合适,不能说明你不行,或者你的方向选择是错的,尤其不能说明你的智商有问题,你要做的是,心里淘汰掉这家公司,然后接着下一家。 记住:自由与平等。做一个自信,大方,自尊,平等的求职者。 1.2.4 胜而后战 是故胜兵先胜而后求战,败兵先战而后求胜。 - 《孙子兵法·形篇》 这句话是说,两军交战,胜利的队伍在战斗之前就已经做了充分的准备,胜利是准备好的结果。 这句话其实很好地说明了,整个校招,若想取得好的结果,其实得早点开始准备,尽全力地早点开始准备,要明白,开始准备的早,不一定结果就好,但是准备的晚,大概率是很难取得自己满意的结果的。 孙子有云,“凡战者,以正为合,以奇为胜”。这句话是说,作战,先要把正面的兵排好,要排的不偏斜,合乎法则,这叫正;如果此时你还有多余的兵力,你就赢了,这叫以奇(ji)为胜。 这句话其实很好地说明了,整个校招其实不止你自己要复习地好,你要复习地好到干掉和你竞争同一个岗位的人,那么你就应该比你的同行多做准备,不仅要充分的准备,而且要额外的准备。 曾国藩,一代文人,但是在打仗上确实甚为了得,为啥呢?因为老爷子喜欢“结硬寨,打呆仗”。老爷子打仗的时候,大部分时间,都在挖沟,基本上他参加的战场,都是沟壑纵横。他先用结硬寨的方式把敌人围起来,限制敌人的行动能力,使自己利于不败之地,然后再徐徐图之,以求胜利。 曾老爷子这个方式,其实也正是我们校招的方式,应对每一场面试,我们要做的就是掌握核心知识点,尽最大努力,做尽可能充分地准备,使自己在专业能力上立于不必之地,然后徐徐图谋更好的待遇。 记住:凡战者,以正为合,以奇为胜。以结硬寨,打呆仗的方式去尽可能充分地准备校招(其实有时候也意味着尽可能早的去准备),确保自己在能力上能立于不败之地,那么剩下的就是尽情发挥,然后收割校招的胜利果实了。因此,做一个用笨办法踏实复习的求职者。 1.2.5 军团作战 校招,其实不是一个人的战斗。 整个校招过程中,信息海量,一个人很难兼顾到所有的情形,例如你无法关注到所有公司的求职信息,你无法了解到所有公司的情况,因此你需要找一群小伙伴,一起去奋斗。 所谓军团作战,就是指,找一群志同道合的小伙伴,组成学习同盟,互相交流学习,互相沟通经验,互相共享求职信息,攻守相伴。这样的团结互助其实不止体现在信息上、能力上,更体现在学习过程中,相互之间的心理的支持和关心上,这些都很重要,大大提高了校招的效率和成功率。 记住:军团作战。提高准备效率,做一个团结合作的求职者。 1.2.6 提前准备 所谓的提前准备,是指: 提前进行技术准备 提前进行秋招(一定不要错过提前批,2019最早的提前批6月底就开始了) 一定要注意,提前批的难度和正式秋招的难度是有区别的: 很多公司提前批都免笔试,这会省去不少时间 很多公司的提前批,面试难度并不高,并没有正式秋招高 提前批hc充足,有大量试错机会或者说练习面试的机会,这个非常值钱 提前批相当于给秋招了2次机会,这样话,即使提前批过不了,秋招也可以再试一次(看再多面经也不如自己亲身体验一次要感受的深嘛) 很多公司,提前批可能意味着sp,ssp(华为除外) 说明: 这里需要区别一些名词:提前批 vs 内推 vs 校招 校招:校招就是每个公司都有的完整的招聘流程,简历筛选、笔试、面试一个不少 提前批:很多公司的提前批是独立的,是当年第一批次的招聘,可能免去简历筛选,笔试 内推:很多公司的内推是独立的,可能免去简历筛选,笔试;但是有些公司内推和提前批是重叠的,也有些公司的内推和校招是重叠的,一定要注意。 注:一定要看内推和提前批对校招是否有影响,例如: 是否参加内推或者提前批,就不能参加校招,例如唯品会 是否参加内推或者提前批,校招就需要换岗位甚至换部门,例如网易 简历筛选 vs 免笔试 简历筛选:很多好学校的同学觉得简历筛选只是对学校不太好的同学有用,对自己没有,但是其实不是,例如银行(国有和商业银行)就会筛选,有些好学校的同学有时候会发现连笔试的机会都没有,而一些相对不太好的学校的同学拿到了笔试机会,其实是因为有些同学是内推的,免掉了简历筛选。现在简历筛选越来越玄学了,所以免掉简历筛选其实很重要 免笔试:相对而言免笔试对大家影响并没有那么大,但是免笔试有个很大的好处,就是加快面试流程。 1.3 专业技术篇 1.3.0 概述 目标:介绍Java后端开发相关的知识点 认知准备:胜而后战 (见1.2.4节) 说明:这部分内容是必须掌握的内容,鉴于水平所限,可能不是很全面,仅做参考。 建议: (1)复习的过程中,做复习笔记,最好是记录在云端,这样的话,可以随时复习,例如面试等待中复习; (2)当知识复习完一遍之后,就可以对照着面经去复习准备了,记住先搞熟核心知识,再去搞其他边缘的知识; (3)复习过程中,一定要注意不仅要了解知识,还要主动思考,去思考知识背后的逻辑以及设计的意图 注: vs 表示比较的意思 关于专业技术呢,是指你的硬实力,硬实力的考查呢,主要从2个角度进行: 宽度:掌握的知识是否全面 深度:掌握的能力是否深入 宽度在一定程度上决定了你是否能够进入一家公司,深度则决定了你offer的等级。对于bat,甚至更好的公司来说,有时候深度甚至可能决定你是否能够进入这家公司。 1.3.1 专业技术 一门语言(以Java为例) Java核心知识 Java基础 新版本特性 跨平台特性 Java四个基本特性 Object类及其方法实现(尤其是equals() and hashCode()) 基本数据类型与引用数据类型 Exception vs Error finally vs final vs finalize final vs final 四种引用:强引用、软引用、若引用、幻象引用的比较 重载 vs 重写 接口 vs 抽象类 深克隆 vs 浅克隆 String vs StringBuffer vs StringBuilder (底层实现) IO vs NIO vs AIO 反射与动态*** 序列化与反序列化(底层实现) 集合框架 (应用及源码分析) 集合框架的设计与所有的继承关系 Vector vs ArrayList vs LinkedList HashTable vs HashMap vs TreeMap HashTable vs HashMap vs ConcurrentHashMap HashSet vs TreeSet 并发与多线程(应用及底层实现) 线程的创建方式 多线程应用场景 线程状态与转换 线程安全与同步机制:volatile vs synchronized vs Lock(ReentrantLock) volatile底层原理 synchronized底层原理及其锁的升级与降级 Lock(ReentrantLock)底层原理 ThreadLocal 线程通信 线程池(底层实现) 死锁的出现场景、定位以及修复 CAS 与 Atomic*类型实现原理 AQS:并发包基础技术 Java并发包(java.util.concurrent及其子包)提供的并发工具类 比synchronized更加高级的各种同步结构,如:Semaphore,CyclicBarrier, CountDownLatch 各种线程安全的容器(主要有四类:Queue,List,Set,Map),如:ConcurrentHashMap,ConcurrentSkipListMap,CopyOnWriteArrayList 各种并发队列的实现,如各种BlockingQueue的实现(ArrayBlockingQueue, LinkedBlockingQueue, SynchorousQueue, PriorityBlockingQueue,DelayQueue,LinkedTranferQueue)等。 Executor框架与线程池 JVM JVM运行时数据区域 vs Java内存模型 (这2不一样!!!) Java内存模型与happen-before原则 内存泄露、内存溢出以及栈溢出 JVM类加载机制及其作用与对象的初始化 JVM垃圾回收 如何判断对象已经死亡?引用计数法 vs 可达性分析 如何回收对象?垃圾收集算法 Minor GC vs Full GC 常用的垃圾收集器及其特点 内存分配与回收策略 GC调优 GC调优的思路 JVM常用参数 基于JDK命令行工具监控Java进程, 如 jps,jinfo,jstat,jmap,jstack 基于图形化工具监控Java进程,如MAT(Memory Analyzer),VisualVM,Btrace 面向对象与设计模式(了解常用设计模式及其应用场景、示例) 面向对象的六个基本原则 单例模式(手撕各种单例模式) 工厂模式(Spring的BeanFactory,ApplicationContext)vs.抽象工厂模式 构造器模式(应用场景:解决构造复杂对象的麻烦。复杂:需要输入的参数的组合较多) ***模式(Spring AOP(动态***模式:2种实现方式,即jdk & 字节码方式)) 装饰器模式(应用场景:若想对一个类从不同角度进行功能扩展,例如java.io中,InputStream是一个抽象类,标准类库中提供了FileInputStream\ByteArrayInputStream等各种不同的子类,分别从不同角度对InputStream进行了功能扩展。这些不同的实现类其构造函数的输入均为InputStream(的实现类),然后对InputStream添加不同层次的逻辑,从而实现不同的功能,这就是装饰。) 观察者模式(各种事件***) 策略模式(比较器Comparator) 迭代器模式(ArrayList等集合框架中的迭代器) 生产者消费者模式(消息队列)要能手撕 ...还有很多,但是掌握这些基本上够了 数据结构与算法 时间复杂度和空间复杂度分析 常用的数据结构及其特点 数组 vs 链表 队列 vs 栈 跳表(Redis利用跳表实现有序集合Sorted Set) 散列表 堆与优先级队列 二叉树:普通二叉树 vs 二叉查找树 vs 平衡二叉树(AVL)vs 红黑树 (vs 哈夫曼树) 多叉树:B-Tree vs B+Tree vs B*Tree / Trie Tree B+Tree: MySQL索引数据结构 Trie Tree: 实现敏感词过滤算法; 实现搜索引擎的关键词提示功能 图:考数据结构不多,主要考2个最短路径优先算法 常用算法 各种排序算法:内部排序+外部排序(https://blog.csdn.net/hguisu/article/details/7776068/) 需要手撕:冒泡、插入、堆排、归并、快排(2路快排+3路快排+随机枢值) 大数据排序:外部排序 各种查找算法: 二分查找算法及其变种 二叉查找树的查找 利用快排查找 ... 常用的遍历算法 BFS vs DFS Morris遍历 常用的Hash算法 一致性哈希 布隆过滤器 贪心算法 分治算法 回溯算法 动态规划 海量数据处理算法 bitmap算法 布隆过滤器 https://blog.csdn.net/v_july_v/article/details/6279498 其他算法: LRU算法 KMP算法 Manacher算法(面试问过1次) BFPRT算法 常见的手撕代码问题 《剑指offer》的问题 后续搜集补充。。。 计算机网络 OSI七层模型 vs. TCP/IP 五层模型(有时候也说四层)及及各层协议 给定一个网址,访问这个网址经过了那些过程?涉及哪些协议? HTTP and HTTPS HTTP报文格式 HTTP方法及相互区别 HTTP的无状态 HTTP状态码 HTTP 1.0 vs 1.1 vs 2.0 HTTP vs HTTPS HTTP安全性 HTTP底层协作协议(如传输层为TCP协议) TCP and UDP TCP vs UDP TCP如何保证可靠传输? TCP的三次握手和四次挥手及其原因 TCP的流量控制与滑动窗口 TCP的拥塞控制与拥塞窗口 TCP的拆包粘包 关于TCP协议非常好的2篇文章: https://coolshell.cn/articles/11564.html https://coolshell.cn/articles/11609.html RPC协议(经常和Dubbo一起问) Socket编程 异步IO多路复用:select poll epoll OS 内核态 vs 用户态 进程 vs 线程 进程调度算法 进程间通信的几种方式 OS死锁相关的问题 什么是死锁?哲学家就餐问题 死锁的必要条件 死锁的应对方法 死锁的检测与恢复 死锁的动态避免:银行家算法 死锁的静态防止:破坏死锁的必要条件之一 段页式内存管理 页面置换算法 磁盘调度算法 Linux系统常用的命令有哪些?是否会Shell,Python? 数据库MySQL 数据库范式 数据库事务 什么是事务? 事务特性:ACID 事务隔离级别以及脏读、不可重复读、幻读 分布式事务 数据库索引 索引的应用场景 索引特点 索引的优点和缺点 索引的分类 索引选择原则 索引的优化 索引失效 索引的底层实现(B-Tree vs B+Tree) 对于建立索引的列,数据均匀分布好还是不均匀好? 数据库的锁 行锁 vs 表锁 读锁 vs 写锁 乐观锁 vs 悲观锁以及如何实现?(MVCC) 加锁的方式 分布式锁 数据库存储引擎比较 InnoDB MyISAM Memory MySQL连接池对比 MySQL命令 JOIN的执行计划? 数据库分库分表 主从复制 数据库Redis 为什么使用Redis? Redis的优点与缺点 Redis的数据类型、底层实现以及各种数据类型的使用场景 Redis是单线程吗?单线程的Redis为啥这么快? Redis持久化的方式 谈谈Redis的过期策略以及内存淘汰机制 如何解决Redis和和数据库双写一致性的问题? 如何应对缓存穿透与缓存雪崩的问题? 如何解决Redis的并发竞争Key问题 Web与常见框架 Servlet的生命周期(问的很少) Cookie vs Session 分布式Session Spring相关(应用与源码分析) 看过Spring的源码吗? IOC应用及原理 AOP应用及原理 事务 Spring涉及的设计模式 谈谈Spring Bean的生命周期和作用域 Spring MVC的工作原理 Spring vs Spring MVC Spring vs Spring Boot 了解微服务,Spring Cloud Netty (网络框架) Dubbo 分布式架构 服务调度,涉及服务发现、配置管理、弹性伸缩、故障恢复等 资源调度,涉及对底层资源的调度使用,如计算资源、网络资源和存储资源等。 流量调度,涉及路由、负载均衡、流控、熔断等。 数据调度,涉及数据复本、数据一致性、分布式事务、分库、分表等 容错处理,涉及隔离、幂等、重试、业务补偿、异步、降级等。 自动化运维,涉及持续集成、持续部署、全栈监控、调用链跟踪等。 项目 准备项目对于秋招而言是非常重要的,为啥呢? 加深对所学知识的理解,将知识转换为能力 证明你的学习能力和实践能力 项目可以在一定程度上,将面试官的问题引导到一定范围内,例如在面试的时候,一般情况下,项目会最开始介绍,在介绍项目的时候,你就可以以你熟悉的内容,不断引申,就像是多米诺骨牌一样,一直延续下去。这样就有可能避免面试官深挖基础,问到你没有准备过的东西。 如何准备项目呢?我以我准备的Java后端项目为例说明,即叶神的高级项目课:https://www.nowcoder.com/courses/semester/senior 明确这个项目的需求与解决的问题 明确这个项目的结构与组成 明确这个项目涉及的技术栈 完成这个项目的基本功能 在完成的过程中,总结归纳 总结归纳业务知识,例如如何实现系统的登陆和注册功能,如何实现点赞功能 总结技术栈的相关知识与应用场景,例如Spring, Spring Boot, MyBatis, MySQL, Redis 总结几个你认为做的非常好的点,例如利用Redis实现一个异步处理框架 总结项目中出现的问题以及解决方式,例如响应时间过长,你是如何解决的? 总结如何扩展系统,例如如何扩展系统的业务功能(添加后台管理模块等) 总结如何提升系统性能,例如如何处理缓存,如何提高系统响应 总结如何设计一个系统,例如根据经验如何设计和实现一个秒杀系统? 总结如何进行系统的测试,例如你甚至可以测试驱动开发(TDD) 还有很多总结...这里只是提供一些思路 扩展项目 添加业务模块,例如添加后台管理模块 添加推荐算法,例如给timeline增加推荐能力 公共模块服务化 如果可以的话,将系统上线(非常加分的),这里涉及另外的一些知识点: 项目的版本管理:Git & Github 项目的部署:涉及Linux、服务器 项目的扩展:涉及Nginx与负载均衡 项目的调试与优化:涉及如何在服务器端远程进行调试和优化,例如jmeter进行远程调试系统 项目的服务化与分布式架构:微服务,例如如何将项目从单体应用扩展为分布式应用,如何将常用模块或者固定模块变成一个个服务 还有很多知识点...这里知识提供一些丝 实习 关于实习,我没有去实习过,因为实验室老板不让去,我会结合去实习的同学谈谈实习的建议(大佬绕行): 一切为秋招服务,无论前面准备项目还是去实习,一定要明确实习的目的是为了更好的服务于秋招,当然了提高技术是必然的。 选择大厂去实习,小厂的实习含金量不高。(对于秋招而言) 实习时间不要与秋招冲突。尽量选择春招的时候去实习,或者越早越好,因为一旦实习时间和秋招冲突,那么可能会错过很多秋招机会。 若实习时发现学不到什么技术,并且影响到了秋招,立马离职,准备秋招。 若实习与秋招时间重叠,实习过程中,做好两手准备:(1)实习转正;(2)准备秋招。因为转正的周期一般都比较长,一旦转正失败,那么也会错过很多秋招的机会。 1.4 面试技巧篇 1.4.1 形象和谈吐篇 面试过程很短,对于一个人的认识和了解也很有限。那么如果你的技能一般的话,就需要加强形象和谈吐了。所谓实力不够,形象来凑。 形象方面,最好穿工作便装,休闲的也可以,但是要干净、整洁,不要有异味、不要邋遢(刮胡子,梳头发,熨衣服,这些都很重要)。尤其是HR面,基本上都是小姐姐,不要吓到她们。 另外,保持微笑,表现得热情、开朗和幽默非常重要。每个人都喜欢积极乐观向上的人。交谈的时候,不要挤牙膏,别人问一句你答一句,要直接把前因后果都讲清楚。最好能够以讲故事的心态分享你的故事,尤其是hr面,最好能够把hr妹子逗笑,但是切记不要撩。 说话的时候,要看着对方,一方面,这是对对方的尊重和礼貌,另一方面,这也是一种自信。就算没有回答好,也不要低着头,不要像做错事情一样。万一碰到有说不清楚的内容,不要犹豫,直接上图。对于比较复杂的或者面试官听不懂的问题,一定要换个思路表达。 1.4.2 心态篇 面试的时候,你要保持一个自信的心态,无论你准备的到位与不到位 面试的时候,紧张是正常的,但是你要通过前面的自我介绍(如果没有自我介绍的话,前几个问题回答慢一点)的时间来调整自己的紧张 注:详细的心态管理见1.2 认知思维篇 1.4.3 面试技术篇 Checklist(简称cl) 在整个秋招面试过程中,最好能够准备一个checklist, 这个cl是用来在你面试前进行模拟面试的,那么cl包含哪些内容: 自我介绍 项目介绍 技术知识点 非技术知识点 以下详细介绍这几个方面: 自我介绍 在自我介绍的时候,除了介绍你自己的基本情况外,直接明了的提出你擅长的技术栈是一个很好的技巧,为什么这么做呢?因为这会给面试官一个先入为主的印象,会给面试官心里种下一个种子,潜意识认为你对这一块知识比较了解,那么后面问到这一块知识的概率就会变大;同时呢,后面万一他问到那些不会的内容,你也可以拉面试官到你擅长的技术栈,由于前面已经埋下了伏笔,因此后面面试官大概率上是容易接受你的转换的。 注:有时候hr面的自我介绍和技术面的自我介绍不同,会产生不一样的效果 项目介绍 项目介绍除了介绍项目的目的,解决的问题,设计的思想以及整体结构,更重要的是提出你在项目中的亮点以及项目中你擅长的技术栈,这会在一定程度上引导面试官去对你这些内容发问 技术知识点 每次面试前,都应该有针对性地深化一部分知识点,这部分知识点要么来自于你要面试的这家公司的面经,要么来自于你计划中要解决的知识点,力求做到每次面试都拿下一部分知识点,将比较复杂的问题化整为零,然后再总结归纳,这会有效的降低你记忆的难度 非技术知识点 非技术知识点主要是针对hr面试中可能出现的问题的,一般hr面就那些问题,因此这个准备非常好准备 模拟面试 面试和你的笔试一样,笔试需要做大量的题目去模拟,那么面试也必然是的。那么如何进行面试的模拟呢? 准备CheckList 根据CheckList, 进行自我介绍,然后将你自我介绍的过程用视频录下来或者语音录下来,然后去分析你哪些地方有问题,作为面试完之后的分析依据,根据面试情况,去修正你的自我介绍 根据CheckList, 进行项目介绍以及项目分析,然后将你自我介绍的过程用视频录下来或者语音录下来,然后去分析你哪些地方有问题,作为面试完之后的分析依据,根据面试情况,去修正你的项目介绍,尤其是项目中涉及的知识点以及技术栈,你是否理解到位了,你会做,那么你是否能够讲清楚,如果讲不清楚问题在哪里? 你也可以请你的同学或者朋友充当面试官的角色,让他按照你的CheckList去对你进行提问,看你是否能够给一个没有做过这个项目的人将项目讲清楚,如果可以说明你真正理解了,这样就可以给你面试有一个参考。 注意: 面试开始前,给面试官一个微笑,简单大方地问好:“面试官好”或者“老师好”,然后双手将简历(或者所需材料)递给面试官 面试结束后,给面试官一个微笑,简单大方地对面试官表达感谢:“谢谢您,再见”,然后带着自己的东西离场。 面试过程中, 当面试官提出问题时,一定不要着急回答,而是思考清楚面试官的问题之后,再回答问题;如果不确定面试官的问题,那么你需要不断询问面试官,确定题目的具体意思,当你确定意思之后,再认真回答问题。回答问题的时候,你要一步到位,直接给出充足的细节,将问题的前因后果全部描述清楚,不要等着面试官追问,那样的话,你会变得非常的被动。讲的时候,要条理清楚,问题的来源、解决方案、演进过程,都要利索地讲清楚。 当面试官问到的问题,你是不懂的,那么你应该向面试官提出你不是很懂这个问题:“不好意思,这个问题我不是记的很清楚了(或者不好意思,这个问题我没有接触过,我不是很懂)”,问他是否可以给出提示,如果可以在给出提示的情况下答出问题,体现的则是你的思考和逻辑能力;若面试官无法给出提示,那么你直接告诉面试官你不懂这个问题,但是你懂另外一个相关的知识点,是否可以给他介绍?如果可以,你接着介绍这个相关知识点;如果不可以,那就请求面试官是否可以进入下一个话题。在这里再强调一下,有时候,面试官并不期待你能在很短的时间内解决这个难题,他只是想看你遇到难题的时候的态度和思维方式以及应变能力。如果你能证明给面试官看,你解决问题的方向和方法是正确的,即使不是正确答案,也很不错。如果最后没有答上来,最后可以和面试官要个联系方式(邮箱或者微信),回去后努力搞懂,然后举一反三,写篇文章发给面试官,有时候会让你起死回生的。 当面试官对你提示的时候,请记住,当你回答问题结束之后,你需要对面试官表达感谢,感谢他的提示。 面试过程中,如果是hr面,那么你需要表达出你的忠诚、坚持、责任、荣誉、毅力、稳定、对自己正确的认识等,至于具体的套路,我这里就暂时不说了,如果后期需要了解的同学比较多的话,我可再补充。 1.5 学习资料篇 Java Java核心知识 入门:《Head First Java》 进阶:《Java编程思想》、《Effective Java》 JVM 《深入理解Java虚拟机》 Java并发与多线程 面试:《Java并发编程的艺术》(适合在时间紧张的时候,准备面试) 进阶:《Java并发编程实战》(想深入学习,用这本) 面向对象与设计模式 《Head First 设计模式》 马士兵的设计模式 数据结构与算法 入门:《大话数据结构》 进阶:《算法·第四版》 手撕代码: 《剑指offer》https://www.nowcoder.com/ta/coding-interviews 《程序员代码面试指南》左神 (时间紧,可以直接看书) 不想看书的,可以直接看左神的视频: 基础:https://www.nowcoder.com/courses/semester/algorithm-elementary 进阶:https://www.nowcoder.com/courses/semester/algorithm-senior leetcode(有时间一定要刷) 海量数据处理: 《编程珠玑》 https://blog.csdn.net/v_july_v/article/details/6279498 动态规划:https://www.geeksforgeeks.org/top-20-dynamic-programming-interview-questions/ 计算机网络 入门: 《图解TCP/IP》 《图解HTTP》 进阶:《TCP/IP详解·卷1》或者《计算机网络:自顶向下方法(原书第6版)》(看一本即可) OS 入门:《Operating Systems: Three Easy Pieces》(讲的非常好,只有英文版) 进阶:《深入理解计算机系统》 视频:http://www.xuetangx.com/courses/course-v1:TsinghuaX+30240243X+sp/about Linux 《鸟哥的linux私房菜》 视频:https://pan.baidu.com/s/1hx2as373BZlAKtKonn5u1g 数据库MySQL 入门:《MySQL必知必会》 进阶: 《MySQL技术内幕 Innodb存储引擎》 《高性能MySQL》(这本更好,不过有点难) 数据库Redis 《Redis设计与实现》 Web与常见框架(框架这部分,我认为通过官网直接上手实战,然后再去分析其源码) 《深入分析JavaWeb技术内幕》 Spring/ Spring Boot/ Spring Cloud: 官网:https://spring.io/ 应用:《Spring4.x 企业级应用开发实战》 Spring源码 《Spring技术内幕》(这本写的太好了) MyBatis 官网:http://www.mybatis.org/mybatis-3/ 博客:https://blog.csdn.net/nmgrd/article/details/54608702 Netty 官网:https://netty.io/ Dubbo 官网:http://dubbo.apache.org/en-us/ 分布式架构 System Design Primer:目前这个仓库收集到了好些系统架构和设计的基本方法。其中包括 CAP理论 一致性模型 可用性模式 DNS CDN 负载均衡 反向*** 应用层的微服务和服务发现 关系型数据库和NoSQL 缓存 异步通讯 安全等 项目 《大型网站技术架构·核心原理与案例分析》 叶神高级项目课:https://www.nowcoder.com/courses/semester/senior Git& Github https://www.nowcoder.com/courses/2 注:暂时列出这么多,有空了补充吧。 二. 面经 2.0 概述 此部分面经均为现在回忆所写,可能略有缺失,仅供参考 鉴于bat、网易面经太多就不写了,但是所涉及面试内容将会在本文后面章节以知识点形式给出。 2.1 中国银联 中国银联我必须从笔试开始说起,为什么要从笔试开始说起呢? 答曰:重要,非常重要。有些同学会发现面试都很好为啥最后挂了呢,有部分原因就是因为笔试成绩不如别人 中国银联的录取,不仅要看你的学校,更要看你的能力,它录取的时候呢,就会将你的笔试成绩群面成绩以及技术面的成绩全部计算在内,最后加权得分,然后择优录取。因此笔试很重要。确切讲,每一个考试都很重要,笔试、群面、还有后面的技术面都很重要。挂掉一场意味着都挂了,或者说只要有一场分数很低,也可能被淘汰。 2.1.1 笔试 【题目】中国银联的笔试非常类似于公***,主要包含以下内容: 行测:数学计算 逻辑判断 言语理解 图形推理 专业知识: 金融 经济 财会 管理 法律 银联常识 英语:阅读理解 专业知识:Java相关基础知识 【解决方案】准备银联的笔试,确实非一人之力,所以大家懂得...,分数越高越好。 2.1.2 群面(30min) 【题目】 主题:疫苗问题 流程: 5分钟阅读材料,总结归纳观点 1分钟个人陈述观点+自我介绍 15分钟组内讨论 3分钟最终发言 【解决方案】 解决这样的群面问题呢,不能蛮干,应该有套路。 1分钟回答: 阅读问题,带着后面的问题阅读材料,然后迅速整理出材料结构,总结1分钟陈述的回答。要注意这个1分钟回答,只需要回答主干就行了,不需要细节,因为根本说不完; 15分钟讨论过程: 15分钟讨论过程中,一定不要起内讧(一旦内讧,基本上你的群面分数不会很高,而我说了),而是在一个人的带领下,将问题主题确定,然后围绕问题主题快速提出一组主要答案,然后围绕这个主要答案进行总结调整,15分钟看着很长其实很短,所以一定要注意时间。 在15分钟讨论过程中,不要为了回答问题而回答问题,一定要抓住重点,确保自己有1~2次的有效回答,要么是总结性回答,要么是补充性回答,这个很重要,切记不要胡说八道。 在15分钟讨论过程中,发言的时候,如果没有思路,可以考虑一下:要么从整体入手去回答整个问题,要么从细节入手去深化问题,这是2个不错的策略,要么体现你的总结能力,要么体现你的思考能力。 最后的总结陈述: 整个是由组内选出1人进行总结陈述,整个总结陈述其实是高风险高收益的,要么总结的非常好,高分,要么总结的非常差,出局,所以慎重对待。 2.1.3 技术面(20min) 【题目】 项目,你觉得你的项目的亮点是什么?为啥采用这样的加密方式?有没有框架实现这样的加密? 谈谈反射?反射能干嘛?反射安全吗?反射的坏处是什么?知道反射是怎么实现的嘛? 线程池了解吗?线程池的好处是什么? 数据库知道哪些?详细谈谈?现场给题目,直接手撕sql,3道题。 Linux系统知道哪些?详细谈谈?用过Linux命令吗?知道哪些?详细说说? Spring知道哪些?详细谈谈?动态***模式是怎么玩儿的?给我们详细讲讲 Spring Boot和Spring有啥区别? 你平时都怎么学习的? 你有没有自己的博客? 你的期望薪资是什么? 你有什么想问的吗? 其他问题。这里问了很多问题,当时第一次参加技术面试,很多都不会,大概70%都不会,当然也可能是压力面,总之最后过了。 (1)关于银联录取的分数计算: goal = a * 笔试分数 + b * 群面分数 + c * 技术面分数,其中,a, b, c为系数 因此,每一场都很重要。 注:此计算方式来源于面试官 (2)关于录用流程: 中国银联的录用流程确实挺慢,从8月9号面试完,到今天(9月30日)正式收到录用offer,其实确实挺漫长的,虽然漫长,但是整个过程中,银联的hr部门还是一直在推进,可能整个过程中,由于他的hr人太少,通知的确实是太慢,不可否认,但是整个流程还可以。比较规范。 (3)关于体检: 中国银联的体检相对而言比较严格,但是主要还是看你是否生有大病,这是银行主要检查的内容,即使收到复检通知,只要不是大病,可以和医生沟通一下,写成合格,也可以拿到offer。 2.2 顺丰科技 2.2.1 技术面 手撕代码:计算n + (n-1) + ... + 2 + 1 要求:递归计算 问题1:你的递归有没有问题? 要求考虑返回值为long型的情况 问题2:你觉得这样的递归可能产生什么样的问题? 问题3:你觉得如何处理上述的问题? 问题4:若存在这样的一种情况:递归调用这个计算的时候,计算n的时候,不会出现栈溢出,但是计算n+1的时候出现栈溢出,那么若有2个线程一起调用这个递归,会出现什么状况呢? 代码题 关于sychonronized、 notify()、 notifyAll()、wait()的问题,涉及线程同步,线程通信相关的代码执行顺序以及多线程执行情况。(具体题目我忘了) (1)若多个线程以字符串“a”作为锁,即synchronized("a"),请问这个锁是一个锁吗?为什么? (2)调用wait()的时候,调用线程是否还持有这个锁?为什么? (3)调用notify()的时候,调用线程发生了什么?为什么?调用wait()的线程发生了什么?为什么? (4)调用notifyAll()的时候,调用线程发生了什么?为什么?调用wait()的线程发生了什么?为什么? 智力题 甲地有小球A,乙地有小球B,现在A向乙地以2m/s的速度前进,B向甲地以1m/s的速度前进,在2者前进的过程中,A每次碰到B都要返回甲地,然后向着乙地前进,接着碰到之后再返回,循环往复,而B球则一直向着甲地前进,直到B球到达甲地。 (1)A最终走了多少路程? (2)A最终碰到B球时单程总共走了多少路程? (3)A最终碰了多少次B球?请求出其公式。 项目 谈谈反射?知道反射是怎么实现的嘛?反射能获得方法的注解吗?为啥?能不能举个例子? Spring知道什么?源码看过没?谈谈。 谈谈你知道的设计模式 Spring Boot的源码看过没?谈谈。知道微服务吗?谈谈你对微服务的认识? 数据库了解什么?谈谈数据库索引? 知道Cookie和Session的区别吗?你项目有用到Session吗?怎么用的? 你觉得Redis在项目中使用的时候有没有什么风险? list 和 set的差别 hashmap了解不?谈谈。 put怎么做的? 为啥要设计成数组+链表? 是否直接用hashCode确定桶的位置?如果不是是用的啥?请写出公式。 equals()和hashCode()有啥区别?二者重写有啥规则?为啥要约定这样的规则? get怎么做的? rehash是为了什么? 树化是为了什么? 你的思维能力非常强,但是你的知识深度不够,给你四分钟,讲一个能够你的牛逼之处,如果能征服我,我就让你过。 其他问题忘了。。。。 2.2.2 hr面 自我介绍 项目介绍 实验室导师的项目 你实验室的项目及研究方向和工作方向不一样?为啥?为啥要换成Java开发? 你觉得你和计算机科班出身,有何优势?(这是个很好的加分问题,有机会分析如何答这个问题) 你为啥想去深圳工作? 你有女朋友吗?(这是个很好的加分问题,有机会分析一下如何回答整个问题) 你自学Java是如何学习的?为啥你用Java找工作?而不是用你熟悉的C++? 谈一个你最大的优点和你最大的缺点?(这是个很好的加分问题,有机会分析一下如何回答整个问题) 你觉得为啥我们要你? 2.3 VIVO 2.3.1 技术面 注:C++工程师面试的 懂C++吗?答不懂。你觉得C++和Java有啥差别? C++的对象回收和Java的对象回收有何差别?说一下二者的机制。 C++的编译过程和Java的类加载过程有何联系?详细谈谈。 你知道为啥一个应用有4G,但是机器内存只有2G,为啥这个应用可以跑起来?原理是啥?详细谈谈其机制。 进程和线程了解吗?详细谈谈。 TCP UDP协议了解吗? 二者有何区别?应用场景是啥?为啥TCP是可靠地? TCP三次握手四次挥手,画出整个过程并解释,为啥不是2次或者4次握手?为啥要4次挥手? 谈谈TCP的流量控制 谈谈TCP的拥塞控制 谈谈项目 手撕代码,题目忘了(leetcode上的) 有啥想问的? 2.3.2 hr面 自我介绍 项目介绍 为啥想到杭州 谈谈你最大的缺点和最大的优点。请举例说明 你想去的目标城市是哪里?为啥想去?为啥不想去其他地方?如果换的话想去哪里?(我说我就想去杭州,结果给我整南京去了,我说能否用sp换一个深圳,答曰不能。。。) 你有女朋友吗?你去外地工作了?她怎么办? 介绍一下你的家庭情况 你有啥想问的? 2.4 海康威视 2.4.1 技术面 项目 手撕sql: (1) 给了一个数据库的题目,然后让写出查询语句(涉及 select from where group by having like order by) (2) 进一步多表联查 (3) MySQL索引,包括但不限于分类,区别,数据结构(B B+的比较和插入删除的*作演示) (4) MySQL失效的情况,并举例说明(例如like "%x"这样的会索引失效) 给你一个视频监控系统,你如何考虑这个系统设计? (1)请画出你的设计图,然后解释说明 (2)提出其中用到的技术手段以及可能存在的问题 (3)如何提高这个系统的性能 (4)如何判定这个系统是一个稳健的系统,或者说如何保证这个系统的稳定性? 详细谈谈TCP/IP协议族,包括但不限于以下内容: TCP UDP协议了解吗? 二者有何区别?应用场景是啥?为啥TCP是可靠地? TCP三次握手四次挥手,画出整个过程并解释,为啥不是2次或者4次握手?为啥要4次挥手? 谈谈TCP的流量控制 谈谈TCP的拥塞控制 知道jsonp吗? 会前端吗? 你平时怎么学习? 了解blockingqueue吗?详细说说。 了解线程池吗?详细说说。 了解GC吗? 手撕代码(题目忘了) 2.4.2 hr面 自我介绍 介绍一下你实验室做的东西? 你为啥做Java开发? 请说出你的三个缺点和三个优点?(我竟然有3个缺点,我怎么不知道呢?最讨厌这个问题啦) 你们实验室项目中,你的角色是什么? 你们团队合作的时候,你一般如何看待合作?如何行事的?你们的分工一般是什么? 既然你是你们团队的leader,那么你是怎么带领一个团队攻克难关的? 有女朋友吗? 你有哪些offer?我有。。。 那你为啥来海康呢?为啥不去其他公司呢?(你说呢?) 你有什么想问我的呢? ps: 小姐姐太漂亮了。。。无比享受的hr面。 2.5 招商银行信用卡中心(信息技术部) 2.5.1 初面(1个多小时) 介绍一下你zhiji 全程怼Java项目 -介绍一下这个项目? -为啥做这个项目? -用了哪些技术? -你自学的技术是哪些? -详细谈谈你对Spring的理解,和Spring Boot有啥区别? -既然谈到了AOP,你在项目中如何使用AOP的,AOP还能有哪些应用? -AOP的原理是什么?有哪些实现的方式? -既然谈到了动态***模式,请谈谈动态***有哪些实现方式?(jdk & 字节码方式) -这2种不同的实现方式中,目标类和***类的关系是? -接着深入的谈谈你了解的其他设计模式?(单例模式 工厂模式 抽象工厂模式 建造者模式 策略模式 装饰器模式 迭代器模式 生产者消费者模式 责任链模式 一口气连原理带例子说完) -既然谈到了生产者消费者模式,请问你项目中是否使用这个模式? -责任链模式如果让你写你会怎么写?(双端链表) -策略模式在Java集合框架中是否有用到?装饰器模式呢? -Redis在项目中怎么用的?为啥这么用?一般Redis的应用场景是什么? -谈谈Redis的数据类型以及应用场景?是否看过其源码? -Redis是单线程的还是多线程的?为啥是单线程的还这么快? -谈谈Redis的过期策略以及内存淘汰机制 -如何解决Redis和和数据库双写一致性的问题? -用户的注册和登陆你是如何解决的? -拦截器是如何使用的? -拦截器和过滤器以及责任链模式有何关系? -谈谈敏感词过滤算法都有哪些?你是如何实现的?优势是什么?为啥这么设计?时间复杂度如何? -你做的站内信是否是实时的?如何做成实时的?有没有思路?或者现在想想? -谈谈你对cookie和session的理解 -谈谈你对token的理解 -谈谈你对分布式session的理解 -谈谈你对微服务框架的理解 -谈谈你对分布式的理解 全程怼实验室项目 -介绍一下这个项目 -解决的场景是什么 -你这个相控阵雷达牛逼呀,给我介绍一下 -你们团队是怎么分工的? -你有什么牛逼的成果? -如果你和你的合作的同学意见出现分歧了如何解决? 你有啥想问的呢? 你平时都怎么学习的呢?有没有写博客?有没有GitHub?经常更新不? 谈谈你了解的数据结构与算法? 面试结束了,你过了,来接着给我介绍一下相控阵雷达 2.5.2 终面 自我介绍一下 介绍一下你的项目 为啥转Java开发呢?你做的是***项目,转到民用,是不是有点大材小用呢? 你如何挑选公司的? 你怎么看待互联网公司与非互联网公司呢? 你是怎么看待自己的? 你最大的优点和最大的缺点是什么? 你最铁的哥们儿是谁? 你有从你的朋友们身上学到了什么? 你交朋友的标准是什么? 你喜欢哪类人?不喜欢哪类人?为什么? 如果你的合作对象或者你的同事是你讨厌的人,你会如何对待他? 你和合作对象或者同事意见发生分歧了,你如何处理? 为什么要来信用卡中心? 你有面过那些公司?有没有对这些公司做过总结和分类呢? 谈3个对你影响最大的人,为什么? 你平时都怎么学习? 你有女朋友吗?你们未来是怎么安排的?你为什么喜欢她?她对你有何影响?(她是另外一个本我,常有相濡以沫之默契,时有不如相忘于江湖之洒脱) 你是如何规划你的未来的? 你觉得你厉害吗?谈谈你认为你最自豪的事情 ps: 很佩服信用卡中心这种说话算话的公司,说7天出结果,绝对不8天出结果,在这里bishi一下某为的sb尿性。。。 2.6 华为 这是一家随机且佛性的公司: 1.面试过不过佛性; 2.发不发offer佛性; 3.什么时候发offer佛性; 4.发不发签约佛性; 5.什么时候发签约佛性; 6.工作岗位佛性; 7.工作地点佛性; 8.工作薪资佛性; 9.你来不来佛性; 10.你去不去佛性; 11.你性格对不对佛性; 12.你是谁佛性; 13.怎么对你佛性。 那么如何应对这家公司呢? 也请你佛系对待这个公司,因为这是一家喜欢唱 无所谓 的公司 得不到,请冷静的对待;得到了,请更加冷静的对待 漫长的等待,等来的可能是希望,更有可能是希望后面伴随的毁灭的绝望。 好,做好这个思想准备之后,开始华为的笔试面试之旅。 首先为啥要介绍华为的笔试呢?因为它不重要。 为啥要介绍华为的面试呢?因为它不重要。 那为啥不重要还要介绍呢? 其实主要是为了介绍上面的佛性***。其次是为了对仗,哈哈哈 好,做好这个思想准备之后,就可以跳过华为的笔试面试经验啦。哈哈哈哈,因为真的不重要。 2.6.1 笔试 【题目】笔试题目=编程1(100分) + 编程2(200分)+编程3(300分) 注:100分就够了,多了浪费(2018年) 2.6.2 业务面 平时都做啥项目了 详细介绍一下你最自豪的项目(Java) 你这个项目是自己做的,导师让你做的项目是啥?你干嘛了?(C++) 接下来咱聊聊基础吧 接下来就是C++和Java的比较,垃圾回收有啥差别,类加载有啥差别 TCP和UDP区别 DHCP底层原理 有没有做过socket编程 你还有啥想问的? 2.6.3 综合面 自我介绍 你做啥项目了?详细讲讲 你为啥会想到做这个项目?目的是啥?用途是啥? 华为有没有其他的亲属或者师兄师姐?有没有问过他们眼中的华为? 数据库用的啥? 你眼中的华为是啥样子的? 你有啥想问的? 回去等通知,2-3天出结果 你还面试哪里了? 好,终于跳过了。。。 2.7 携程 2.7.1 技术1面 详细谈谈Java基类Object类以及其方法 详细谈谈equals()和hashCode() 详细谈谈wait() notify() notifyAll() 详细谈谈final finally finalize的区别 写出单例模式的双检锁形式,序列化以及反序列化以后是否仍然是单例? 手撕代码: -链表中间值 -一个数字中1的个数 ArrayList vs Vector Vs. Linkedlist hashMap vs hashTable vs. concurrentHashMap 线程同步机制:synchoronized vs. ReentrantLock 、volatile -synchoronized底层原理以及锁的升级和降级 -ReentrantLock的底层原理 -synchoronized vs. ReentrantLock -synchoronized vs. volatile -volatile的作用是什么?如何实现的?了解happen-before吗? 线程池原理、参数以及给定实际的场景,然后设计线程池 知道JVM的内存模型和运行时区域吗?分别说一说(注意这里很容易错,二者是不同概念) 平时学校开设哪些课程? 有什么想问的? 2.7.2 技术2面待安排 2.8 虎牙 2.8.1 技术面 new一个对象的过程 cap定理 hashset list vs set lock的底层 http的方法有哪些 线程池底层怎么实现的 threadlocal mysql引擎有哪些 jdk 8的lambda表达式 ps:都答上来了,莫名其妙一面挂了。可能长得丑。哈哈哈哈 2.9 平安科技 2.9.1 技术1面 自我介绍 介绍一下项目 你觉得你的项目会出现什么问题,如果让你现在想,你觉得可能出现什么问题? 第3个问题之后就挂了。 2.10 其他公司 其他公司的面试经验以知识点的形式给出,见1.3.1。
分享
4
先马后看
使美人计我就将计就计
广东白云学院·2022届

许愿恒生 拿到offer写面经回馈

资管与机构部门 ——前端开发岗 视频会议面试15分钟左右 问题大致如下: 1.先自我介绍准备了2~3分钟左右 2.问项目使用的技术,项目的收获(一紧张只回答了技术栈) 3.问vue生命周期了解不,大致作答 4.问http协议都了解了哪些内容,继续问http和https的区别,http状态码 5.非专业问题闲扯了两个问题(此部分考察团队合作能力和个人意志品质,要谨慎作答)。
分享
评论
超好运许愿池
王一
苏州大学·2022届

春招面经(虎牙直播、菜鸟网络、腾讯)

楼主是某末流985渣硕,搞Java后台研发,在校期间跟同学做过两个小项目,从3月初开始找实习,之前投了不少公司,很多都失败了,也一直很彷徨、迷茫。 投递记录 华为 - 笔试挂 网易(广州) - 笔试挂 虎牙直播 - 总监挂 菜鸟网络 - 三面挂 唯品会 - 笔试挂 携程 - 过笔试 京东 - 笔试后无消息 腾讯 - offer 微众银行 - 口头offer 部分面经 这里楼主只写了部分面试中自己觉得值得关注的问题或自己当时没回答上来的问题,很多十分常见的就没有列举出来。 1. 菜鸟网络(三面挂): 一面(电话): synchronized是否可以由同一个函数多次调用(一个函数递归调用); hashMap是否线程安全,与HashTable的区别; ConcurrentHashMap中的扩容是否需要对整个表上锁; 浏览器输入url的过程; MySQL索引的结构,什么是B+树; 什么是红黑树,讲一讲如何修复; 二面(电话): 垃圾回收的方式; 哪些可以作为GCROOT; 快速排序、堆排序、选择排序; BeanDefination是什么; AOP的原理; MySQL的索引; HashMap与HashTable的区别; 三面(现场): 项目里的难点、特色; 根据项目中的难点想出更优的解决办法; 聊人生、理想; 有没有看过Spring的源码; 现在要你为广州市设计消防系统,两分钟思考一下,如果规划消防站的设立; 第三现场面后被挂,当时觉得莫名其妙,没写代码没问基础,知识抓着项目细节问优化,现在想想当时一些问题回答的有些避重就轻,以为是遮掩过去了,可能还是被抓住了。 2. 虎牙直播(二面挂): 虎牙直播是第一次现场面试,当时也很拘谨,发挥不太好,但是感觉他们对待应聘者的态度可能有些许问题,面试过程中不时玩下手机,并不是很认真的样子,但是作为应聘者也不能企求太多,当做积累经验就好了。 虎牙的面试问题比较基础,所以两面就集中到一起了: 什么是hash; HashMap的构成,线程安全不,什么情况下线程不安全,扩容是多个线程一起扩容吗; JVM加载class的过程; InnoDB与MyISAM的异同; 三年、五年规划; 3. 腾讯(offer): 一面(现场): 介绍项目架构; redis底层数据结构; Python高级特性,装饰器、闭包,用过哪些库; 项目难点,如何解决; 是否做过基础组件; 项目是否做过压力测试; 二面(现场): String、StringBuilder、StringBuffer之间的区别; 实现一个特殊的String类,特点是不区分大小写(重点是重写hashCode和equals方法,还问到String类中的hashCode方法的具体实现); 数据表过大怎么办、数据量多少是过大; redis和mem***的区别; 用python写单词翻转的题目; 一家超市,有100万种商品、100万个消费账单,如何利用单机计算出最后欢迎的前100种三元商品组(同时购买的三种商品); 三面(hr现场): 最受挫折的一件事; 为什么选择腾讯; 平时怎么学习; 平时学习所占生活的比重,以及业余时间都喜欢干什么; 在学校里比较讨厌的一些事情; 家里人对你在外上学、工作的看法; 总的来说这次面试腾讯的运气还不错,一面的面试官虽然是做C++的,但是也针对我的项目问到了很多相关的技术,如计算机网络、redis、MySQL等,没有因为技术不通就直接冷处理了我;二面的面试官看起来十分沉稳,技术问题问的十分有水平,在每一方面都只用两三道题就能测出你的水平,这个很服,其中最后一道算法题没做出来,一直担心会挂,可能是因为之前的问题答得还可以也给过了。 腾讯的整个面试过程给人感觉十分高效,隔一天面一轮,而且面试官也能感受到是十分专业的,素质很高,只是等待结果的时间太过煎熬。十分期待接下来的实习生活。
分享
10
原味笔面经

超级简历 APP

从简历直达offer,快人一步拿高薪

最新内推
35 名用户可以帮你内推
16 名用户可以帮你内推
13 名用户可以帮你内推
10 名用户可以帮你内推
9 名用户可以帮你内推
推荐投递
科锐福克斯
高途课堂
国商信息
国商信息
国商信息
国商信息
国商信息
国商信息