zoukankan      html  css  js  c++  java
  • 美团点评 2019校园招聘 后台开发方向

    试题链接:https://exercise.acmcoder.com/answer?paperId=317

    1.线程

    可以通过创建Thread的实例来创建新的线程

    线程的五种状态:

    1)创建状态:生成线程对象

    2)就绪状态:调用线程对象的start方法,该线程便进入就绪状态,但此时线程调度程序还没有把该线程设置为当前线程。

    3)运行状态:线程调度程序将处于就绪状态的线程设置为当前线程,此时线程就进入了运行状态,开始运行run()函数。

    4)阻塞状态:线程正在运行的时候,被暂停,通常是为了等待某个时间的发生(比如某项资源就绪)之后再继续运行。sleep、suspend、wait等方法都可以导致线程阻塞。

    5)死亡状态:如果一个线程的run方法执行结束或者调用stop方法后,该线程就会死亡。对于已经死亡的线程,无法再使用start方法令其进入就绪。

    由于在线程的生命周期中,线程的状态由new-->运行状态只会发生一次,因此,一个线程只能调用start()方法一次,多次启动一个线程是非法的。

    2.接口:

    1)成员变量:public static final

    static:假设有两个接口A和B,而类C实现了这两个接口,此时接口A和接口B中都有一个变量N,如果N不是static类型的,那么在C类中该如何区分N到底是A的还是B的?如果是static就好了,可以通过(类名.变量名)A.N和B.N来调用以此区分是A还是B中的变量N.

    final:如果不是不可变的,那么每个实现接口的类就可以改变这个变量的值,这是不行的。

    2)成员方法:public abstract

    3)接口没有构造方法,不能被实例化。

    4)一个类实现某个接口,如果该类为非抽象类,则必须实现接口中的所有方法;若是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在。

    3.字符串的拆分:

    链接参考:https://blog.csdn.net/pigdreams/article/details/70449891

    1)split()方法:lang包String类的split()方法

    2)StringTokenizer类:util包下的StringTokenizer类

    拆分原理:通过生成StringTokenizer对象,运用对象属性进行字符串拆分。

    tokenizer的默认分隔符集:" f"  空白字符、制表符、换行符、回车符、换页符

     4.积累

    1)sqrt求平方根

    2)当 break 关键字用于 while、for 循环时,会终止循环而执行整个循环语句后面的代码

    5.设计模型

    1)享元模式:使用共享物件,尽可能减少内存使用量以及分享资讯给尽可能多的相似物件

    2)单例模式:一个类只有一个对象实例

    3)组合模式:将对象组合成树形结构以表示“部分--整体”的层次结构,例子:系统目录结构、网站导航结构

    4)原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象

    6.数据库的三级封锁协议

    两种锁:S锁(共享锁,读锁),X锁(排他锁,写锁)

    加S锁后,本事务就只能读取数据而不能修改,其它事务可以加S锁来读取数据,但不能加X锁修改数据。只要数据上有S锁,任何事务都只能再对其加S锁读取,而不能加X锁修改。加X锁后,本事务可以读取和修改数据,其它事务不能加任何锁,从而也不能读取和修改数据。

    1)一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。在一级封锁协议中,如果仅仅是读数据不对其进行修改,是不需要加锁的,它不能保证可重复读和不读“脏”数据。

    2)二级封锁协议:在一级封锁协议之上,事务T在读取数据R之前必须先对其加S锁,读完后方可释放S锁,可进一步防止读“脏”数据。但在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。

    3)三级封锁协议:在一级封锁协议之上,事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。可防止丢失修改、不读“脏”数据和不可重复读。

    7.E-R图

    矩形框:表示实体

    菱形框:表示联系

    椭圆形框:表示属性

    8.处理器的两级调度

    输入井:磁盘上用来存放作业信息的专用区域成为输入井

    后备作业:输入井中等待处理的作业成为后备作业

    作业调度:需要从输入井中选取后备作业装入主存储器

    进程调度:当作业调度选取一个作业,进入主存储器中后,就为该用户创建一个进程,但是在单处理器的计算机系统中,每一时刻只能让一个进程占用处理器,如果有多个进程占用处理器,就必须制定一定的规则让每个作业都有机会进入进程中。

     9.CSMA/CD协议

    所有节点都共享网路传输信道,节点在发送数据之前,首先检测信道是否空闲,如果信道空闲则发送,否则就等待;在发送出信息后,再对冲突进行检测,当发现冲突时,则取消发送

    1)可抢占性:若信道正忙,如果坚持侦听,发送的站一旦停止就立即抢占信道,但是有可能几个站同时侦听,同时都抢占信道,从而发生冲突。

    2)半双工:一个站不能同时进行发送和接收,因为在每次传送过程中,接收模块被用于侦听冲突了。

    链接:https://mp.weixin.qq.com/s?src=11&timestamp=1566556543&ver=1808&signature=zVGJtFKLSlaGlvnJHom*aKMleEGjGoZxIaV0jOySPL0YKXVX1ZbVO1GSjvth31TiUG2pX1SdLb1EdGxCYqm6IwVezyjwauZTG0HyYGAanRTG3I7XzA-*8esZ7dLgC9yQ&new=1

    https://blog.csdn.net/weixin_40752764/article/details/83176343

    10.应用层协议

     11.二叉排序树

    又叫二叉查找树,它或者是一棵空树,或者是具有以下性质的二叉树:

    1)若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值

    2)若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值

    3)它的左右子树也分别为二叉排序树

    平均查找长度

    链接https://blog.csdn.net/qq_25244495/article/details/83536591

    12.广度、深度

    广度优先遍历用队列

    深度优先遍历用栈

    链接:https://zhuanlan.zhihu.com/p/24649804

    13.KMP算法

    题目:

    解决过程:

  • 相关阅读:
    15--k8s之安全认证
    14--k8s之StorageClass,ConfigMap,Secret
    13--基本存储、高级存储、存储配置
    10--k8s之数据持久化
    9--k8s之Endpoints、健康服务检查、高可用
    8--k8s之service和ingress详解
    7--k8s之Pod控制器详解
    6--k8s之Pod结构、配置、生命周期、调度
    索引原理和慢查询优化
    pymysql模块及sql注入
  • 原文地址:https://www.cnblogs.com/lick468/p/11396152.html
Copyright © 2011-2022 走看看