当前位置: 首页 > news >正文

实习面试笔记

项目经历

  • 个人网站

    后端使用了 Flask 框架,数据库使用的是 Python 自带的 sqlite

    前端使用 Vue.js + BootStrape4

    首页类似 RSS, 集合了 readhub 和 36kr 的新闻资讯

    另外,用户登录后可以在博客页发表和修改文章

Java

  • JavaNotes
  • 基本数据类型

    // 整数
    byte 1
    short 2
    int 4
    long 4
    
    // 浮点数
    float 4
    double 8
    
    // 逻辑
    boolean 1
    
    // 字符
    char 2, Unicode
  • 栈和堆

    基本数据类型的变量, 在栈里面, 复制变量的时候, 复制的是值

    引用类型的变量, 在堆, 变量只是引用, 类似于指针,只能指向特定对象,不能乱指, 复制变量的时候,复制的是引用

    引用类型: 类, 接口, 数组

  • Override, 覆盖/重写, 返回值和形参都不能改变
  • Overload, 重载
  • 抽象类跟接口的区别

    JavaNotes

    抽象类和接口的区别

    抽象类, 是声明, 抽象类不能instantiate(实例化), 也就是不能制造对象。抽象方法只声明, 不实现。具体的实现由继承它的子类来实现。

    public abstract class Shape{
        // 抽象的方法, 注意没有大括号, ()后面直接分号结尾
        // 有abstract方法的类必须是abstract
        public abstract void draw();
    }

    接口, 让其他类能够有接口的方法

    public interface Cell{
        // 不需要显示写abstract
        void draw(Graphics g, int x, int y, int size);
    }
    
    public class Fox extends Animal implements Cell{
        @Override
        public void draw(...){
            // ...
        }
    
        public void run()
        {
    
        }
    }

    抽象类可以有非抽象的方法(具体实现), 接口是纯抽象类, 只有抽象方法

    一个子类只能存在一个父类,但是可以存在多个接口。

  • MVC 开发模型

    数据模型、表现、控制, 三者分离
    M, Model, 模型, 保存和维护数据, 还可以 通知 View 进行界面的更新.
    
    V, View, 表现, 从 Model 获得数据, 并以此画出表现(界面).
    View 是被动的, 只有在 Model 通知 View 之后, View才会去Model取数据, 并画出来.
    
    C, Control, 控制, 得到用户输入, 以此调整数据. C 和 V 并不直接交互.
    C只能更新Model中的数据, 也就是说, 用户在界面上所作的操作, 不会直接修改界面上的显示.
    而是先去修改后台的数据, 再由Model通知View, 再整体重画.
  • 多线程

    40 个 Java 多线程问题总结

    Java多线程学习

    Java 多线程编程

    创建线程的方式, 继承 Thread 类, 实现 Runnable 接口

    start(), run(), stop(), destroy()

    新建 --- 就绪 --- 运行 --- 阻塞 --- 运行 --- 终止

  • 错误和异常

    try{
    
    }
    catch(ArrayIndexOutOfBoundsException e){
    
    }
    
    ArrayIndexOutOfBoundsException
    OpenFileException
    AllocateMemoryException
    LoadFileException
    
    OutOfMemoryError
  • 垃圾回收机制

    Wikipedia, GC)

    某个对象在未来的程序运行中, 将不会被访问, 就可以回收它的内存

    分类

    引用计数收集器, 当有其他数据与其相关时则加一, 反之相关解除时减一, 最后计数为 0 的对象可以回收
    
    跟踪收集器, 定期对若干根储存对象开始遍历, 对与其相关的对象进行标记, 最后, 没有被标记的对象就可以回收

C++

  • 细说new与malloc的10点区别
  • C++ 自由存储区是否等价于堆?

前端

  • 选择器

    // 按ID查找
    document.getElementById('xxx');
    
    // 按tagname查找
    document.getElementsByTagName('xxx');
    
    // classname
    document.getElementsByClassName('xxx');
  • 正则表达式

    `\d` 数字
    `\w` 字母或数字
    `.`  至少 1 个任意字符
    `*`  至少 0 个任意字符
    `\d{3}` 匹配 3 个字符
    `[0-9a-zA-Z\_]` 匹配一个数字, 字母或者下划线
    var re1 = /^\d{11}$/;
    re1.test('12345678');    // false
  • AJAX, Asynchronous JavaScript and XML, 意思就是用JavaScript执行异步网络请求

    AJAX请求是异步执行的, 也就是说, 要通过回调函数获得响应

    function success(text) {
        var textarea = document.getElementById('test-response-text');
        textarea.value = text;
    }
    
    function fail(code) {
        var textarea = document.getElementById('test-response-text');
        textarea.value = 'Error code: ' + code;
    }
    
    var request = new XMLHttpRequest(); // 新建XMLHttpRequest对象
    request.onreadystatechange = function () { // 状态发生变化时,函数被回调
        if (request.readyState === 4) { // 成功完成
            // 判断响应结果:
            if (request.status === 200) {
                // 成功,通过responseText拿到响应的文本:
                return success(request.responseText);
            } else {
                // 失败,根据响应码判断失败原因:
                return fail(request.status);
            }
        } else {
            // HTTP请求还在继续...
        }
    }
    
    // 发送请求:
    request.open('GET', '/api/categories');
    request.send();

数据结构

  • 排序

    • 复杂度
    • 稳定性
    • 实现代码
  • Fib

数据库

  • 数据库事务(Transaction)的 ACID 特性

    原子性(Atomicity), 一致性(Consistency), 隔离型(Isolation), 持久性(Durability)

    • 原子性(A)是指事务中的操作不可拆分,只允许全部执行或者全部不执行
    • 一致性(C)指事务的执行不能破坏数据库的一致性,一致性也称为完整性。一个事务在执行后,数据库必须从一个一致性状态转变为另一个一致性状态
    • 隔离性(I)指并发的事务相互隔离,不能互相干扰
    • 持久性(D)指事务一旦提交,对数据的状态变更应该被永久保存
  • 数据库事务隔离级别有4个

    # 由低到高依次为
    Read uncommitted, 读到了未提交的事物, 只是 add 还没有 commit
    Read committed, 读到了上一次的commit, 也就是说还没有更新 最新的commit
    Repeatable read, 保证读取最新的 commit, 为此, 读取的时候不允许提交
    Serializable, 要求有很高的实时同步性
    # 这四个级别可以逐个解决脏读 、不可重复读 、幻读 这几类问题
  • 锁(并发控制的手段)
  • 关系数据模型的三个组成部分

    数据结构, 对数据的操作, 完整性约束

  • 参考链接

    数据库事务、隔离级别、锁的理解与整理

SQL

  • CRUD

    Create, Read, Update, and Delete

  • 过程

    1.首先连接到数据库
      conn = sqlite.connect('test.db')
    2.建立游标 cursor
      cursor = conn.cursor()
    3.建立表
      create table user (id int, name varchar(20), score int )
    4.insert into 插入数据,注意占位符是 ?
      insert into user (id, name) values(1, "Alice", 88)
      insert into user (id, name) values(2, "Bob", 89)
      insert into user (id, name) values(3, "Cindy", 88)
    5.select * from user where 查找数据
      select * from user where id between 1 and 3 order by score asc
    6.cursor.close()
    7.conn.commit()
    8.conn.close()
  • column, 列, 字段

    select * from user
    select col1, col2 from user
  • 下面以这个表格 customers 为例, 展示 SQL 的语法

    idnameagecitypostalcodecountry
    1Alfreds25Berlin12209Germany
    2Ana15Mexico05021Mexico
    3Antonio20Mexico05023Mexico
    4Thomas30LondonWA11DPUK
    5Berglunds35LuleaS-958-22Sweden
  • where 条件选择

    select * from customers where country='Germany' and city='Berlin'
  • order by 排序

    select * from customers order by country
  • 插入

    insert into customers (name, age, city, postalcode, country) values ('Bart', 10, 'LA', '4006', 'USA')
  • 更新

    update customers set name = 'Smith', city = 'Paris' where id = 5
  • 删除

    delete from customers where name = 'Berglunds'
  • limit/top 不返回全部结果, 只返回有限数量的记录

    # SQL
    select top 3 from customers
    # MySQL
    select * from customers limit 3
  • 最大最小值

    select min(age) from customers
  • 统计 count, distinct

    # 统计有多少个不同的国家
    select count(distinct country) from customers
  • 平均值

    select avg(age) from customers
  • 求和

    select sum(age) from customers
  • 通配符

    # SQL
    select * from customers where name like 'B%'
    # sqlite
    select * from customers where name like 'B*'
  • 选择范围

    # 离散
    select * from customers where country in ('Germany', 'France')
    # 连续
    select * from customers where age between 10 and 20
  • 连接表格

    inner join, (A ∩ B)
    left join, (A ∩ B) U A
    right join, (A ∩ B) U B
    full outer join, (A U B)
  • 参考资料

其他

  • 牛客网面试经历 (视频面试)

相关文章:

  • spring-boot List转Page
  • Python 之网络式编程
  • 最新人脸识别开发经验demo
  • 2019年3月
  • CodeForces 226C The table[贪心]
  • ThinkPHP 发布 5.1.35 版本,常规更新
  • 网页错误是不会报错的
  • 遇到Vue CLI网站显示异常
  • 教你从头写游戏服务器框架
  • C# 免费离线人脸识别 2.0 Demo
  • IDEA中使用Remote来远程调试程序
  • 15-Flink实战项目之实时热销排行
  • 随笔之python下载与安装
  • print(1,2,3,sep=':')的输出结果是?
  • windows下安装jdk与jmeter
  • Google 是如何开发 Web 框架的
  • echarts的各种常用效果展示
  • FineReport中如何实现自动滚屏效果
  • gitlab-ci配置详解(一)
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • Java 最常见的 200+ 面试题:面试必备
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Logstash 参考指南(目录)
  • miaov-React 最佳入门
  • PAT A1050
  • underscore源码剖析之整体架构
  • Vue组件定义
  • Webpack 4x 之路 ( 四 )
  • 力扣(LeetCode)56
  • 聊聊sentinel的DegradeSlot
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 06-01 点餐小程序前台界面搭建
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​Java并发新构件之Exchanger
  • #if 1...#endif
  • $().each和$.each的区别
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (二)linux使用docker容器运行mysql
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)Neo4j下载安装以及初次使用
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)大道至简,职场上做人做事做管理
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .equals()到底是什么意思?
  • .net 发送邮件
  • .Net 知识杂记
  • .NetCore部署微服务(二)
  • .NET构架之我见
  • .net下简单快捷的数值高低位切换
  • @Autowired和@Resource装配