前端基础知识和一些面试题(一)

本文介绍了前端的基础知识,包括CS与BS架构的区别、软件开发周期、常用快捷键,以及数据库的相关概念如关系型数据库逻辑结构、MySQL的使用。此外,文章还详细讲解了前端面试中常见的数据库操作和SQL查询,如数据表结构、插入、更新和删除数据,以及查询语句的编写。同时,文中也涉及到了JavaScript的基础知识,如数据类型、变量提升、DOM操作及事件处理。最后,文章讨论了前端开发中的跨域问题及其解决方案,如CORS和代理。
摘要由CSDN通过智能技术生成

一、基础知识储备
CS架构:客户端(需要客户先安装)/服务器;
BS架构:浏览器(可直接使用浏览器运行)/服务器;
软件开发周期:软件定义期(可行性研究阶段,需求分析阶段)——软件开发期(概要设计阶段,编码实现阶段,测试阶段)——软件维护期(软件维护阶段)
二、常用快捷键
Alt+Tab:切换当前的窗口;
Windows+d:显示或者隐藏桌面;
Windows+e:打开“此电脑”或者“文件资源管理器”;
Windows+r:打开“运行”窗口,可以快速打开软件,例如:cmd(命令行)/mspaint(画图)/calc(计算器)/mstsc(连接远程云服务器)
三、数据库
1.关系型数据库逻辑结构
    数据库服务器Server -> 数据库Database -> 数据表Table -> 行Row -> 列Column;
2.mysql为中小型数据库,可用于各种操作系统;
3.部署结构
    (1)服务器端
        mysqld.exe(相当于start键,是启动文件,占用的端口是3306)
            服务器端主要负责储存维护数据
    (2)客户端
        mysql.exe
            客户端负责连接数据库服务器
4.mysql.exe   -h127.0.0.1  -P3306  -uroot  -p
    -h(host连接服务器域名/IP地址,连接自己电脑的localhost/127.0.0.1)
    -P(post端口)
    -u(user用户名,mysql管理员用户名为root)
     简写为mysql  -uroot
用小键盘上的上下箭头可以调出以前写的代码,Esc取消上述操作
5.常用的管理命令
    show  databases;——查询所有数据库
    use  数据库名称;——进入指定数据库
    show  tables;——查看当前所处的数据库有哪些表
    desc  数据表名称;——描述指定数据表中表头都有哪些项
    quit;——退出连接
    select * from 数据表名称;——查询数据表中数据
6.下面介绍的是脚本模式时脚本文件写法,结果可以去交互模式下查看,我的电脑有问题输入utf8 依旧会乱码,所以需要在进入mysql之前输入chcp 65001+enter来手动改变一下编码,防止以后乱码;
set names utf8;#客户端服务器使用utf8编码;
drop database if exists xizi;#如果存在数据库xizi则丢弃它;
creat database xizi charset=utf8;#创建数据库xizi并使用utf8编码;
use xizi;#打开xizi数据库;
#创建笔记本分类的表family;
create table family (
  fid   int primary key,           #编号并附加主键约束
  fname varchar(20)              #分类名称
);
#输入数据
insert into family values
("10","小米"),
("20","戴尔"),
("30","联想");
#创建保存笔记本数据的表laptop
create table laptop (
  lid int primary key auto_increment,            #编号并附加主键约束以及设置为自增列
  title varchar(50) unique not null,              #标题
  price decimal(7,2) default 9999,             #价格
  stime date default "2022-10-24" ,                     #上架时间
  isonsale boolean,               #是否在售
  familyid int,                   #所属类别编号
  #将familyid作为外键列,取值必须到family的fid去找
  foreign key(familyid) references family(fid)
);
#输入数据
insert into laptop values("1","小米先锋",null,"2022-10-1",true,"10");
insert into laptop values("2","戴尔三","45563.22","2020-9-15",false,"20");
insert into laptop values("3","联想拯救","10050.24",null,true,"30");
#只给编号,标题,上架时间提供值;其他列不提供值,会自动应用默认值
insert into laptop(lid,title,price,isonsale,familyid) values(4,"devile","10002.33",true,30);
insert into laptop values("7","戴尔3.0",default,default,false,"20");
insert into laptop values(null,"戴尔3.1",default,default,false,"20");
insert into laptop values(null,"戴尔3.9",default,default,false,"20");
insert into laptop values(null,"戴尔3.2",default,default,false,"20");
insert into laptop values(null,"戴尔3.3",default,default,false,"20");
insert into laptop values(null,"戴尔3.4",default,default,false,"20");
insert into laptop values(null,"戴尔3.5",default,default,false,"20");
insert into laptop values(null,"戴尔3.6",default,default,false,"20");
delete from laptop where lid="2";#删除数据
update 数据表 set 列名称=...,列名称=...,列名称=... where 条件(比如id="2")
7.常见简称
定义数据结构(DDL)【create/drop/alter(修改)】、操作数据(DML)【insert/delete(删除)/update(修改】、查询数据(DQL)【select】、控制用户权限(DCL)【grant(授权)/revoke(收权)】
8.列类型
    (1)数值型
        tinyint/smallint/int/bigint/float/double/decimal/boolean
            整数型
                tinyint微整形,占一个字节,范围【-128,127】
                smallint小整形,占两个字节,范围【-32768,32767】
                int整形,占4个字节,范围【-2147483648,2147483647】
                bigint大整形,占8个字节,范围很大
            浮点型
                float单精度浮点型,占四个字节
                double双精度浮点型,占8个字节
                demcial(M,D)定点小数,小数点不会发生变化,M代表总的有效位数,D代表小数点后的有效位数
            布尔型
                只有两个值,分别是true和false代表真和假;用于储存只有两个值的数据,例如:性别,是否在线,是否是会员
    (2)日期时间型
        date/time/datetime
            date日期型“2022-10-22”
            time时间型
                “15.50.30”
            datetime日期时间型
                “2022-10-12 15.50.30”
    (3)字符串型
        varchar/char/text
            varchar(M)变长字符串(空间浪费少)
            char定长字符串(视情况而定)
9.列约束
    (1)primary key主键约束
        一个表格里只能有一个主键,声明主键约束的列,不允许重复的值,主键约束的列的上禁止插入null(一次性插入多条数据,
                     允许在主键约束里使用一次null,这可能导致出错,所以不推荐使用一次性插入)
    (2)not null非空约束
        声明了非空约束的列禁止插入null
    (3)unique唯一约束
        声明了唯一约束的列上不允许 插入重复的值,但允许插入null,甚至是多个null
    (4)default默认值约束(default+默认值)
        在插入数据的时候,如果不提供的值可以使用列的默认值。步骤分为两步: 
                  【1.设置默认值,通过default设置,如果不设置的话,默认值是null.   
                     2.使用默认值,不提供值时会自动使用默认值】
    (5)check检查约束
        用户根据自己需求添加的约束,MySQL不支持这种约束,认为这种约束会严重影响数据的插入速度。
                    例如:create table student(score tinyint check(socre>=0 and score<=100));
    (6)foreign key(外键列(familyid)) references family(另一个表的主键列fid)外键约束
        目的是为了确保两表之间建立关联,便于后期的查询,声明了外键约束的列,插入的值必须在另一个表的主键列中出现过
               (注意事项:外键约束的列上允许插入null,外键列和对应的另一个表的主键列类型要保持一致(如int对int)
    (7)auto_increment自增列
        自动增长,声明了自增列,在插入的值的时候,只需要赋值为null就会获取当前的最大值然后加1插入
                  (注意事项:自增列必须添加在整数形式的主键列上,允许手动赋值)
10.其他说明
    null是关键字,使用时不能加引号
    多个约束可以同时使用,之间敲个空格即可
11.简单查询
    查询特定的列
    查询所有的列
    给列起别名
        as
    显示不同的记录
        distinct
    查询时执行计算
    查询结果排序
        order  by
        asc(升序) / desc(降序)
    条件查询
        where
        比较运算符
            >  <  >=  <=  =  !=
        and(&&)   /   or(||)
        is  null/is  not  null
        in()/not  in()
    模糊条件查询
        %   _ 
        like
    分页查询
        两个已知条件
            当前的页码
            每页的数据量
        开始查询的值=(当前的页码-1)*每页的数据量
        limit  开始查询的值, 每页的数据量
        注意:开始查询的值和每页的数据量必须是数值,不能加引号
12.复杂查询
    聚合查询/分组查询
        count()/sum()/avg()/max()/min()
        group  by
        year()
    子查询
    多表查询
        内连接
            inner  join   on
        左外连接
            left   outer  join   on
        右外连接
            right  outer  join   on
        全连接
            mysql不支持
            解决方案
                union
                union  all
四、JS
1.数据类型(ES5)
    原始类型
        数值型,字符串型,布尔型,空null,未定义undefined【ES6新增:Symbol类型、bingint类型】
    引用类型
2.数据类型转换
    数值型+字符串——字符串
    数值+布尔型——数值型
    字符串+布尔型——字符串
    强制转换——Number(),parseInt(),parseFloat(),toString()
3.%取余,/正常运算5/2=2.5
4.switch-case只能进行全等(===)的条件判断
    switch(表达式){
            case 值1:语句块1   break
    case 值2:语句块2  break
    .......
    case 值n:语句块n  break
    default:语句块N+1}
5.While(循环条件){循环体}——停止循环用break
   do{循环体}while(循环条件)——停止循环用break
6.for(初始值;循环条件;增量){循环体}
    continue跳过并继续
    break结束
7.return和break对比
    return用于函数中,作用是结束函数的调用,不再执行函数体
    break用于循环或者switch-case语句,用于结束对应语句
8.递归
    function say(){console.log("从前有座山") say()}
9.如何面向对象:封装,继承,多态
10.斐波那契数列
    function f(n){
                 if(n==1 || n==2){
                     return 1
                             }else{
                     return  f(n-1)+f(n-2)
                             }
                        }
                      console.log(f(4))
11.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值