数据结构与算法
这一块在笔试、面试的代码题中考核较多,其中常考的数据结构主要有:数组、链表、队列、栈、Set、Map、哈希表等,不同数据结构有不同的方法以及储存原理,这些算是技术岗的必备知识。算法部分主要分为两大块,排序算法与一些其他算法题。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
排序算法根据考频高低主要有:快速排序、归并排序、堆排序、冒泡排序、插入排序、选择排序、希尔排序、桶排序、基数排序、Timsort这十种,这类考核点要么是算法的时间、空间复杂度、稳定度,要么是直接手写代码,故在理解算法原理的同时,对JS语言版的排序算法代码也要加强记忆。
- 二叉树层序遍历
- B 树的特性,B 树和 B+树的区别
- 尾递归
- 如何写一个大数阶乘?递归的方法会出现什么问题?
- 把多维数组变成一维数组的方法
- 知道的排序算法 说一下冒泡快排的原理
- Heap 排序方法的原理?复杂度?
- 几种常见的排序算法,手写
- 数组的去重,尽可能写出多个方法
- 如果有一个大的数组,都是整型,怎么找出最大的前 10 个数
- 知道数据结构里面的常见的数据结构
- 找出数组中第 k 大的数组出现多少次,比如数组【1,2, 4,4,3,5】第二大的数字是 4,出现两次,所以返回 2
- 合并两个有序数组
- 给一个数,去一个已经排好序的数组中寻找这个数的位 置(通过快速查找,二分查找)
);
在使用数据库前,需要使用装载器来加载数据库对象
$this->load->database();
装载完成后,$this->db就是这个数据库对象,以后的数据操作都是调用这个对象的方法进行
首先定义SQL语句:
$sql = ‘SELECT * FROM user’;
再调用db对象的query方法进行查询
$result = t h i s − > d b − > q u e r y ( this->db->query( this−>db−>query(sql);
返回值$result是一个对象,通过调用它的方法可以返回不同形式的结果,例如:调用它的result()方法获取查询结果
$users = $result->result();
此时,`$users`是一个对象数组,或者调用它的result\_array()方法获取关联数组查询结果
$users = $result->result_array();
调用row()方法以对象形式返回第一条记录或第几条记录
$users = $result->row();
但是,如果SQL是增、删、修改语句,query()方法将返回TRUE或FALSE,此时通过db的方法可以获取执行的结果,比如:
$this->db->affected_rows(); // 获取影响的行数
$this->db->insert_id(); // 获取插入数据的id
在执行数据库操作前,由于不知道在查询前`$this->db`是否已经生成,因此都需要调用`$this->load->database()`方法,通过修改/application/config/autoload.php文件,可以让CI自动加载数据库
$autoload[‘libraries’] = array(‘database’);
如果SQL语句中的变量过多,会影响语句的编写,这时可以采用占位符来解决
$data[0] = ‘dj’;
$data[1] = ‘123456’;
$sql = “INSERT INTO user (account, password, usertype, username) VALUES (‘1231’, ?, ‘1’, ?)”;
$result =
t
h
i
s
−
>
d
b
−
>
q
u
e
r
y
(
this->db->query(
this−>db−>query(sql, $data);
传入的数组中的元素会依次取代SQL中的?,生成实际的SQL语句
备注:在测试这段代码时,由于错误的在字段名两侧加上了’,造成一直报错,引以为戒.
### **连接你的数据库**
有两种方法连接数据库:
**自动连接**
“自动连接” 特性将在每一个页面加载时自动实例化数据库类。要启用“自动连接”, 可在 application/config/autoload.php 中的 library 数组里添加 database:
$autoload[‘libraries’] = array(‘database’);
**手动连接**
如果你只有一部分页面需要数据库连接,你可以在那些有需要的函数里手工添加 如下代码来连接数据库,或者写在类的构造函数里,让整个类都可以访问:
$this->load->database();
如果 database() 函数没有指定第一个参数,它将使用数据库配置文件中 指定的组连接数据库。对大多数人而言,这是首选方案。
可用的参数
数据库连接值,用数组或DSN字符串传递;
TRUE/FALSE (boolean) - 是否返回连接ID(参考下文的“连接多数据库”);
TRUE/FALSE (boolean) - 是否启用查询构造器类,默认为 TRUE 。
**手动连接到数据库**
这个函数的第一个参数是**可选的**,被用来从你的配置文件中 指定一个特定的数据库组,甚至可以使用没有在配置文件中定义的 数据库连接值。下面是例子:
从你的配置文件中选择一个特定分组:
$this->load->database(‘group_name’);
其中 group\_name 是你的配置文件中连接组的名字。
连接一个完全手动指定的数据库,可以传一个数组参数:
$config[‘hostname’] = ‘localhost’;
$config[‘username’] = ‘myusername’;
$config[‘password’] = ‘mypassword’;
$config[‘database’] = ‘mydatabase’;
$config[‘dbdriver’] = ‘mysqli’;
$config[‘dbprefix’] = ‘’;
$config[‘pconnect’] = FALSE;
$config[‘db_debug’] = TRUE;
$config[‘cache_on’] = FALSE;
$config[‘cachedir’] = ‘’;
$config[‘char_set’] = ‘utf8’;
$config[‘dbcollat’] = ‘utf8_general_ci’;
t
h
i
s
−
>
l
o
a
d
−
>
d
a
t
a
b
a
s
e
(
this->load->database(
this−>load−>database(config);
注解
对于 PDO 驱动,你应该使用 $config[‘dsn’] 取代 ‘hostname’ 和 ‘database’ 参数:
$config[‘dsn’] = ‘mysql:host=localhost;dbname=mydatabase’;
或者你可以使用数据源名称(DSN,Data Source Name)作为参数,DSN 的格式必须类似于下面这样:
$dsn = ‘dbdriver://username:password@hostname/database’;
t
h
i
s
−
>
l
o
a
d
−
>
d
a
t
a
b
a
s
e
(
this->load->database(
this−>load−>database(dsn);
当用 DSN 字符串连接时,要覆盖默认配置,可以像添加查询字符串一样添加配置变量。
$dsn = ‘dbdriver://username:password@hostname/database?char_set=utf8&dbcollat=utf8_general_ci&cache_on=true&cachedir=/path/to/cache’;
t
h
i
s
−
>
l
o
a
d
−
>
d
a
t
a
b
a
s
e
(
this->load->database(
this−>load−>database(dsn);
连接到多个数据库
如果你需要同时连接到多个不同的数据库,可以这样:
$DB1 = $this->load->database(‘group_one’, TRUE);
$DB2 = $this->load->database(‘group_two’, TRUE);
注意:将 “group\_one” 和 “group\_two” 修改为你要连接的组名称 (或者像上面介绍的那样传入连接值数组)
第二个参数 TRUE 表示函数将返回数据库对象。
注解
当你使用这种方式连接数据库时,你将通过你的对象名来执行数据库命令, 而不再是通过这份指南中通篇介绍的,就像下面这样的语法了:
$this->db->query();
$this->db->result();
etc…
取而代之的,你将这样执行数据库命令:
$DB1->query();
$DB1->result();
etc…
注解
如果你只是需要切换到同一个连接的另一个不同的数据库,你没必要创建 独立的数据库配置,你可以像下面这样切换到另一个数据库:
t h i s − > d b − > d b s e l e c t ( this->db->db_select( this−>db−>dbselect(database2_name);
react和vue的比较
相同
1)vitual dom
2)组件化
3)props,单一数据流
不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)
状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)
[外链图片转存中…(img-07J1mWW5-1715775608339)]
[外链图片转存中…(img-uG3viWdj-1715775608340)]