当前位置: 首页 > 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
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Cookie 在前端中的实践
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Java 内存分配及垃圾回收机制初探
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • session共享问题解决方案
  • SSH 免密登录
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 两列自适应布局方案整理
  • 排序(1):冒泡排序
  • 原生 js 实现移动端 Touch 滑动反弹
  • - 转 Ext2.0 form使用实例
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #define、const、typedef的差别
  • (20050108)又读《平凡的世界》
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (day6) 319. 灯泡开关
  • (pojstep1.1.2)2654(直叙式模拟)
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (算法)N皇后问题
  • (算法二)滑动窗口
  • (转)shell调试方法
  • (转)使用VMware vSphere标准交换机设置网络连接
  • ***检测工具之RKHunter AIDE
  • ../depcomp: line 571: exec: g++: not found
  • .NET : 在VS2008中计算代码度量值
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET Core 中的路径问题
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET Standard 的管理策略
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .NET开发人员必知的八个网站
  • @Autowired @Resource @Qualifier的区别
  • @EnableConfigurationProperties注解使用
  • [ 数据结构 - C++] AVL树原理及实现
  • [20150321]索引空块的问题.txt
  • [20171106]配置客户端连接注意.txt