java后端社招面试经历
最近打算换工作后开启博客分享面试经验与工作中遇到的问题总结。整体面试经历中发现以下几点:
Java基础知识:面试中需扎实掌握核心概念,并灵活运用解决问题。
线程池设计:注重解决思路的扩展性与灵活性。
分布式系统:需深入理解Redis、Zookeeper等技术原理及应用场景。
数据库调优:熟悉索引优化与性能调优方法。
业务设计能力:需具备清晰的设计能力以应对复杂场景。
这些经验总结为个人职业发展提供了参考价值。
最近计划转向职业发展之路,在工作中积累了丰富经验的基础上进行系统性梳理与总结。展望未来将以网络平台为载体定期分享工作中的常见挑战及寻求交流机会,并将此视为探索职业发展道路的一个新起点。在整体回顾面试经历时会持续深入思考与全面回顾相关经验和收获
- 要牢固掌握Java基础知识是真的至关重要的。面试准备阶段没有题可压是不对的比喻——它意味着面试中不会有固定的题目可供选择。然而,在任何情况下都可能出现的问题都可能被问及。因此认真对待自己的职业发展是一个负责任的态度——不要让欺骗自己成为一种自欺的表现。
大多数面试官并不是真正想让你难住, 而是希望通过考察你的方法来评估你解决问题的能力。当遇到一个未知的问题时, 你可以选择暂时表示不知道, 这样下去就很难再继续下去了。每个问题都具有相似的特点, 通过寻找类似的情境来拓展自己的解题思路。
该方法能够实现高效的数据处理能力,在实际应用中展现出显著的优势。在具体实施过程中需要注意以下几点:第一,在项目开发初期应注重对技术细节进行充分调研和研究,并通过建立完善的技术文档为后续工作奠定基础;第二,在系统设计阶段要充分考虑系统的可扩展性和维护性需求,在遵循设计规范的同时确保系统架构具有良好的扩展性。
4. 关于薪资的问题,请根据个人能力和岗位需求来确定具体数额。如果你具备相应的能力和条件,在面谈时我们也会根据公司实际情况综合考量并给出合理的建议。
有赞:
一面:
hashMap原理,put和resize过程
线程池有哪些类型,
concurrentHashMap分段锁原理,java8和java7实现的区别
B-树和B+树区别,数据库索引原理,组合索引怎么使用?最左匹配的原理
在Spring框架中讨论生命周期相关的概念时,请注意以下几点:
- 理解不同Scope间的差异是掌握核心机制的关键;
- 探索AOP实现的具体路径有助于深入理解其工作原理;
- 分析接口代理与类代理之间的显著差异能够帮助区分两者特性;
- 比较两种代理技术的本质区别将有助于提升技术应用能力。
二面:
1.项目介绍
2.斐波拉契数列非递归实现
3.短URL实现
三面:
HR+主管
你现在做的事情,为什么要离职?反正对你性格生活薪资全面了解
今日头条:
一面:
在加入我们团队之前, 我已经积累了丰富的项目经验. 在项目价值方面, 我具备了深入的理解能力. 系统架构设计方面, 我有较强的规划与执行能力. 当你面临一个集群时, 如何进行资源分配是一个值得探讨的问题. 在实施过程中, 需综合考量哪些因素. 同时, 容灾备份方案与负载均衡配置也是必须优先考虑的事项. 优化容灾策略与负载均衡机制, 是提升整体系统可靠性的重要保障.
让你来设计咸鱼,你会怎么设计?模型设计
linux常用指令
二面:
算法在线编程
该项目主要完成了哪些工作内容,在实施过程中遇到了哪些主要问题,并采取了哪些应对措施?认为该项目的实施过程充满了挑战。
java多线程,线程池的选型,为什么要选这个,底层实现原理
三面:
你最熟悉的项目,做了什么,为什么这么做,怎么体现你项目的价值
请柬:邀请你负责执行该广告的推广工作
java基础问了些,JVM内存模型 G1和CMS垃圾回收器
如何中断线程,await和sleep区别
设计一个秒杀系统
spring生命周期,几种scope区别
四面:
跟上面差不多
五面:
主管面,主要问项目,然后说下他们在做什么
六面HR:
期望薪资,为什么要离职,现在的级别,会考北京的原因
网易:
一面:
RPC原理,netty原理
hashMap原理
redis缓存回收机制,准备同步,哨兵机制
要统计10分钟内订单的亏损,你会怎么设计(strom窗口模式)
项目:你做了什么,为什么要这么做,用了什么技术要解决什么问题
二面:
分布式缓存redis原理,zookeeper锁是如何实现的
分布式缓存读写不一致问题
java线程你是怎么使用的
数据库是如何调优的
该同学对git重新bases命令的具体表现如何
讨论项目
三面HR:
薪资,为什么要离开,级别
华为:
一面:
结构数据库和非结构数据库区别,你了解的非结构数据库有哪些
由于频繁进行增删操作导致该表仅存储约数万条记录,查询性能为何下降
当数据出现阻塞时,请问你是如何进行排查工作的?你是否熟悉使用top和jstack命令?能否解释一下jstack命令中的nid参数具体是做什么用的?请问如何获取Java指定进程中所有线程的信息?
大数据算法聚类算法有哪些
写一个算法判断某个数是2的n次方
说你最熟悉的项目
二面HR:
薪资级别,你是怎么抗压的,平时喜欢做什么,对加班什么看法
三面业务主管:
你想做什么,会给你介绍他们部门做的东西
你自己做的项目,怎么设计的
美团
分布式缓存redis,dubbo原理,分布式缓存锁的实现
采取如此之多的分库分表方式的原因是什么?其依据是什么?在实施过程中如何进行动态扩容?
如何配置线程池的coreSize和maxSize参数?其设定理由是什么?案例1:一台服务器拥有4个CPU核心,在处理一个请求时会触发服务A(响应时间为5秒),其中服务B(响应时间为4.98秒)成为瓶颈环节。当处理能力达到每秒100次(QPS)时,请问动态线程池应如何指定CoreSize、maxSize以及等待队列的相关配置?
场景2:设计一个订餐排队系统,底层模型有哪些?(客户,商家,桌型)
滴滴
主要涉及Java基础相关知识的复习,其中包括线程池的相关知识以及与二面面试官探讨了设计模式的相关内容。在模型设计方面重点掌握了核心原则,并对接口设计的指导原则有深入理解。分布式缓存和RPC原理及其实现方法也需要重点复习:其中分布式缓存基于消息队列的异步通信机制;而RPC(远程调用协议)则通过客户端-服务器模式实现异步交互。此外还需要弄清楚Redis的工作原理以及Zookeeper的作用机制;了解HSF与Dubbo的主要区别:其中HSF是高可用性的微服务框架;而Dubbo是一个高性能的跨平台服务发现与调用框架。这些内容整体上与之前面试的问题高度一致
前端写过一些,所以问了些react和nodejs
HR:离职原因,这么多公司offer你会考虑滴滴吗
总结
零零碎碎的比较多,整体上面试分为几个部分:
1. java基础知识和源码
2.线程池,这个每个面试都必问,结合使用场景和原理说一说
- 掌握分布式系统知识是技术面试中的必修课。
每个技术面试通常都会考察相关知识点。
Redis、Dubblo、Kafka或其他技术栈是常见的考点。
Zookeeper用于集群管理和协调心跳机制
在优化数据库性能方面需重点关注以下几点:其一是合理设计索引策略;其二是深入理解查询优化原理
5.业务设计能力和架构negligence考察
推荐书籍:
高性能mysql
mysql技术内幕
redis设计与实现
effect java
spring技术内幕
设计模式
netty实战
java并发编程实战
