laravel 理论

《laravel项目开发》理论题
1.请写出redis和memcache的区别(从数据类型,存储方式等进行对比)(10分)
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 memcache 只支持字符串的key-value
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
Memcache 只存在内存 发生意外 消失

2.写出laravel中间件的作用(10分)
中间件(Middleware)在Laravel中起着过滤进入应用的HTTP请求对象(Request)和完善离开应用的HTTP响应对象(Reponse)的作用, 而且可以通过应用多个中间件来层层过滤请求、逐步完善相应。
可以简单地将中间件理解为请求与响应之间的中间人。用户发出一个路由请求,经过中间件的验证或过滤后,才能获取相应的响应内容。
3.简述什么是csrf攻击以及如何防御(10分)
Csrf: 跨站请求伪造伪装请求,发送攻击
CSRF防御
通过 referer、token 或者 验证码 来检测用户提交。
尽量不要在页面的链接中暴露用户隐私信息。
对于用户修改删除等操作最好都使用post 操作 。
避免全站通用的cookie,严格设置cookie的域。

4.Laravel辅助函数有哪些,分别说明其作用(10分)
Dd
Url
Config
Asset
App_path
Only
Except
Csrf_token
Csrf_field

5.写出10个常用数组函数和字符串函数,并且标明含义(10分)
Array:
Is_array
In_array
Array_push
Array_pop
Array_shift
Array_unshift
Array_column
Array_merge
Array_unique
Sort
Rsort
Ksort
Krsort
Asort
Arsort

Str:
Trim
Rtrim
Ltrim
Explode
Implode
Strstr
Strpos
Stripos
Strlen
Mb_strlen
mb
Substr
Md5

6.写出5个常见的git指令以及含义(10分)
Git init 初始化仓库
Git add 添加文件到暂存区
Git commit 提交文件到分支
Git log 查看日志
Git status 查看状态
Git branch 查看分支
Git branch 【分支名】 创建分支
7.写出电商网站中购物车是如何实现的(已登录和未登录分别简述)(10分)
先判断是否登录:
登录前:
存入cookie
登录后:
存入db
不管登录前还是登录后都需要首先根据商品id且状态为上架查询此商品,没有此商品提示有误,先判断库存,库存不足提示库存不足;判断购物车内是否已经有此商品,有则更新购买数量,判断购买数量是否超过库存,超过提示库存不足;
开始未登录后来登录 则同步购物车记录;

8.写出如下sql,数据表student 字段id name age class

9.展示出所有班级对应的学生总人数 (10分)
Select count(*) from student group by class ;
10.查询1812班级中年龄最大的学生姓名 (10分)
Select max(age),name from student where class=1812
Select name from student where class=1812 order by age desc limit 1
11.封装一个自定义函数,实现strrev函数的功能,如abcd 反转后得到dcba (10分)

.
function rev($str) {
.
.
a = ′ ′ ; / / 定 义 一 个 空 的 变 量 . .   a = ''; //定义一个空的变量 . .   a=;//.. len=strlen( s t r ) ; . . f o r ( str); . . for( str);..for(i= l e n − 1 ; len-1; len1;i>=0;$i–) {
.
.
a . = a.= a.=str{$i};
.
.
}
.
.
return $a;
.
.
}
.
.

12.写出几个artisan相关的命令(不少于三个)?
Php artisan make:controller 控制器名
Php artisan make:model model名
Php artisan make:middleware 中间件名
Php artisan route:clear

13.订单表和订单详情表的关系是什么?写出表中的字段
订单表: 订单ID 订单号 用户id 。。。。。
订单详情表: 详情ID 订单ID 商品ID 商品名称 价格 。。。。
14.composer如何加载一个第三方类库包,命令是什么?
1:打开composer.json文件
“autoload”: {
“files”: [
//在这里加入要添加的第三方
“app/common/common.php”
]
在项目目录里执行 composer dump-autoload
2:composer create-project --prefer-dist laravel/laravel blog

15.常见的路由的写法和区别(不少于三个)。
Route::get(‘路径请求’,‘控制器@方法’)
Route::post(‘路径请求’,‘控制器@方法’)
Route::delete(‘路径请求’,‘控制器@方法’)
Route::put(‘路径请求’,‘控制器@方法’)
Route::any(‘路径请求’,‘控制器@方法’)

16.linux创建压缩包,解压压缩包?(/home/www/下的文件打包成code.tar.gz,解压这个包怎么解压)
压缩: tar -cvf code.tar.gz
解压缩:tar -xvf code.tar.gz
17.如何理解全局中间件和web中间件,前置中间件和后置中间件分别在什么时间执行?
全局中间件: 每个请求都会走中间件
web中间件:在routes/web.php 下的所有请求都走此中间件
前置中间件:先走中间件后执行控制器的方法
后置中间件:先执行控制器的方法再走中间件

18.请写出nginx、php、mysql、redis、memcache默认的端口号。
http:80
https:443
Apache:80
Nginx:80
Php :9000
Mysql:3306
Redis:6379
Memcache:11211
ftp:21
sftp:22
Ssh:22
Smtp:25
Pop3 :110
Imap:143
19.写出cookie和session的关系和区别?

20.有八个球,外观大小都一样,但是其中一个球比较轻,给一个天平,最少称量多少次可以准确拿到轻的球?
2次 3 3 2
21.composer如何加载第三方类库【非composer包】?
composer create-project --prefer-dist laravel/laravel blog

22.写出下列状态吗的含义200 301 302 403 404 500 502 504 ?
200 :成功
301:永久重定向
302:临时重定向
403:拒绝请求 没有权限
404:找不到
500:服务器内部错误
502:网关错误
504:网关超时
23.写出你对XSS攻击的理解?
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序
防御:
(1)不信任用户提交的任何内容,对所有用户提交内容进行可靠的输入验证,
(2)使用验证码做验证
(3)cookie 防盗。
(4)对表单内容进行格式化处理如PHP的htmlspecialchars()进行转换

24.Redis的数据结构有哪些?
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)
25.vim常用的命令?(不少于五个)
Esc i/a :set nu :set nonu :wq :w :q :q!
26.linux如何修改文件权限?如何修改文件所有者?
Chmod :修改文件权限
Chown :修改文件所有者
27.有2个水杯A,B没有刻度水无限,A水杯装满有5L水 B水杯装满有4L先要求使用2个杯子量出3L水。请写出思路?

33 什么是中间件?如何使用中间件?
中间件过滤进入应用的 HTTP 请求
1 创建Php artisan make:middelware 中间件
2 编写中间件内容
3 注册中间件app/Http/Kernel.php (一般我们写的写到路由中间内)
4: 给路由加中间件

34 Laravel中如何防止CSRF?写出示例代码
1 @csrf
2 {{csrf_field}}
3 <input type=“hidden”name=”_token” value=”{{csrf_token}}”>
35 Laravel中操作数据库的两种方式?写出示例代码
DB ::table(‘表名’)-》get();
Model名::get();

36 服务器中部署Laravel项目的步骤?
1:使用ssh/sftp链接阿里云服务器
2:打包本地项目使用sftp上传到阿里云服务器
3:解压项目
4:阿里云服务器上配置域名
5:更改项目的数据库配置
6:使用navicat远程连接阿里云服务器
7:本地数据库导入阿里云数据库
37 Laravel中如何处理上传文件?
public function upload(KaTeX parse error: Expected '}', got 'EOF' at end of input: …equest()->file(file)->isValid()) {
p h o t o = r e q u e s t ( ) − > f i l e ( photo = request()->file( photo=request()>file(file);//接收文件
$store_result = $photo->store(‘uploads’);//上传
return $store_result;
}
exit(‘未获取到上传文件或上传过程出错’);
}
38 composer是什么?如何使用?
composer是 PHP 用来管理依赖(dependency)关系的工具;
1: 在你的项目中使用 Composer,需要创建一个 composer.json 文件
2: 安装依赖包php composer.phar install

40 git提交代码的步骤?
Git add 文件
Git commit -m”备注”
41 PHP如何安装Redis扩展?
1: 去pecl 官网下载对应的redis扩展
2: 把redis扩展放到PHP安装路径的ext文件夹下面
3:在php.ini中加入 extension=redis.dll
4: 重启apache
42请写出以下文件的路径:
Laravel日志: storage/logs
配置文件:config/ .env
模板文件:resources/views
composer安装的依赖:vendor
43 Linux下如何安装composer?
curl -sS https://getcomposer.org/installer | php
44 什么是路由分组?如何使用路由分组?
路由分组的目的是让我们在多个路由中共享相同的路由属性,比如中间件和命名空间等,这样的话我们定义了大量的路由时就不必为每一个路由单独
定义属性。

Route::middleware([‘first’, ‘second’])->group(function () {})

Route::namespace(‘Admin’)->group(function () {})

Route::prefix(‘Admin’)->group(function () {})

45 控制器如何传递数据到视图?写出示例代码
n a m e = ‘ z h a n g s a n ’ ; R e t u r n v i e w ( ‘ 路 径 . 视 图 名 ’ , [ ‘ n a m e ’ = > name = ‘zhangsan’; Return view(‘路径.视图名’,[‘name’=> name=zhangsan;Returnview(.[name=>name])
46 Laravel中如何使用Session并写出常用函数(方法)
设置:Session([‘key’=>value]);
Request()->session()->put(‘键’,值)
获取:Session(‘key’);
$value = $request->session()->get(‘key’, ‘default’);

删除: Session([‘key’=>null]);
$request->session()->forget(‘key’);
$request->session()->flush();

47 HTTP请求方法有哪些?
Get/post/put /delete/head/options/trace/connect
49 Laravel的配置文件有哪些?
Config目录下的所有文件
.env
51 Laravel中使用什么模板(view)?有什么特点?写出示例代码
以.blade.php 结尾的模板文件
特点:以@开始@结束 最大程度保留了原生PHP的相似性
@if **@endif
@foreach($data as $v) *** @endforeach
52 Laravel的Model中有哪些常用属性?
public $primaryKey=‘admin_id’;
/

* 关联到模型的数据表
** @var string
*/
protected $table = ‘admin’;

/**
    * 可以被批量赋值的属性. ** @var array
    */
protected $fillable = ['name','pwd','role'];

/**
* 表明模型是否应该被打上时间戳
** @var bool
*/
public $timestamps = false;

53 Laravel中间件有几种类型?
全局中间件、中间件组和指定路由中间件

54 简述缓存的作用。

68写出 laravel 框架的session、cookie、config、及cache辅助函数 的设置及获取使用
Session([‘key’=>value]);
Session(‘key’);

cookie(‘name’, ‘学院君’, $minutes);
cookie(‘name’);

config([‘app.debug’ => true]);
$value = config(‘app.debug’ );

cache([‘key’ => ‘value’], 5);
$value = cache(‘key’);

70 请写出get和post的区别

82 Laravel中如何实现分页?
控制器: DB::table(‘表名’)->paginate(偏移量)
模板:{{$data->links()}}
83 写出10个常用jquery函数及意义?
Click
Dblclick
Blur
Focus
Submit
Change
Val
Attr
Html
Text
addClass
Remove
removeClass
84 请写出laravel框架接收请求/返回响应的实例
Request()->name;
Response(‘要带的信息’)->header(‘键’,值);
87 写出redis五种类型的适用场景
类型 简介 特性 场景
String(字符串) 二进制安全 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M 普遍适用
Hash(字典) 键值对集合,即编程语言中的Map类型 适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去) 存储、读取、修改用户属性
List(列表) 链表(双向链表) 增删快,提供了操作某一段元素的API 1、最新消息排行等功能(比如朋友圈的时间线) 2、消息队列
Set(集合) 哈希表实现,元素不重复 1、添加、删除、查找的复杂度都是O(1)  2、为集合提供了求交集、并集、差集等操作 1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐
Sorted Set(有序集合) 将Set中的元素增加一个权重参数score,元素按score有序排列 数据插入集合时,已经进行天然排序 1、排行榜 2、带权重的消息队列

89命名空间主要为了解决什么问题?写一个简单示例表明如何使用?(10分)
解决重名问题
Namespace app;
Class A{
Public function getName(){
Echo “小红”;
}
}
Namespace b;
Class B{
Public function getName(){
Echo “小绿”;
}
}

$a = new \app\A();
$a->getName() //返回小红

90 Laravel框架中session如何设置值、获取值、获取所有值?(10分)
Session([‘key’=>value]);
Session(‘key’);
Request()->session()->all();

93写出电商网站中浏览历史模块是如何实现的(分已登录和未登录分别简述)(10分)
1判断是否登录
2 无:cookie
登录:db
不管是存入cookie或者db 存入之前先判断是否已经有此浏览记录,有则更新浏览时间,无则添加
3:一开始未登录 登录后需要同步浏览记录 ,重复2 操作;
95写出如下sql,数据表student 字段id name age class

96展示出所有班级对应的学生总人数 (10分)
Select count(*) from student group by class
97查询1812班级中年龄最小的学生姓名 (10分)
Select min(age),name from student where class=1812
Select name from student where class=1812 order by age asc limit 1
98封装一个自定义函数,可以获取一个url地址的文件后缀名。例如:url地址为http://www.xx.com/a/b/1.php 得到文件后缀名为1.php (10分)
//返回1.php
Function getPhp( $url){
If( $url ){
a r r a y = e x p l o d e ( ‘ / ’ , array = explode(‘/’, array=explode(/,url);
l e n = c o u n t ( len = count( len=count(array);
Return a r r a y [ array[ array[len];
}
}

有一个student表,数据如上图所示其中username为用户名 sex为性别 1代表男2代表女 age为年龄 class为所在班级 grade 为成绩
按照要求完成下边的sql语句
99求出1811班有多少人
Select distinct  username from student where class=1811
100求出男生中的最高分
Select max(grade) from student where sex=1
101求出班级人数大于10人的班级名称
Select class from student where (select count(*) from student group by class)>10

102求出每个年龄段的人数
select count(*) from student group by age

理论B卷

有一个student表,数据如上图所示其中username为用户名 sex为性别 1代表男2代表女 age为年龄 class为所在班级 grade 为成绩
1.求出1812班学生的平均分
Select avg(grade) from student where class=1812
2.求出学校共有男生多少人
Select * from student where sex=1
3.求出女生中的最低分
Select min(grade) from student where sex=2
4.求出年龄是19 和20的人的姓名
Select username from student where age=19 or age=20
5.Linux 如何查看mysql进程是否启动
ps -aux|grep mysql

每个10分
1写出10个字符串处理函数和作用?(每个1分)
Trim 删除字符串前后左右格
Ltrim 删除字符串左边空格
Rtrim 删除字符串右边空格
Substr 截取字符串
Strpos 字符串第一次出现的位置
Substr_count 计算字符串出现的次数
Strlen返回字符串长度
strtolower字母转小写
Strtoupper 字母转大写
Str_replace字符串替换
2 Composer安装laravel框架的命令(10分)
Composer create-preject --prefer-dist laraval/laravel blog
3 写出你对CSRF攻击的理解?(10分)
用户合法登录A网站,在未关闭情况下访问B网站,B网站通过用户cookie信息得到
A网站信息,对A网站进行恶意攻击
防御:设置表单token令牌进行来源判断
4 写出redis和memcache的相同点和不同点?(10分)
相同点:都是key-value机制存储数据,都是nosql非关系型数据库
区别:memcache只支持string类型,redis支持五种数据类型;memcache断电后消失,redis支持数据持久化
5 如何理解全局中间件和web中间件,前置中间件和后置中间件分别在什么时间执行?(10分)
全局中间件:laravel每个请求都会调用
前置中间件:laravel指定路由请求之前调用
后置中间件:laravel指定路由请求之后调用
全局中间件都可以使用,web中间件需要哪个就使用
6 Git的常用命令(至少五个每个2分)
git add .添加到缓存区
git branch 查看分支
git init 创建版本库
git clone 克隆远程git仓库地址
git checkout branch-name 切换分支
git log查看提交历史
7 写出5个laravel的助手函数,并说明他们的含义(每个2分)
Url 为给定路径生成完整url
Dd die dump缩写 打印输出给定的变量并且结束脚本运行
View 获取一个视图示例
Env 获取环境变量配置的值或者返回默认值
Redirect 返回重定向HTTP响应,如果不带参数则返回重定向器实例
8 简单描述ajax同步异步的区别
Ajax 同步: 同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行
Ajax 异步:用户其它操作不会等待请求结果继续往下执行

9简单描述下你对命名空间的理解
命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:
1.用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
2.为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

10有7克、2克砝码各一个,天平一只,如何只用这些物品三次将140克的盐分成50、90克各一份?
第一步:把140克盐分成两等份,每份70克。
第二步:把天平一边放上2+7克砝码,另一边放盐,这样就得到9克和61克分开的盐。
第三步:将9克盐和2克砝码放在天平一边,另一边放盐,这样就得到11克和50克。于是50和90就分开了。
31写出10个字符串处理函数和作用?(每个1分)
Trim 删除字符串前后左右格
Ltrim 删除字符串左边空格
Rtrim 删除字符串右边空格
Substr 截取字符串
Strpos 字符串第一次出现的位置
Substr_count 计算字符串出现的次数
Strlen返回字符串长度
strtolower字母转小写
Strtoupper 字母转大写
Str_replace字符串替换
28.linux如何修改文件权限?如何修改文件所有者?(10分)
文件权限 chmod -R 777 文件名
所有者 chown -R xu:xu 文件名
29.Git的常用命令(至少五个每个2分)
Git add.添加到缓存区
Git branch 查看分支
Git checkout branch-name 切换分支
Git log 查看提交历史
Git init 创建版本库
30.写出redis和memcache的相同点和不同点?(10分)
相同点:都是key-value机制存储数据,都是nosql非关系型数据库
区别:memcache只支持string类型,redis支持五种类型,memcache断电后消失,redis支持数据持久化
31.写出几个artisan相关的命令(不少于五个每个2分)?
php artisan make:controller name
php artisan make:model name
php artisan make:middleware name
php artisan route:clear
php artisan view:clear

32.简单描述下支付宝同步异步的区别(10分)
同步是给客户看的,异步是服务器处理请求。
同步是客户充值或者支付成功了,给客户一个提示,告诉客户这个操作的结果是成功还是失败。起到的作用就是提示客户这个操作的结果是成功还是失败。
异步是服务器在后端处理支付成功或失败时的业务逻辑。同步通知:用于用户在支付宝页面付款完毕后自动跳转;
异步通知:其实是处理业务逻辑,比如说修改客户的支付状态;
同步得到通知后跳转到自己的网址,然后根据参数告诉客户支付结果,然后在更新状态。
异步其实就是一个双保险,如果同步没有跳转你的网址,可能是关机了,或者网速慢,无法完成数据更新的状态,这时候异步就发挥作用了,先判断是否支付,支付了就不必更新了,只返回支付宝 success 就行了,不然会一直异步通知
33.Redis实现持久化的方式有哪些(10分)
RDB:在指定的时间间隔能对你的数据进行快照存储。
AOF:记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据。
34.Php中单引号和双引号的区别是什么(10分)
双引号能解析变量 速度慢
单引号解析不了变量 速度快
35.10箱黄金,每箱100块,每块一两
有贪官,把某一箱的每块都磨去一钱
请称一次找到不足量的那个箱子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值