前言

在六月份的时候,水友就跟我说想跳槽了,一直待在传统公司不是办法,当时准备了两个月终于拿到了华为的Offer,一起感受下大佬的面试经历吧!

背景

211本,985渣硕,毕业之后一直在传统企业。从6月底开始硬着头皮看题 ,然后从8月底开始准备秋招,到目前收获了几个offer,准备就签华为了。

京东

京东是第一个面试的公司,虽然过了,但是京东那成海了,估计捞不起来了。

一面(电话面试40min)

  1. 问本科做的什么,有没有学过计算机相关课程

  2. Spring是怎么识别http请求找到对应的controller的

  3. 对象在堆内存里面会不会有移动

  4. Integer能不能用==判断相等(-128到127有缓存)

  5. 重写equels为什么要重写hashcode(回答因为有一些需要用到hashcode的场景,比如set,会先判断hashcode是否相同,再通过equals来判断)

  6. JVM常见的垃圾回收算法以及都有什么缺点

  7. new一个object对象,然后再赋值给一个静态变量,然后问这个过程在JVM内存是什么个过程(回答会把创建的实例对象放到堆内存区域,然后再把指向对象的内存地址赋值给符号引用,让这个符号引用指向对应的堆内存区域)

  8. 这个对象的堆内存地址会不会发生改变(会,因为垃圾回收会对对象进行转移,比如复制法和标记整理)

  9. 输入URL到浏览器,整个过程是怎么样的

    • Spring是怎么处理HTTP请求的

      前置分发器 DispatcherServlet 接收到 HTTP 请求之后,将查找适当的控制器 Controller 来处理请求,它通过解析 HTTP 请求的 URL 获得 URI,再根据该 URI 从处理器映射 HandlerMapping 当中获得该请求对应的处理器 Handler 和处理器拦截器 HandlerInterceptor,最后以 HandlerExecutionChain 形式返回。

      前置分发器 DispatcherServlet 根据获得的处理器 Handler 选择合适的适配器 HandlerAdapter。如果成功获得适配器 HandlerAdapter,在调用处理器 Handler 之前其拦截器的方法 preHandler() 优先执行。

      方法 preHandler() 提取 HTTP 请求中的数据填充到处理器 Handler 的入参当中,然后开始调用处理器 Handler(即控制器 Controller)相关方法。

      控制器 Controller 执行完成之后,向前置分发器 DispatcherServlet 返回一个模型与视图名对象 ModelAndView 。

      前置分发器 DispatchServlet 根据模型与视图名对象 ModelAndView 选择适合的视图解析器 ViewResolver,前提该视图解析器必须已经注册至 Spring IOC 容器当中。

      视图解析器 ViewResolver 将根据 ModelAndView 里面指定的视图名称获得特定的视图 View。

      前置分发器 DispatchServlet 将模型数据填充进视图当中,然后将渲染结果返回给客户端。

  10. HTTP报文的格式是怎么样的(请求行,请求头,空行,请求体)

  11. cookie存在http哪儿

  12. cookie和session的区别

  13. mysql里面的索引类型以及联合索引的最左原则

  14. 了解过覆盖索引吗(没有了解)

    如果一个索引包含(或覆盖)所有需要查询的字段的值,称为‘覆盖索引’。即只需扫描索引而无须回表。 只扫描索引而无需回表的优点: 1.索引条目通常远小于数据行大小,只需要读取索引,则mysql会极大地减少数据访问量。 2.因为索引是按照列值顺序存储的,所以对于IO密集的范围查找会比随机从磁盘读取每一行数据的IO少很多。 3.一些存储引擎如myisam在内存中只缓存索引,数据则依赖于操作系统来缓存,因此要访问数据需要一次系统调用 4.innodb的聚簇索引,覆盖索引对innodb表特别有用。(innodb的二级索引在叶子节点中保存了行的主键值,所以如果二级主键能够覆盖查询,则可以避免对主键索引的二次查询)

    覆盖索引必须要存储索引列的值,而哈希索引、空间索引和全文索引不存储索引列的值,所以mysql只能用B-tree索引做覆盖索引。

  15. 事务是怎么实现的。

  16. MVCC知道吗

  17. 事务隔离级别,分别能解决什么问题

  18. 说一下什么是线程安全问题

  19. sychronized和Lock的区别

  20. synchronized使用的方法以及底层原理

    同步方法是隐式的。一个同步方***在运行时常量池中的method_info结构体中存放ACC_SYNCHRONIZED标识符。当一个线程访问方法时,会去检查是否存在ACC_SYNCHRONIZED标识,如果存在,则先要获得对应的monitor锁,然后执行方法。当方法执行结束(不管是正常return还是抛出异常)都会释放对应的monitor锁。如果此时有其他线程也想要访问这个方法时,会因得不到monitor锁而阻塞。当同步方法中抛出异常且方法内没有捕获,则在向外抛出时会先释放已获得的monitor锁

  21. lock的实现方法以及底层原理(CAS volatile然后AQS,然后独占锁和共享锁)

  22. 线程池参数

  23. 场景题,核心线程数6,最大线程数10,队列无界,然后说一下过程。(由于无界队列,所以线程池中的线程数不会超过6,等待队列里的任务只能等待线程处理完任务后再来执行,从头说到饱和策略)

  24. 双亲委派模型了解吗(巴拉巴拉)

  25. 怎么破坏(自己实现classloader,然后重写classload方法,然后扯到Tomcat,然后问Tomcat为什么要这样做,真想给自己一巴掌,话真多)

  26. 反问,问面试官是哪个部门的,都是做什么的。

  27. 问有offer吗(没有)

二面 35min

  1. 自我介绍
  2. 项目介绍,架构
  3. 线程池,有用到多线程吗,线程怎么同步的
  4. mysql怎么建立索引
  5. 应用是单机部署还是多机部署
  6. redis部署模式(主从和哨兵)
  7. 目前的研究课题是什么
  8. 深度学习模型,CRNN CTPN是什么,整个框架
  9. 分布式有接触过吗
  10. 反问

电话突击面  30min

1.问项目

2.问java基础

3.问redis

4.sql删除重复数据,保留一个

delete from table where sex = (select sex from table group by sex having count(*) > 1)这是删除所有

Delete from table where id not in (select min(id) as id from table group by sex)

5.hashmap的原理

6.线程安全的本质,怎么保证线程安全

7.是什么时候学的java

8.反问

HR面

  1. 自我介绍
  2. 问学习,遇到未知领域怎么做,怎么学习的
  3. 有没有对象
  4. 有什么offer,怎么选择
  5. 职业规划
  6. 反问

字节

一面(70min)

  1. 自我介绍
  2. select和epoll的区别,水平触发和垂直触发
  3. so文件存在内存的哪个地方
  4. 页面置换算法
  5. 虚拟内存,为什么虚拟内存会远大于物理内存
  6. 进程的内存结构
  7. CPU超频和超线程的区别,超频有什么优势,超线程呢(不知道)
  8. TCP中syn-flood怎么避免
  9. HTTP中协商压缩
  10. websocket是怎么握手的
  11. ==和equals的区别
  12. hashmap和hashtable的区别,抽象类和接口的区别
  13. 常见的HASH算法有哪些,一致性hash了解过吗,为什么有虚节点,一致性hash的应用场景(分布式缓存)
  14. 解决hash碰撞的方法,开放地址法和拉链法外还有吗
  15. 垃圾回收,回收算法,选一个回收器介绍
  16. 常见的排序都有哪些,归并排序和堆排序的过程
  17. kafka都用来做什么,怎么保证系统的高可用性,怎么保证消息不会丢失
  18. linux删除空行的命令
  19. linux如何查看cpu的核数,lscpu cat /proc/cpuinfo top
  20. redis常见数据结构
  21. redis的哨兵模式
  22. redis的过期数据删除,内存满了怎么办,默认是哪个策略(noeviction,满了就报错,禁止淘汰数据)
  23. 计算机网络中的拥塞控制
  24. 算法题,根节点到叶子节点组成的数的和。
  25. 1G大小的文件,内存1M,每行由单词组成,找出频数最高的100个。(归并)最小堆

二面(80min)

  1. 自我介绍
  2. epoll没处理完数据会怎么样
  3. connect和accept对应的TCP状态
  4. 容器的文件系统
  5. 容器怎么实现CPU资源隔离的
  6. ConcurrenHashMap怎么扩容,实现机制
  7. hash冲突的解决办法
  8. 死锁产生的条件
  9. 互斥条件(不可剥夺条件,请求和保持条件,循环等待条件)

  10. mysql事务的特性,隔离级别,能解决什么问题,页锁(头会听说)
  11. 算法题:
-有序的二维数组查找-LRU+TTL

三面(40 min)

  1. 自我介绍,项目问题
  2. redus在项目中用在哪些方面,常用数据结构,zset怎么实现的,zset应用场景
  3. udp怎么实现可靠传输,怎么保证大文件传输可靠,怎么实现断点传输。
  4. nginx负载均衡算法,一致性hash算法,一致性hash带权重怎么实现
  5. TCP中首部中的序号占多少个字节,为什么要这样用。
  6. 怎么学习技术的,都学过什么。
  7. 容器(docker)的网络模型
  8. 研究课题相关
  9. 反问

 HR面(30min)

主要就问了有哪些offer,打算去哪,有没有女朋啊和一些技术问题的概念解释。


华为

一面(30min)

  1. 自我介绍
  2. .问项目,自我介绍里面的
  3. 3.算法题:给定一个数组,找出里面能构成三角形的最大周长构不成就返回0
  4. 4.java设计模式(模板模式,代理模式,工厂模式,单例模式)
  5. 5.快排和归并排序的区别(都是基于分治的思想,归并排序是稳定的排序,O(nlogn),最坏情况也不变,快排是不稳定的排序时间复杂度O(nlogn),最坏情况是O(n2))
  6. 6.final用法都有什么作用(修饰变量,类,方法)
  7. 7.不可变对象
  8. 8.根据前序中序求后序

二面  (40min)

1.自我介绍

2.面向对象的设计原则,单一职责原则,开闭原则(怎么实现)

3.设计模式,你熟悉的(模板模式,代理模式,工厂模式,单例模式)

4.中间件(redis,kafka)

5.mysql语句,查询一个字段,用某个字段排序,显示某一页多少个内容

6.算法题:拼单词,字符可以能拼出哪些单词。

三面(45min)

1.自我介绍

2.深挖项目(微众银行的比赛,选择标准,取得成绩的标准,你是负责干什么的,团队分工,团队是否有分歧,怎么解决的,项目有没有遇到什么问题,怎么解决的,如果你这个东西要商用的话,还需要怎么改进,有没有考虑过安全问题,怎么判断恶意访问)

3.问了科研项目,有没有遇到什么问题,遇到最困难的问题是什么,怎么解决的,有没有看过源码。

4.反问(问了部门组成,以及连接与协同是做什么的(物联网))

当时在字节和京东直接犹豫了很久,最后还是选择了华为


美团(凉经)

一面

1.自我介绍

2.聊项目

3.手撕mysql,查询点播量最高的视频

select viod_name from table order by times desc limit 0,1

4.mysql,查询点播最高的用户

select userid,count(*) as times from table group by userid order by times desc limit 0,1

5.redis的数据结构,redis的性能为什么好

6.redis的过期机制和内存淘汰策略

7.redis持久化的方式(没答出来)

8.redis并发问题(没答出来,两个用户同时修改一个key)

9.redis lru是怎么实现的。(通过链表实现的)

10.java的集合,concurrenthashmap怎么解决并发问题的,Hashtable怎么解决的。

11.常用的垃圾回收算法(parralell)

12.cms怎么解决内存碎片的问题(full gc)

  • 增大Xmx或者减少Xmn

  • 在应用访问量最低的时候,在程序中主动调用System.gc(),比如每天凌晨。

  • 在应用启动并完成所有初始化工作后,主动调用System.gc(),它可以将初始化的数据压缩到一个单独的chunk中,以腾出更多的连续内存空间给新生代晋升使用。

  • 降低-XX:CMSInitiatingOccupancyFraction参数以提早执行CMSGC动作,虽然CMSGC不会进行内存碎片的压缩整理,但它会合并老生代中相邻的free空间。这样就可以容纳更多的新生代晋升行为。

13.mysql建立索引的原则

14.四次挥手的过程和状态

15.算法题:求两个String类型的整形加法String num1 = "123";String num1 = "456";相加然后反转

二面(80min)

1.自我介绍

2.说一下项目里面的具体做什么的,怎么保存在线观看的人数

3.mysql大表优化

4.有用过哪些redis命令吗(没有)

5.数据库里面都有什么表

6.项目里面实现最难的功能是什么

7.进程和线程的区别

8.为什么进程切换慢,线程切换快

9.怎么实现多线程

10.线程池都有什么,怎么创建,线程池参数,有用过线程池吗(没有)

11.线程都有哪些状态,怎么让线程进入阻塞状态,阻塞,非阻塞,同步和异步的区别

12.JVM内存模型

13.算法题

两个链表相加,1-2-3-4-5,1-2-3-4结果就是1-3-5-7-9两个线程交替打印奇数和偶数(说了想法,没有写)

14.最近在看什么书吗,有没有接触过什么新技术

15.有offer吗

后面没收到任何通知,凉凉。这么简单的算法题,当时那面试官一脸看弱鸡的表情,给我整怕了,没写好,虽然写出来了。


写在最后

天道酬勤,虽然准备晚了,但是努力就会有好结果,中间也有迷茫,也有失落,但是硬着头皮在2个月不到的时间刷了400道左右的题目。

当然最重要的一点就是坚持,不要放弃。船到桥头自然直。柳暗花明又一村。offer总会有的,不要妄自菲薄。坚持才会胜利,冲鸭!!!

   最后把面试资料100%免费分享给大家,也帮大家都能升职加薪!

资料领取:戳这里免费领取,暗号:CSDN

爱编程,爱分享,听说点赞+关注的都进大厂了哦!!!

从传统企业到字节、美团、京东,再到拿下华为Offer,程序员的逆袭之路。相关推荐

  1. 婴幼儿用品行业打破传统经营模式 开启全渠道会员营销逆袭之路

    随着三胎政策的开放,母婴行业的市场竞争已经到了白热化的地步,母婴用品商家想要在一众大军充突围而出,势必要在经营方式上有所突破.再加上新零售的快速崛起,婴幼儿用品品牌想要异军突起,实现销售量的增加和品牌 ...

  2. 确认!别再相信Python了! 程序员:就你敢说...

    @程序员你有没有感觉到,Python最近已经刷屏到爆炸了? 细分析Python之所以刷屏,主要是因为人红是非多,在编程界它是一种特殊的存在,有人认为,只有用Python才能优雅写代码,提高代码效率:但 ...

  3. 腾讯阿里美团相继搞事,渣本程序员的出路在哪?

    10月份美团在内网通报最新的职级体系调整,明年初起实行新的"扁平职级,宽带薪酬"体系,原有的"M+P"双职级线."1-2 至 3-3"等专业 ...

  4. csdn学院 python_确认!别再相信Python了! 程序员:就你敢说...

    @程序员你有没有感觉到,Python最近已经刷屏到爆炸了? 细分析Python之所以刷屏,主要是因为人红是非多,在编程界它是一种特殊的存在,有人认为,只有用Python才能优雅写代码,提高代码效率:但 ...

  5. 企业面临大危机,CRM崩溃告急,程序员竟用特殊手段化解危机!

    公交车的速度落后于时代,但司机却在想方设法地榨取动力,于是一路的颠簸闯动成为了宿命.此时王贤正处在剧烈的晃动之中,他坐在公交车上,离市中心越来越近.这时手机响起提示,是电讯公司话费催收短信.王贤皱着眉 ...

  6. 一个网瘾少年到腾讯码农,再到360技术总监,最后成长为CTO的逆袭之路!太艰难了.....

    点赞再看,养成习惯,微信搜一搜[findyi]关注这个喜欢写情怀的程序员. 回复[1]获得程序员职场晋升PPT一份 我曾经是一个游戏网瘾少年.6岁就开始玩街机,之后开始玩小霸王游戏机,初中三年长期混迹 ...

  7. 金九银十征服、阿里、京东、字节跳动,的程序员和他们的公众号

    学习如逆水行舟,不进则退:今天给大家精心挑选的这几个超级牛逼的公众号,在行业深耕已久,这些号一般是由深耕技术多年的IT老兵.名校超级学霸运营! 表哥有话讲 国内最大的数据从业者分享平台.20W程序员聚 ...

  8. 现在企业编程用java还是python_想转行做程序员,是学习 Java 还是 Python 更好?

    只有小孩子才做选择,我都要 我们学习的目的是为了更好的就业,那当然Java就是首先,然后在学Python 下面给你谈谈我为什么建议你先学Java JAVA的市场占有率相当高,因其广泛的应用型和不易出错 ...

  9. 发现美团的一个新锅,可能程序员背不动了

    一篇剑指美团大数据杀熟.割会员韭菜的文章<我被美团会员割了韭菜>刷屏了.昨天12月17日,美团正式回应了这个事件. 翻译一下:我们没有割会员韭菜,是程序bug导致.我们的程序员已经接锅(认 ...

最新文章

  1. Validator(二)自定义
  2. 虚拟列表控件---加载大数据行
  3. 最新ui设计趋势_10个最新且有希望的UI设计趋势
  4. 20145321 《信息安全系统设计基础》第12周学习总结
  5. OpenBmc开发9:dts简介与使用
  6. 【游戏感想】古剑奇谭2
  7. ETCD 源码学习--Watch(client)
  8. 计算机打字教程ppt,计算机打字基础教学.ppt
  9. linux ubuntu 设置ip地址命令行,Ubuntu Linux上的IP地址管理
  10. svpwm的matlab仿真实现
  11. 《致橡树》–by 舒婷
  12. 各种数据接口欺骗器学习
  13. 01-JAVA基础_1.1 详细简介
  14. 来自ETH源码,手动生成以太坊钱包,ERC20标准钱包
  15. 如何把清晰的CAD图纸转到Word文档里面且背景是白色的
  16. 从 12K 到 60K, 这 2023Java 研发必问高级面试题,过关斩将拿 offer
  17. 敢问出路在何方?——给资深程序员的一封推荐信
  18. 学术规范与论文写作网课笔记
  19. java 504错误怎么解决_504 Gateway Time-out 错误处理记录
  20. 苹果电脑为什么无法删除U盘的文件?mac怎么删除移动硬盘里的文件

热门文章

  1. 成为云计算产品经理的前提
  2. 橘红色html语言,橘红色调色概念和调配方法!
  3. 装修颜色搭配大全,全是惊喜啊
  4. 搭建个人家用NAS网络存储服务器
  5. jquery选择器中含有不含有空格的问题
  6. 聊天机器人:问答系统类型介绍
  7. 网吧接入的新趋势(转)
  8. 编写一个基于控制台的购书系统实现购书功能
  9. 个人计算机的防病毒软件无法防止,如果无法打开计算机防病毒软件应该怎么办...
  10. 介孔二氧化硅载金微球/介孔镍-二氧化硅核壳微球Ni/SiO2/海藻酸钠/二氧化硅杂化微球的制备方法