字节跳动客户端开发校招提前批一面

2020.7.10-字节(头条)客户端面试记录

算法

1.给1元,2元,5元,10元,支付N元时有多少种方法。
A:一、四层for循环,判断i1+j2+k5+m10 == N. 超时;二、DP。
2.二维字符数组中,给定某个字符串,从任意位置开始,可上下左右寻找。
A:DP。leetcode原题。
3.反转LONG型整数。
A:LONG转字符串,str[::-1]。后来查leetcode有另一种解法,可以%10取余,每次求一位。

整体来说,难度不超过Leetcode中等。看了看其他头条面经,基本DP属于80%必考题,就算一面不问,二面三面也逃不过。

基础知识

以下编排的顺序基本符合面试中提问顺序。主要从三方面考察,其一是客户端知识;其二是计网,操作系统等计算机专业基础知识;其三是对编程语言(主要是JAVA)的理解。

客户端

  1. Android四大组件。
  • activity、service、content provider、broadcast receive
  1. 其中activity的生命周期是怎么样的?
  • oncreate()->onstart()->onResume()->onRestart()->onPouse()->onStop()->onDestory()
**onCreate()**: 当点击activity的时候,系统会调用activity的oncreate()方法,在这个方法中会初始化当前布局setContentLayout()方法。
**onStart()**: onCreate()方法完成后,此时activity进入onStart()方法,当前activity是用户可见状态,但没有焦点,与用户不能交互,一般可在当前方法做一些动画的初始化操作。
**onResume()**: onStart()方法完成之后,此时activity进入onResume()方法中,当前activity状态属于运行状态 (Running),可与用户进行交互。
**onRestart()**: 此方法在按下home()之后,再次进入到当前activity的时候调用。调用顺序onPouse()->onStop()->onRestart()->onStart()->onResume().
**onPouse()**: 当另外一个activity覆盖当前的acitivty时,此时当前activity会进入到onPouse()方法中,当前activity是可见的,但不能与用户交互。
**onStop()**: onPouse()方法完成之后,此时activity进入onStop()方法,此时activity对用户是不可见的,在系统内存紧张的情况下,有可能会被系统进行回收。所以一般在当前方法可做资源回收。
**onDestory()**: onStop()方法完成之后,此时activity进入到onDestory()方法中,结束当前activity。
  1. ASCII编码和Unicode编码(扩展UTF-8)
编码 大小 支持语言
ASCII 1个字节 英文
Unicode 2(4)个字节 中英文
UTF-8 1-6个字节,英文1个字节,汉字3(4-6)个字节 中英文
  • 三者关系实际上是递进的,最早出现的ASCII,只支持英文。中国自定义的GBK通过高低127位ASC码来定义,介于ASCII和Unicode之间。为了世界性统一编码,提出了Unicode编码。而在Unicode编码规则下,传输ASCII表里的字符时,会浪费传输空间和存储空间。所以最后提出了UTF-8,其特点就是自适应地址空间,并且以各字节的不同开头“0”,“110”和“10”等来标识各个字节。

因为对客户端了解有限,面试官没有再深入询问相关知识。

计算机基础知识

  1. 进程和线程(常见且必考)
  • 面试中答出了4点:
    (1)进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位;
    (2)一个进程有多个线程;
    (3)进程有自己的独立地址空间,线程是共享进程数据,使用相同地址空间;
    (4)线程上下文切换比进程上下文切换要快,开销小。
    扩展:八万点击量讲解线程和线程池
  1. 死锁(常见且必考)
  • 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象。
    不只是进程死锁,线程也是有死锁现象的。
  1. 产生死锁的四个条件
  • (1)互斥条件:一个资源每次只能被一个进程使用;
    (2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放;
    (3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺;
    (4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
  1. 内存模型的原子性和可见性(synchronized、volatile)(扩展:lock)
  1. OSI七层协议模型,TCP/IP五层协议模型,四层协议模型
  • ISO/OSI:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
    TCP/IP:应用层、运输层、网络层、数据链路层和物理层
    四层:应用层、传输层、网络层、网络接口层
  1. XML命名空间
  • XML 命名空间提供避免元素命名冲突的方法。很多公司常常会作为指针来使用命名空间指向实际存在的网页,这个网页包含关于命名空间的信息。
    语法:xmlns=“namespaceURI”
    xmlns=“http://www.w3.org/TR/html4/”,
  1. IPv4和IPv6
  1. TCP拥塞控制
  • 计网基础概念,TCP 拥塞控制的目标是最大化利用网络上瓶颈链路的带宽。主要解释慢启动、拥塞避免、快恢复和快重传算法的原理。理解的基础上用自己的话表述。
    TCP拥塞控制详解
  1. http和https
  • https和http的区别主要如下:
    (1)https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
    (2)http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
    (3)http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    (4)http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
    http和https协议详解
  1. https的状态码
状态码 类别 表示
1** 信息性状态码 服务端正在接收,客户端继续发请求
2** 成功状态码 服务端成功接收
3** 重定向状态码 客户端采取更多操作,确认/选新地址跳转/重复申请
4** 客户端错误状态码 客户端的错误导致服务器端无法处理
5** 服务器错误状态码 服务器出错或异常

面试官问了一句 “404”错误是发生在客户端还是服务端?
原因是服务端并未找到客户端请求的页面。一般在写代码时抛出404异常的话,多数是在路径上有中文字符或者路径写法有问题。说是客户端的错误也不为过。

语言基础

  1. 抽象类和接口
  • 理解两者概念最重要。抽象类(修饰符:abstract)是对本质的抽象,接口(修饰符:interface)是对动作的抽象。举例:男人女人都是人,本质人就是抽象类;人和狗都可以吃饭,睡觉,两个动作即为接口。所以一个类继承一个抽象类(JAVA中类有单继承特性),一个类可实现多个接口。
  • 特性和细节。菜鸟教程中对JAVA的抽象类和接口都有详细解释。非常有用。
    菜鸟教程:抽象类
    菜鸟教程:接口
    在接口的介绍中,有提到抽象类和接口的区别。
  1. 重写和重载
  • 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。
    重载是在一个类里面,方法名字相同,而参数(类型、顺序、数量)不同。返回类型可以相同也可以不同。
    注意:两个名字别记反。真正理解后也能明白写和载的区别。
  1. 泛型
  • 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
    泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
    栗子:
    写一个泛型方法来对一个对象数组排序。然后,调用该泛型方法来对整型数组、浮点数数组、字符串数组等进行排序。
    泛型的知识看一篇博客足以。泛型详解+面试题:泛型
  1. equals 和 ==
  • 理解堆栈内存空间。
    基本数据类型存储在栈内存。如,int,double,boolean等。string是引用类型,是个类。
    对象的引用是存储在栈内存,其本身的数据值存储在堆内存。如,String a = “123”,a在栈,"123"在堆。new也如此。
    理解上述概念,看下面区别一目了然。
    (1)对于==,比较的是值是否相等
    基本数据类型的变量,则直接比较其存储的 “值”是否相等;
    引用类型的变量,则比较的是所指向的对象的地址。
    (2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量,equals继承Object类,比较的是是否是同一个对象。
    如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址相同;
    诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

猜你喜欢

转载自blog.csdn.net/qq_32301683/article/details/107248751