Skip to content

Latest commit

 

History

History
160 lines (145 loc) · 9.92 KB

File metadata and controls

160 lines (145 loc) · 9.92 KB

面试题(面经)

字节 后端开发工程师-抖音/直播/影像/智能创作 一面面经 面试官挺和善的,即使我很菜还是面了我一个多小时,很多问题细节不清楚,答得支支吾吾的,还是没准备好。 下面是部分面试题,只能回忆起这么多了 一.java部分 java里List实现方式有哪些 ArrayList和LinkedList区别 ArrayList怎么实现扩容 ArrayList线程安全吗 有没有什么线程安全的List java怎么实现线程安全 java的引用介绍一下(强引用,软引用,弱引用,虚引用) java的垃圾回收机制,怎么判断是不是垃圾 二.操作系统部分 进程间通信方式 cpu进程调度 进程同步问题 虚拟内存、物理内存和逻辑内存都是什么,关系和区别 三.计算机网络部分 TCP建立连接的过程 TCP怎么实现可靠传输 TCP滑动窗口怎么增大 http的几种method介绍一下 四.实际场景 用户使用App扫描网站二维码登录的过程 五.代码 给定一个n*m的二维数组,定义一个数字如果比上下左右的数字都大,则称为“峰顶”,求二维数组中任意一个峰顶的坐标,要求算法复杂度为nlogm或mlogn


1.一面大概问了一下了解的知识范围,没具体细问,就开始写题 第一题,寻找数组中出现次数超过半数的元素。 第二题也是个数组题,找到数组中相加和为target的两个元素。 反问。 可能就面了二十多分钟,然后就结束了。在我满脸懵逼的几分钟后hr打电话约了二面。

2.二面问了一系列的项目问题 同样是两个算法题。 第一题,简单的滑动窗口,找数组中长度为k的连续子序列中和最大的,并输出下标。 第二题,给两个字符串,找str1中最小长度能覆盖str2中所有元素的子串。 这次面试时间长一些,面了有四十分钟。

3.三面好难…… 首先是一个场景题,问给出十亿数据,比如说是抖音视频的标题,用户搜索之后给出相关数据,要怎么设计。 当时可能有点懵,就先回答说按批次读取数据到内存中,然后再匹配分析。面试官提示说Hadoop,就讲了讲mapreduce的流程,但是表示字符串匹配没有办法按排序来进行,提出了能不能先提取关键字再进行分析,面试官就解释说跟搜索引擎差不多,可以先提取关键字,建立关键字索引,查交集

然后写了个mysql题,写了子查询,讲了一下也可以自连接做,面试官问还有没有其他做法,提示了一下partition,我表示不会…… 然后问了下join,join、left join、inner join、right join的区别

接着是算法题,写了个LRU,大概十分钟左右写完,没有写测试用例运行,面试官看了一下说可以了

redis的数据类型,讲了下压缩表和跳表 之前项目里写了爬虫,顺着问了问怎么爬虫的,以及http消息中具体架构,get、post区别 java的弱引用,什么情况下会用到弱引用 javaGC,回答了一下三种算法以及CMS、G1,问副GC(这个可能没听清?)


字节抖音电商三面凉经

  1. 两个线程交替打印1-100 多个线程交替打印 1-100 我用的go 飞书不会自动导包 难受,后面用sync.waitGroup 报错undefined 2.update加锁方式 加在哪儿 会导致全表锁定吗 3.redis 的set 等集合最多可以存储多少个元素 4.数据库和redis如何保证一致性 (我回答了双写和binlog日志通过消息队列异步同步,但似乎不满意) 5.索引失效 你遇到过哪些(最左前缀和group by)这里埋了个坑,group by我自己忘了为啥会失效我还讲出来,不过的确是真的遇到过。 6.转账操作 如何通过保证操作不出问题,我说事物,然后说了 undo log 和xa事物和binlog保证 读已提交和可重复读,next-key lock保证幻读,但是说到一半面试官好像不满意打断我了,然后问我具体操作怎么操作,我.....不知道咋回答就说开启事物,修改后在提交事物。 7.redis的list set 等集合最多可以存储多少个元素 8.热key 在数据一致性同步时如何处理,(我回答双写可能导致db被打爆,就说如果不考虑数据实时一致性的话,就用binlog日志去异步同步。)但是好像也不满意 9.项目里的redis 如何代替raft实现数据一致性
  2. innodb加锁方式 对行的锁定如何锁定的

大概以上这些 有些记不得了,但是很多都是先问场景,然后再问问题为啥会这样。 尽量了,两段基础架构实习,对于业务的好多东西真的没接触过,刚刚挂掉,马上就反手投了暑期实习 ,本人一直坚持字节,因为我所喜欢的公司里,目前大概就 虾皮 腾讯 字节 阿里四家,但是阿里云面完后估计没了,学历太差双非一本,如果有其他公司的实习薪资可以达到以上四家的水准,欢迎联系我,求求了~~


钉钉实习,人麻了:

  1. 线程和协程,协程是怎么实现的
  2. 多线程通讯机制
  3. Docker的通讯机制,集群怎么做
  4. Synchronized在对象头中的表示,有很大一块内容
  5. Liunx32地址中用户地址占多少
  6. 虚拟空间地址的布局?读取一个文件映射到什么地方
  7. Java中字节码的加载流程

  8. Mysql存储的顺序是什么?怎么实现覆盖索引?
  9. IO多路复用的一些api
  10. Redolog,binlog,undolog说一下?书写的顺序是什么?
  11. TCP和HTTP当中有kablive(应该是keepalive)的机制?
  12. Redis集群的原理?
  13. 1M字节的数据用UDP传输,需要多少IP数据库?
  14. HTTPs中***l,那么ssl中的解密算法有哪些?
  15. 红黑树和平衡二叉树的区别?
  16. Nginx的不同通讯方式?
  17. 中间件的代码?

经纬恒润java面试 1.说一下抽象类和接口 2.了解Java拷贝对象吗 3.说一下线程池 4.说一下java程序加载过程 5.了解jvm吗,说一下成员变量在jvm的存储 6.了解java垃圾回收吗。说一下新生代 7.了解spring吗 8.说一下hashtable 9.写过链表吗


02-17 京东Go面经,日常实习 一面(40min) go语言与其他语言有什么区别 panic,recover GMP channel有缓存,无缓存,读写关闭的channel等 接口与空接口,接口断言,空接口在运行时还是编译时确定类型 线程切换 Mysql范式,范式的作用 事务,事务的特性acid 幻读和脏读 Redis的zset用法 持久化 Redis的事务 有没有写过shell脚本--没有 go的map遍历与其他语言map遍历的区别 HTTP状态码,502,503,504 TCP和UDP,三次握手 如何解析POST请求,有没有用过网络抓包工具 算法相关 BFS和DFS做文件夹遍历 队列实现栈


携程: 一面:

  1. 介绍下项目,热点数据用 Redis 的什么数据结构存储?zset。你这个负载均衡算法中的加权轮训算法怎么实现的?Rpc项目中客户端调用服务的整个过程?怎么使用Netty进行通讯的?
  2. SpringBoot常用注解?SpringBootApllication由哪些注解组成?由三个注解组成,其中有一个开启自动配置的注解。
  3. 说一下volatile? volatile有内存可见性和有序性,底层通过lock前缀的一个空指令实现。
  4. sleepwait的区别?一个释放锁,一个不会,wait可以无限阻塞,sleep不能。
  5. 了解哪些设计模式?写一个双重检测的单例模式,为什么要加synchronized?因为要考虑线程安全,加在类方法和普通方法有什么区别?
  6. 了解注解吗?自己的项目使用到了自定义注解。注解怎么实现的?通过反射实现。反射中获取class对象的三种方式?通过object类的getClass方法,类的class属性,class类的forName方法。
  7. 了解哪些排序算法,写一个快排吧。 二面:
  8. 详细讲解你的项目,细节与难点。项目中使用的序列器,protobuf为什么快?
  9. Java 的io模型?bio,nio,aio。其中nio使用操作系统的io多路复用。io多路复用的实现有哪些?select,poll,epoll。
  10. 写一个多线程的题,线程1打印a,线程2打印b,线程3打印c,要求顺序打印出abcabcabc。

反问,对自己有什么建议,按校招已经到达标准,由于时间问题没法再深入了解项目,所以也没有什么建议。

整体难度不是很大,不像大厂那样死扣细节。最后求个hr面,不然真的要失业了。

HR面:

  1. 自我介绍
  2. 为什么不读研究生了
  3. 工作地点有要求吗
  4. 薪资要求
  5. 有过实习吗
  6. 你这个项目的难点是什么
  7. 比较看中公司的哪些方面
  8. 有其他offer吗,哪些公司还在流程中
  9. 过四六级吗?多少分?等下发个英语测评有时间去做下,会根据测评结果安排后续的进程 反问,公司对应届生的培训机制,多长时间出结果。

Comparable和Comparator区别是什么?