最近动态

杂谈

[合集]面试中遇到的那些提问

参加了好几家公司的面试了,一直也没来得及将这些问题整理一下,今天正好不想到处跑了,所以先在这里写下这一篇文章,以后会不定期更新。

非技术篇:

  1. 先来一个自我介绍吧(废话! =_=!)
  2. 用3个词组评价你自己
  3. 说一说你一生中感到最有成就感的一件事
  4. 说一说你曾经遇到过的最沮丧的一件事
  5. 说说你的优缺点
  6. 说说你的父母都是做什么的?
  7. 你有多少个兄弟姐妹?
  8. 你为什么选择来参加我们公司的招聘
  9. 你对加班的看法和出差的看法,以及你对加班和出差的最大忍耐极限
  10. 你觉得你在哪一方面比较优秀?
  11. 别人都是怎么评价你的?
  12. 在同一个Team中,当别人的意见和自己的意见冲突的时候,你会怎么办?
  13. 拿一个你最熟悉的项目来讲讲,它的架构、设计、遇到的问题以及是如何解决的
  14. 你对我们的开发团队有什么期望吗?
  15. 最后,你有什么想要问我的?
    …

阅读剩下更多

默认配图
算法

PHP常用算法的方法实现(冒泡、选择、插入、快排、二分查找)

以前说起写算法,基本上都是拿C语言来写,因为用C可以更清楚的理解各种排序算法和数据结构。今天遍换成使用PHP语言来写几个常用的算法。
这次要写的算法包括:

  • 冒泡排序
  • 插入排序
  • 选择排序(直接)
  • 快速排序
  • 二分查找

冒泡:

<?php
$arr = array(4,3,5,6,8,0,10,15,11);
echo implode(' ',$arr);
//冒泡排序 最坏 平均O(N^2) 最好O(N)
function BubbleSort($arr){
	$length = count($arr);
	if($length <= 1){
		return $arr;
	}
	for($i=0;$i<$length;$i++){
		for($j=0;$j<$length-$i-1;$j++){
			if($arr[$j] > $arr[$j+1]){
				$tmp = $arr[$j];
				$arr[$j] = $arr[$j+1];
				$arr[$j+1] = $tmp;
			}
		}
	}
	return $arr;
}
echo "\nBubbleSort:\n";
echo implode(' ',BubbleSort($arr))."\n";
?>

阅读剩下更多

默认配图
PHP

一种较好的实现PHP异步发送邮件的实现

前些天在写我的TR-System(社团招新管理系统)的时候,用到了邮箱验证用户注册,也就是注册成功后,需要访问收到的邮件中的URL进行用户激活。这个事件发生在用户提交注册请求之后,系统需要立即发送一封邮件用于激活,但是系统在调用PHPMailer的时候需要进行SMTP连接邮箱系统(用的腾讯企业邮),往往在这个时候会出现等待的情况。如果让用户来承担这个等待时间,体验也太差了!,没见过哪个系统上注册个用户,还需要慢慢等待系统告诉我到底有没有注册成功。
一开始在写的时候,直接在POST请求中处理,写入数据库后就调用sendEmail方法,情况是这样的:
1.提交注册 --> 2.写入数据库 --> 3.发送Email --> 4.注册成功。
这样在用户看来是有一个漫长的等待的。
实际上应该为:
1.提交注册 --> 2.写入数据库 --> 3.注册成功。 ||||||||||||||||||-->发送Email
这样的才是一个拥有良好用户体验的系统 ^_^ 。
若是在Java等环境下,咱们可以很好利用多线程,分出来一个任务让另一个线程去完成。
但是!PHP这个单线程环境下,没有new Thread来搞这个事情啊。 不过,换一个角度,线程不行的,我就给个新进程呗。当然不是在当前进程创建新进程。

阅读剩下更多

默认配图
算法

通用笔试-PHP测试编程题[2题]

水仙花数

题目描述:
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。

输入
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。

输出
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no; 每个测试实例的输出占一行。

样例输入
100 120 300 380

样例输出
no 370 371

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
echo "Please Input\n";
$in = '';
while($in != "\n"){
$first = false;
// $stdin = fopen("php://stdin",'r');
// $in = fgets($stdin);
$in = fgets(STDIN);//使用标准输入
$args[] = explode(' ',trim($in));
}
// fclose($stdin);
array_pop($args);
foreach ($args as $item) {
if($item[0] <100 || $item[1]>999 || $item[0]>=$item[1]) {
echo "输入参数不合法!\n";
exit(0);
}
$start = $item[0];
$end = $item[1];
$res = array();
while($start <= $end){
$a = floor($start/100);
$b = floor(($start-$a*100)/10);
$c = $start%10;
if($start == ($a*$a*$a+$b*$b*$b+$c*$c*$c)){
$res[] = $start;
}
$start += 1;
}
echo empty($res)?"No\n":implode(' ',$res)."\n";
}
?>

第二题:

阅读剩下更多

默认配图
学习笔记

You have new mail - Mac OS

奇了怪了,莫名其妙!平时打开终端都没怎么注意,今天发现打开终端的时候,除了常规的上次登录提示,居然有一句“You have new mail”紧接着在下面出现了。
平时都不用自带的邮件.app的 打开邮件,却没有啥。
好的,本着好奇的心理,开始摸索。

阅读剩下更多

默认配图
Linux

[修复]wordpress WP_Image_Editor_Imagick 指令注入漏洞

漏洞描述:该修复方案为临时修复方案,可能存在兼容性风险,为了防止WP_Image_Editor_Imagick扩展的指令注入风险,将wordpress的默认图片处理库优先顺序改为GD优先,用户可在/wp-includes/media.php的_wp_image_editor_choose()函数中看到被修改的部分
云盾不提供自动修复,咱们自己来修复吧。根据提示,我们打开media.php 找到相关函数的内容:

$implementations = apply_filters( 'wp_image_editors', array( 'WP_Image_Editor_Imagick', 'WP_Image_Editor_GD' ) );

做如下顺序调整:

$implementations = apply_filters( 'wp_image_editors', array( 'WP_Image_Editor_GD', 'WP_Image_Editor_Imagick' ) );

正如上面的描述所说,临时方案嘛。Wordpress官方不做处理的话,你每次升级了程序,都会出现这样的报错,每次都得自己去修改。不过如果不在乎这个提示的话,不理也行!

附当时的图片一张
wp-Image 注入漏洞

阅读剩下更多

默认配图
Linux

nginx+php-fpm环境下的mysqld痛不欲生

问题背景

今天突然发现自己的服务器又出现了Mysql服务器的崩溃,重启一下便恢复了。
但是!下午2点的时候重启的,晚上回来一看,数据库又挂了!!!十分恼火啊!再重启一下,什么?直接启动不了啦!
发生报错:

[root@iZ28l1ca1vhZ ~]# service mysqld start
Starting MySQL.The server quit without updating PID file (/usr/local/mysql/data/iZ28l1ca1vhZ.pid).                                         [FAILED]
[root@iZ28l1ca1vhZ ~]# service mysqld restart

排查过程

查看mysqld的日志:

阅读剩下更多

默认配图
Web

js判断两个块元素的相交与否

之前在做阿里笔试的时候,其中就有那么一个题,要求你用js写一个函数,用来判断两个Div是否相交,当时在那个上面并没有很快的写出来,结果时间到了。回头好好又想想,还是把他写一下,就算是最笨的方法,也得实现。

阅读剩下更多

默认配图
编程语言

C(C++)、Java、PHP区别函数参数传递

这篇文章,我专门测试了一下C、Java、PHP三种编程语言中对于函数(方法)参数传递的问题

一、C/C++篇

首先说明一下,这里仅在C语言下测试,C++类似,只不过在C++中多了一个传引用(&),其性质还是指针,传递过程中可以看作是使用别名。
看代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//
// main.c
// TestOfVlaue
//
// Created by anthony on 16/4/16.
// Copyright © 2016年 Anthony. All rights reserved.
//

#include <stdio.h>
//C语言测试
void prt1(int v) {
printf("方法内执行后的结果:%d\n",v);
}
void prt2(int v[],short int len) {
for (int i=0; i<len; i++) {
printf("a[%d]:%d\n",i,v[i]);
}
}
void ch1(int v) { //按值传递
++v;
prt1(v);
}
void ch2(int *v) { //按地址(指针)传递
++(*v);
prt1(*v);
}
//void ch3(int &v) { //引用传递 C里面木有&(引用)C++中可用,底层还是指针
// ++v;
// prt1(*v);
//}
void ch4(int v[],short int len) { //改变数组的值
for (int i=0; i<len; i++) {
v[i]++;
}
}
void test1(int v) { //测试整型变量
printf("测试单个值:类型:int,值为:%d\n",v);
ch1(v);
printf("执行ch1()的结果:%d\n",v);
ch2(&v);
printf("执行ch2()的结果:%d\n\n",v);
}
void test2(int v[],short int len) { //测试整型数组
printf("测试数组:类型:int,值为:\n");
prt2(v, len);
ch4(v,len);
printf("方法内执行后的结果:\n");
prt2(v, len);
printf("\n");
}
int main(int argc, const char * argv[]) {
int a = 10;
int b[] = {1,2,3};
test1(a); //测试变量a++
test2(b, 3); //测试数组b各元素++
test1(b[0]); //测试数组b[0]++
return 0;
}

运行结果:

阅读剩下更多

默认配图
返回顶部