# 字节跳动

💣 过程简述

字节跳动的面试官问的问题相对基础。但当时英国疫情爆发,我忙着搬家,没有开始准备面试,所以回答地非常差。也对不起面试官的耐心提问。所以,总的来说,面试之前一定要好好准备,直接提枪上阵还是有难度的。

  1. 算法题:

    输入一维数组 array 和 n,找出和值为 n 的任意两个元素。例如:

    array = [2, 3, 1, 10, 4, 30]

    n = 31

    则结果应该输出 1, 30 顺序不重要

    如果有多个满足条件的,返回任意一对即可。要求空间复杂度为O(1)O(1)

  2. 自我介绍

  3. 公司负责了哪些工作?怎么重构的?

  4. MVP 和 MVC 的区别?Model 层的作用呢?

  5. UI 界面有哪些布局?

  6. 约束布局与相对布局有什么不同?

  7. 线性布局:如果有两个控件,一个宽度固定,一个宽度不固定,怎么让它们横向充满整个父布局?

  8. RecyclerView 有 100 个 item,怎么让它们显示出来还不会内存泄漏?怎么直接跳转到第 53 个 item?

    分页显示。

    第一种:「能够实现指定位置处于屏幕顶部,但是不具有平滑滚动的视觉效果」。即使用scrollToPosition()的方法。

    if (position != -1) {
        mRecycleview.scrollToPosition(position);
        LinearLayoutManager mLayoutManager = (LinearLayoutManager) mRecycleview.getLayoutManager();
        mLayoutManager.scrollToPositionWithOffset(position, 0);
    }
    

    第二种:「能够实现指定位置处于屏幕顶部,具有平滑滚动视觉的效果」。

    1. 如果跳转位置在第一个可见位置之前,就用smoothScrollToPosition()方法就可以直接跳转;
    2. 如果跳转位置在第一个可见项之后,最后一个可见项之前,就需要用smoothScrollBy来滑动到指定位置;
    3. 如果要跳转的位置在最后可见项之后,则先调用smoothScrollToPosition()将跳转的位置滚动到可见位置,再addOnScrollListener()里通过onScrollStateChanged()控制,调用smoothMoveToPosition()再次执行判断。
  9. Handler 的消息传递机制

  10. Activity 的生命周期?启动方式?

  11. 从 Activity A 跳转到 Activity B,两个 Activity 的生命周期?

  12. Service 的启动方式?

  13. Broadcast 的相关知识点?

  14. Java 有哪几种引用?

  15. 接触过哪些容器类?HashMap 的原理有了解吗?如果 Hash 值计算相同,会发生哈希碰撞吗?怎么解决?

  16. 泛型的原理与使用

  17. http 与 https 的区别

  18. https 是怎么加密的

  19. 死锁是什么?死锁的条件

  20. 操作系统的进程调度策略有哪些?

    FCFS(先来先服务)、优先级、时间片轮转、多级反馈

  21. 数据库的索引,主键与事务

  22. 数据库的join()方法

    数据库中的join()方法是连接,主要作用是根据两个或者多个表中的列之间的关系,获取存在于不同表中的数据,有全连接、内连接、外连接等。