顺丰一面-凉经

是在一间小房子里面的,声音很嘈杂,面试官很多
【0】首先是自我介绍
【1】你对容器类,比如HashMap有什么了解
HashMap底层是数组加链表,首先利用hashcode计算地址,当发生冲突的时候用拉链法解决冲突,当拉链足够长的时候将其转化为红黑树。如果是要线程安全,建议使用ConcurrentHashmap而不是hashtable,因为前者是分段加锁的,后者只用了个synchronized。
【2】你是怎么理解容器的线程安全和线程不安全的,里面是做了什么实现
容器的线程安全实现主要的实现还是加锁。如果是线程不安全,就是没加锁,可能会出现并发的问题,如果是线程安全就做了加锁的操作,举例了concurrenthashmap和hashtable以及arraylist,linkedlist和vector
【3】了解可重入锁吗
一个线程如果拿到了这个锁之后,释放了,接下来的代码里还可以重新拿到这个锁。但是普通的锁是不行的。
【4】可重入锁用来解决一些什么样的问题
出于业务需求,需要对一个资源有频繁的调度,所以需要让他有可重入的功能(可能回答的不大准确)
【5】怎么理解乐观锁和悲观锁
乐观锁假设不会出现并发问题,一旦出现并发问题是没法解决的。通常用的方法有版本记录法等,这个方法也是Es中间件经常用到的写入方法。当写入的时候版本发生变化了,说明这个数据的状态和我们之前操作的数据不是一致的状态了。
悲观锁认为一定会发生这些问题,我们需要做好防范。比如悲观锁对于数据库的那几种不一致状态,读未提交,脏读,幻读,不可重复读等等,需要给他加锁。比如:读之前加S锁,写之前加X锁。
【6】如何避免死锁 ;银行家算法。让资源变成非竞争的,资源编号法,只能按序号重小到大申请资源;不允许线程占有并申请资源,只能一次申请全部
【7】如果有三个线程,一个只能打印a,一个只能打印b,一个只能打印c,如何确保有序
用并发控制,设置资源变量,当值为1时只能打印a,为2时只能打印b,为3时只能打印c,每次打印完后给资源+1并且求余3;
【8】对于线程池有了解么,简单说说
线程池其实就是一种多线程处理形式,相比手动创建线程,它的优势在于能够根据软硬件资源对线程进行统一的管理,而且统一创建线程,销毁线程,从单个线程上看,使用线程的开销变为了执行任务的开销,节约了创建和销毁的开销
【9】线程池的核心参数你知道么?

线程池的创建接口:ThreadPoolExecutor
核心参数:
1:核心线程数(corePoolSize)
核心线程数的设计需要依据任务的处理时间和每秒产生的任务数量来确定,例如:执行一个任务需要0.1秒,系统百分之80的时间每秒都会产生100个任务,那么要想在1秒内处理完这100个任务,就需要10个线程,此时我们就可以设计核心线程数为10;当然实际情况不可能这么平均,所以我们一般按照8020原则设计即可,既按照百分之80的情况设计核心线程数,剩下的百分之20可以利用最大线程数处理;
2:任务队列长度(workQueue)
任务队列长度一般设计为:核心线程数/单个任务执行时间*2即可;例如上面的场景中,核心线程数设计为10,单个任务执行时间为0.1秒,则队列长度可以设计为200;
3:最大线程数(maximumPoolSize)
最大线程数的设计除了需要参照核心线程数的条件外,还需要参照系统每秒产生的最大任务数决定:例如:上述环境中,如果系统每秒最大产生的任务是1000个,那么,最大线程数=(最大任务数-任务队列长度)*单个任务执行时间;既: 最大线程数=(1000-200)*0.1=80个;
4:最大空闲时间(keepAliveTime)
这个参数的设计完全参考系统运行环境和硬件压力设定,没有固定的参考值,用户可以根据经验和系统产生任务的时间间隔合理设置一个值即可;
【10】用过Mysql么?有哪些存储引擎?有什么区别
MyISAM和MyISam
MyISAM: 默认表类型,它是基于传统的ISAM类型,它是存储记录和文件的标准方法。不是事务安全的,而且不支持外键。InnoDB:支持事务安全的引擎,支持外键、行锁、事务是他的最大特点。
【11】说一说innodb的底层实现。

【12】针对sql语句怎么进行优化

【13】inner join,左连接,右连接等有什么区别?基于什么样的考虑,去确定使用各种连接
【14】建索引的依据时什么?(explain查瓶颈)
【15】了解计算机网络么?tcp和udp的区别
【16】讲讲三次握手和四次握手
【17】TCP粘包的原因以及如何避免
【18】你在项目中用到了es,kafka,quartz等,那么你在项目中主要实现了什么功能
【19】定时任务计算热帖排行,你是怎么计算的,整个过程讲一下?定时任务是什么时候启动的?
【20】Redis也支持做排行榜功能,你能简单说说么
【21】在项目中遇到的挑战,难点
ps:来自23年的面试凉经,那年似乎不咋招人,后来也毁约了不少#软件开发笔面经#
#牛客解忧铺##24届软开秋招面试经验大赏##如何判断面试是否凉了#
全部评论
哇,牛可乐听了你的面试经历,感觉你准备得很充分呢!面试中遇到这么多问题,一定很不容易吧。🐮🍀 1. 关于HashMap的回答很棒,不过牛可乐有个小问题,你在项目中有没有遇到过需要用到HashMap的场景呢? 2. 听你讲解线程安全和线程不安全,牛可乐觉得你理解得很深刻。对了,你在项目中有没有用到过线程安全的容器,能分享一下经验吗? 3. 可重入锁和乐观锁、悲观锁的讲解也很清楚。牛可乐好奇,你在实际编程中有没有遇到过需要用到这些锁的情况呢? 4. 哎呀,面试中遇到这么多问题,牛可乐猜你可能有点累了吧。休息一下,喝杯水,然后我们继续聊聊。😊 5. 牛可乐看到你提到了线程池,这个真的很重要!你在项目中是如何使用线程池的,能分享一些经验吗? 6. 对于MySQL的存储引擎,你讲解得很详细。牛可乐想问问,你在项目中是如何选择存储引擎的? 7. 哎呀,面试的经历真是让人紧张呢。不过没关系,牛可乐在这里陪着你。🌈如果你愿意的话,可以点击牛可乐的头像,我们私信聊聊,牛可乐可以帮你分析一下面试中的亮点和需要改进的地方哦! 8. 最后,面试虽然有点波折,但是你的努力和准备都是值得肯定的!牛可乐相信你一定能够找到心仪的工作的。加油哦!🚀 (点击牛可乐头像,私信聊天吧~)
2 回复 分享
发布于 2024-08-30 09:42 AI生成
半个小时 问了这么多吗
点赞 回复 分享
发布于 2024-09-04 13:25 黑龙江
这怎么是凉经
点赞 回复 分享
发布于 2024-08-31 16:53 四川

相关推荐

本科土木三本,工作数年后读了研,换了专业后现在面临求职问题。当年行情好到什么程度呢,我在赶集网投递的中建三局,打了个电话问了问情况就把offer发邮箱里了。不过工地太牛马干了一年半跑路互联网。读研前最近一份工作是pxx和某手游厂二选一,选了手游厂做电商运营。后面口罩原因封城了,闲得发慌把书捡起来看,下半年业务线裁撤了,公司觉得养这么多人不如直接把业务外包出去,所以干脆考了研。有一说一,读研的日子是快乐的,充实的,但是命运中的一切早已标定好了价格,我会付出什么样的代价呢?秋招0offer,春招0offer。其实严格来说找不到工作是有失偏颇,因为我把读研经历从招聘网站上隐去的时候,那面试邀约是一个接着一个源源不断。所以说我发现这些公司接受不了你的gap,更接受不了你大龄转行,哪怕你名义上确实是个应届生。讲这么多,其实只是想用自己经历做个例子。我自己过得跟个笑话也就算了,希望学弟学妹们引以为戒。1.读研慎重,如果要读研,最好是连续的。即使不是,本硕之间也不要超过两年。我那个年代流行什么工作多年后读研你才知道自己要的是什么这种说法,纯放屁。2.尽早规划好自己的职业发展路径。我知道这个app虽然平时都是92的学生发言较多,但也有不少学校一般的同学,家境一般的同学,自己上学求职啥的,家里没个懂的人指导就很容易走弯路,甚至很多信息自己压根不知道的。3.我大致认为社会对毕业两年内的社会新人包容性比较强。两年内试错没关系,工作不合适可以换个方向,但超过一定岁数就得慎重。4.找工作一定要找有发展的,不能吃青春饭的;或者吃青春饭也行,但一定要赚得多。5.忘记了,想起来再说
点赞 评论 收藏
分享
评论
6
51
分享

创作者周榜

更多
牛客网
牛客企业服务