PHP算法实战-面试题(1)

最全最详细的PHP面试题(带有答案) 这篇文章介绍的内容是关于最全最详细的PHP面试题(带有答案),有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 相关推荐: 八重樱:分享一波腾讯PHP面试题 八重樱:2019年PHP最新面试题(含答案) 八重樱:Redis 高级面试题 学会这些还怕进不了大厂? 八重樱:阿里面试官三年经验PHP程序员知识点汇总,学会你就是下一个阿里人! 八重樱:php面试题之PHP核心技术 ... 阅读详情

二分查找

基本思想:
 
    假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。(数据量大的时候使用)

<?php
  //二分查找
  function bin_search($arr,$low,$high,$k)
  {
    if($low <= $high)
    {
      $mid = intval(($low + $high)/2);
      if($arr[$mid] == $k)
      {
        return $mid;
      }
      else if($k < $arr[$mid])
      {
        return bin_search($arr,$low,$mid-1,$k);
      }
      else
      {
        return bin_search($arr,$mid+1,$high,$k);
      }
    }
    return -1;
  }
 
  $arr = array(1,2,3,4,5,6,7,8,9,10);
 
  print(bin_search($arr,0,9,3));
?>

顺序查找

基本思想:
 
从数组的第一个元素开始一个一个向下查找,如果有和目标一致的元素,查找成功;如果到最后一个元素仍没有目标元素,则查找失败。

<?php
  //顺序查找
  function seq_search($arr,$n,$k)
  {
    $array[$n] = $k;
    for($i = 0;$i < $n; $i++)
    {
      if($arr[$i] == $k)
      {
        break;
      }
    }
 
    if($i < $n)
    {
      return $i;
    }
    else
    {
      return -1;
    }
  }
?>

简化增强版本

function  seq_sch($array, $k){   
    $y = $m = 'no'; 
    foreach($array as $i => $v){
        if($v == $k){  
            if($i == 'no'){$m = 'yes'}//防止key = no
            $y = $i; 
            break;   
        }   
    }   
    if ($y != 'no' || $m == 'yes'){   
        return  $y;   
    }else{   
        return -1;   
    }   
}   

此方法适用于所有一维数组

PHP奇异算法

<?php
function test(){
 $a=1;
 $b=&$a;
 echo (++$a)+(++$a);
}
test();

PHP7以下的版本返回的是 6,PHP7版本返回5 ,还真的算奇异,个人底层算法差,认为是PHP7以下版本的BUG

 

线性表的删除(数组中实现)

function delete_array_element($array , $i){  
    $len = count($array);   
    for ($j=$i; $j<$len; $j++){  
            $array[$j] = $array [$j+1];  
    }  
    array_pop ($array);  
    return $array ;  
}  

字符串长度

function strlen ($str){  
    if ($str == '' ) return 0;  
    $count =  0;  
    while (1){  
        if ($str[$count] != NULL){  
            $count++;  
            continue;  
        }else{  
            break;  
        }  
    }  
    return $count;  
} 
  • while (1) 其中1代表一个常量表达式,他永远不会等于0。所以,循环会一直执行下去。除非你设置break等类似的跳出循环语句循环才会中止

  • $str[count] php是弱类型语言 使用下标可以读取到相应位置对应参数

function substr($str, $start,  $length=NULL){  
    if ($str== '' || $start>strlen($str)) return;  
    if (($length!=NULL) && ($start>0) && ($length>strlen($str)-$start)) return;  
    if (($length!=NULL) && ($start<0) && ($length>strlen($str )+$start)) return;  
    if ($length == NULL) $length = (strlen($str) - $start);  

    if ($start < 0){  
            for ($i=(strlen($str)+$start); $i<(strlen ($str)+$start+$length ); $i++) {  
                 $substr .=  $str[$i];  
            }  
    }  
    if ($length > 0){  
            for ($i= $start; $i<($start+$length); $i++) {  
                  $substr .= $str[$i];  
            }  
    }  
    if ($length < 0){  
            for ($i =$start; $i<(strlen($str)+$length); $i++) {  
                   $substr .= $str[$i ];  
            }  
    }  
    return $substr;  

字符串翻转

function strrev($str){  
    if ($str == '') return 0 ;  
    for ($i=(strlen($str)- 1); $i>=0; $i --){  
            $rev_str .= $str[$i ];  
    }  
    return $rev_str;  
}  

字符串比较

function strcmp($s1, $s2){  
    if (strlen($s1) <  strlen($s2)) return -1 ;  
    if (strlen($s1) > strlen( $s2)) return 1;  
    for ($i=0; $i<strlen($s1); $i++){  
        if ($s1[$i] == $s2[$i]){  
            continue;  
        }else{  
            return false;  
        }  
    }  
    return  0;  
}  

查找字符串

function  strstr($str, $substr){  
    $m = strlen($str);  
    $n = strlen($substr);  
    if ($m < $n) return false ;  
    for($i=0; $i<=($m-$n+1); $i++){  
        $sub = substr($str, $i, $n);  
        if (strcmp($sub, $substr) ==  0)  return $i;  
    }  
    return false ;  
} 

strcmp(sub,sub,substr)字符串比较方法 如果想不用比较方法请增加for循环

字符串替换

function str_replace($substr, $newsubstr, $str){  
    $m = strlen($str);  
    $n = strlen($substr);  
    $x = strlen($newsubstr);  
    if (strchr($str, $substr) == false) return false;
    $str_new = $str  
    for ($i=0; $i<=($m-$n+1); $i++){  
        $i = strchr($str, $substr);  
        $str = str_delete($str_new, $i, $n);  
        $str = str_insert($str_new, $i, $newstr);  
    }  
    return $str_new;  
} 
  • strchr() 函数搜索字符串在另一字符串中的第一次出现。 
    该函数是 strstr() 函数的别名。

插入一段字符串

function str_insert($str, $i , $substr) {  
    for($j=0 ; $j<$i; $j++){  
            $startstr .= $str[$j];  
    }  
    for ($j=$i; $j <strlen($str); $j++){  
            $laststr .= $str[$j ];  
    }  
    $str = $startstr.$substr.$laststr;  
    return $str ;  
}  

删除一段字符串

function str_delete($str, $i, $j){  
    for ( $c=0; $c<$i; $c++){  
        $startstr .= $str [$c];  
    }  
    for ($c=( $i+$j); $c<strlen ($str); $c++){  
        $laststr .= $str[$c];  
    }  
    $str = $startstr.$laststr;  
    return $str;  
}

复制字符串

function strcpy($s1, $s2){  
    if (strlen($s1)==NULL || !isset($s2)) return;  
    for ($i=0; $i<strlen($s1); $i++){  
        $s2[] = $s1[$i];  
    }  
    return $s2;  
} 

连接字符串

function strcat($s1 ,$s2){  
    if (!isset($s1) || !isset( $s2)) return;  
    $newstr = $s1 ;  
    for($i=0; $i<strlen($s2); $i++){  
            $newstr .= $s2[$i];  
    }  
    return $newstr;  
} 

---------------------------------------------------------------------------------------------------------------------------------------------------------

字符集合:输入一个字符串,求出该字符串包含的字符集合,并按顺序排序(英文)

function set($str){
    //转化为数组
    $arr = str_split($str);
    //去除重复
    $arr = array_flip(array_flip($arr));
    //排序
    sort($arr);
    //返回字符串
    return implode('', $arr);
}

遍历文件夹

<?php  
  function my_scandir($dir)
  {
    $files = array();
    if($handle = opendir($dir))
    {
      while (($file = readdir($handle))!== false) 
      {
        if($file != '..' && $file != '.')
        {
          if(is_dir($dir."/".$file))
          {
            $files[$file]=my_scandir($dir."/".$file);
          }
          else
          {
            $files[] = $file;
          }
        }
      }
 
      closedir($handle);
      return $files;
    }
  }
 
  var_dump(my_scandir('../'));
?>

写一个函数,尽可能高效的从一个标准url中取出文件的扩展名

<?php
  function getExt($url)
  {
    $arr = parse_url($url);//parse_url解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分
    //'scheme' => string 'http' (length=4)
    //'host' => string 'www.sina.com.cn' (length=15)
    //'path' => string '/abc/de/fg.php' (length=14)
    //'query' => string 'id=1' (length=4)
    $file = basename($arr['path']);// basename函数返回路径中的文件名部分
    $ext = explode('.', $file);
    return $ext[count($ext)-1];
  }
  print(getExt('http://www.sina.com.cn/abc/de/fg.html.php?id=1'));
?>

实现中文字符串截取无乱码的方法

可使用mb_substr,但是需要确保在php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。

 

数据结构和算法

使对象可以像数组一样进行foreach循环,要求属性必须是私有。(Iterator模式的PHP5实现,写一类实现Iterator接口)(腾讯)
 

<?php
    class Test implements Iterator{
    private $item = array('id'=>1,'name'=>'php');
 
    public function rewind(){
        reset($this->item);
    }
 
    public function current(){
        return current($this->item);
    }
 
    public function key(){
        return key($this->item);
    }
 
    public function next(){
        return next($this->item);
    }
 
    public function valid(){
        return($this->current()!==false);
    }
}
    //测试
    $t=new Test;
    foreach($t as $k=>$v){
        echo$k,'--->',$v,'<br/>';
    }
?>

用PHP实现一个双向队列(腾讯)

<?php
    class Deque{
    private $queue=array();
    public function addFirst($item){
        return array_unshift($this->queue,$item);
    }
 
    public function addLast($item){
        return array_push($this->queue,$item);
    }
    public function removeFirst(){
        return array_shift($this->queue);
    }
 
    public function removeLast(){
        return array_pop($this->queue);
    }
}
?>

请使用冒泡排序法对以下一组数据进行排序10 2 36 14 10 25 23 85 99 45。

<?php
    // 冒泡排序
    function bubble_sort(&$arr){
        for ($i=0,$len=count($arr); $i < $len; $i++) {
            for ($j=1; $j < $len-$i; $j++) {
                if ($arr[$j-1] > $arr[$j]) {
                    $temp = $arr[$j-1];
                    $arr[$j-1] = $arr[$j];
                    $arr[$j] = $temp;
                }
            }
        }
    }
 
    // 测试
    $arr = array(10,2,36,14,10,25,23,85,99,45);
    bubble_sort($arr);
    print_r($arr);
?>

写出一种排序算法(要写出代码),并说出优化它的方法。(新浪)

<?php
    //快速排序
    function partition(&$arr,$low,$high){
        $pivotkey = $arr[$low];
        while($low<$high){
            while($low < $high && $arr[$high] >= $pivotkey){
                $high--;
            }
            $temp = $arr[$low];
            $arr[$low] = $arr[$high];
            $arr[$high] = $temp;
            while($low < $high && $arr[$low] <= $pivotkey){
                $low++;
            }
            $temp=$arr[$low];
            $arr[$low]=$arr[$high];
            $arr[$high]=$temp;
        }
        return$low;
    }
 
 
function quick_sort(&$arr,$low,$high){
    if($low < $high){
        $pivot = partition($arr,$low,$high);
        quick_sort($arr,$low,$pivot-1);
        quick_sort($arr,$pivot+1,$high);
    }
}
?>

关于猴子的面试题

一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n,输出最后那个大王的编号。(新浪)(小米)
 

<?php
    // 方案一,使用php来模拟这个过程
    function king($n,$m){
        $mokey = range(1, $n);
        $i = 0;
 
        while (count($mokey) >1) {
            $i += 1;
            $head = array_shift($mokey);//一个个出列最前面的猴子
            if ($i % $m !=0) {
                #如果不是m的倍数,则把猴子返回尾部,否则就抛掉,也就是出列
                array_push($mokey,$head);
            }
 
            // 剩下的最后一个就是大王了
            return $mokey[0];
        }
    }
    // 测试
    echo king(10,7);
 
    // 方案二,使用数学方法解决
    function josephus($n,$m){
        $r = 0;
        for ($i=2; $i <= $m ; $i++) {
            $r = ($r + $m) % $i;
        }
 
        return $r+1;
    }
    // 测试
    print_r(josephus(10,7));

    // 方案三
    function king($n, $m){
        $monkeys = range(1, $n);         //创建1到n数组
	    $i=0;
	    while (count($monkeys)>1) {	 //循环条件为猴子数量大于1
		   if(($i+1)%$m==0) {	 //$i为数组下标;$i+1为猴子标号
			   unset($monkeys[$i]);	//余数等于0表示正好第m个,删除,用unset删除保持下标关系
		   } else {
               //如果余数不等于0,则把数组下标为$i的放最后,形成一个圆形结构
			   array_push($monkeys,$monkeys[$i]);     
			 unset($monkeys[$i]);
		}
			$i++;//$i 循环+1,不断把猴子删除,或 push到数组 
	}
	return current($monkeys);	//猴子数量等于1时输出猴子标号,得出猴王
}
echo king(6,3);
?>

二维数组排序算法函数,能够具有通用性,可以调用php内置函数。

<?php
 
 
function array_sort($arr,$keys,$order=0){
    if(!is_array($arr)){
        return false;
    }
 
 
	//根据指定的字段和内层数组的下标组成新的一维数组
    $keysvalue=array();
    foreach($arr as $key => $val){
        $keysvalue[$key] = $val[$keys];
    }
	print_r($keysvalue);
 
 
	//对数组按照指定字段排序并保持索引关系
    if($order == 0){
        asort($keysvalue);
    }else{
        arsort($keysvalue);
    }
	print_r($keysvalue);
   
    $new_array=array();
	//按照排好序的下标,重新组合原二维数组
    foreach($keysvalue as $key => $val){
        $new_array[$key] = $arr[$key];
    }
    return $new_array;
}
    //测试
    $person=array(
        array('id'=>2,'name'=>'lhangsan','age'=>23),
        array('id'=>5,'name'=>'zisi','age'=>28),
        array('id'=>3,'name'=>'apple','age'=>17)
    );
    $result = array_sort($person,'name',0);
 
 
    print_r($result);
 
 
?>

顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组(小米)

<?php
    /**
     * 顺序查找
     * @param  array $arr 数组
     * @param   $k   要查找的元素
     * @return   mixed  成功返回数组下标,失败返回-1
     */
    function seq_sch($arr,$k){
        for ($i=0,$n = count($arr); $i < $n; $i++) {
            if ($arr[$i] == $k) {
                break;
            }
        }
        if($i < $n){
            return $i;
        }else{
            return -1;
        }
    }
 
    /**
     * 二分查找,要求数组已经排好顺序
     * @param  array $array 数组
     * @param  int $low   数组起始元素下标
     * @param  int $high  数组末尾元素下标
     * @param   $k     要查找的元素
     * @return mixed        成功时返回数组下标,失败返回-1
     */
    function bin_sch($array,$low,$high,$k){
        if ($low <= $high) {
            $mid = intval(($low + $high) / 2);
            if ($array[$mid] == $k) {
                return $mid;
            } elseif ($k < $array[$mid]) {
                return bin_sch($array,$low,$mid - 1,$k);
            } else{
                return bin_sch($array,$mid + 1,$high,$k);
            }
        }
        return -1;
    }
 
    // 测试:顺序查找
    $arr1 = array(9,15,34,76,25,5,47,55);
    echo seq_sch($arr1,47);//结果为6
 
    echo "<br />";
 
    // 测试:二分查找
    $arr2 = array(5,9,15,25,34,47,55,76);
    echo bin_sch($arr2,0,7,47);//结果为5
?>

洗牌算法

<?php
    $card_num = 54;//牌数
    function wash_card($card_num){
        $cards = $tmp = array();
        for($i = 0;$i < $card_num;$i++){
            $tmp[$i] = $i;
        }
 
        for($i = 0;$i < $card_num;$i++){
            $index = rand(0,$card_num-$i-1);
            $cards[$i] = $tmp[$index];
            unset($tmp[$index]);
            $tmp = array_values($tmp);
        }
        return $cards;
    }
    // 测试:
    print_r(wash_card($card_num));
?>

有一母牛,到4岁可生育,每年一头,所生均是一样的母牛,到15岁绝育,不再能生,20岁死亡,问n年后有多少头牛。

function niu($y){
	static $num= 1;					//定义静态变量;初始化牛的数量为1
	for ($i=1; $i <=$y ; $i++) { 	
		if($i>=4 && $i<15){	      //每年递增来算,4岁开始+1,15岁不能生育
		$num++;
			niu($y-$i);			    //递归方法计算小牛$num,小牛生长年数为$y-$i
		}else if($i==20){			
		$num--;	                         //20岁死亡减一
		}
	return $num;
}

 PHP实现斐波那契数列

/**
 * 斐波那契数列
 * @param $n
 * @return mixed
 */
function fbnq($n){
    $arr[1] = 1;
    $arr[2] = 1;
    for($i=3; $i<=$n; $i++){
        $arr[$i] = $arr[$i-1] + $arr[$i-2];
    }
    return $arr;
}
var_dump(array_values(fbnq(10)));die;

比较两个文件路径的相对

$b = '/a/b/c/d/e.php';
$a = '/a/b/f/g/j/h.php';
function diff($a, $b){
    $aArr = explode('/',$a);
    $bArr = explode('/',$b);
    $bCount = count($bArr);
    $k = 0;
    for($i=0;$i<$bCount;$i++){
        if($aArr[$i] != $bArr[$i]){
            $k = $i;
            break;
        }
    }
    //echo $k;die;
    //var_dump(array_fill(0, $bCount-$k, '..'));die;
    $result = array_merge(array_fill(1, $bCount-$k-1, '..'), array_slice($aArr,$k));
    return implode('/', $result);
}
var_dump(diff($a, $b));die;

杨辉三角

<?php
/* 默认输出十行,用T(值)的形式可改变输出行数 */
class T{
  private $num;
  public function __construct($var=10) {
    if ($var<3) die("值太小啦!");
    $this->num=$var;
  }
  public function display(){
    $n=$this->num;
    $arr=array();
  //$arr=array_fill(0,$n+1,array_fill(0,$n+1,0));
    $arr[1]=array_fill(0,3,0);
    $arr[1][1]=1;
    echo str_pad(" ",$n*12," ");
    printf("%3d",$arr[1][1]);
    echo "<br/>";
    for($i=2;$i<=$n;$i++){
      $arr[$i]=array_fill(0,($i+2),0);
      for($j=1;$j<=$i;$j++){
        if($j==1)
          echo str_pad(" ",($n+1-$i)*12," ");
        printf("%3d",$arr[$i][$j]=$arr[$i-1][$j-1]+$arr[$i-1][$j]);
        echo "  ";
      }
      echo"<br/>";
    }
  }
}
$yh=new T('3'); //$yh=new T(数量);
$yh->display();
?>

有个人想上一个n级的台阶,每次只能迈1级或者迈2级台阶,问:这个人有多少种方法可以把台阶走完?例如:总共3级台阶,可以先迈1级再迈2级,或者先迈2级再迈1级,或者迈3次1级总共3中方式

function jieti($num){	//实际上是斐波那契数列
		return $num<2?1:jieti($num-1)+jieti($num-2);
	}

请写一段PHP代码,确保多个进程同时写入同一个文件成功

<?php
    $fp = fopen("lock.txt","w+");
    if (flock($fp,LOCK_EX)) {
        //获得写锁,写数据
        fwrite($fp, "write something");
 
        // 解除锁定
        flock($fp, LOCK_UN);
    } else {
        echo "file is locking...";
    }
    fclose($fp);
?>

无限级分类

function tree($arr,$pid=0,$level=0){
        static $list = array();
        foreach ($arr as $v) {
            //如果是顶级分类,则将其存到$list中,并以此节点为根节点,遍历其子节点
            if ($v['pid'] == $pid) {
                $v['level'] = $level;
                $list[] = $v;
                tree($arr,$v['id'],$level+1);
            }
        }
        return $list;
    }

获取上个月第一天 和 最后一天

//获取上个月第一天
    date('Y-m-01',strtotime('-1 month'));
 
    //获取上个月最后一天
    date('Y-m-t',strtotime('-1 month'));

随机输入一个数字能查询到对应的数据区间

//把区间换成数组写法,用二分法查找区间
	function binsearch($x,$a){  
	    $c=count($a);  
	    $lower=0;  
	    $high=$c-1;  
	    while($lower<=$high){  
	        $middle=intval(($lower+$high)/2);  
        	if($a[$middle]>=$x){  
	            $high=$middle-1;
	        }elseif($a[$middle]<=$x ){  
	            $lower=$middle+1;
	        }   
	    }
 
	    return '在区间'.$a[$high].'到'.$a[$lower];  
	}
 
	$array  = ['1','50','100','150','200','250','300'];
	$a = '120';
	echo binsearch($a,$array);

 

 

 

 

 

 

2018年最新PHP面试题 面试之前多看看公司的资料,可以看出面试的公司主要做什么,电商,数据库,php函数,sql的优化,接口,session和cookie等经常会问到,都是必问之题,这其中有一部分题目摘抄自网络,回答也不错 1.请自我介绍一下? 答:我叫xxx,来自北京,20xx年毕业于xx大学计算机xx系,毕业后在武汉从事了x年的php开发工作,公司是一个外包公司,主要做微信开发,公众号推广,商城,论坛的开... 阅读详情

相关推荐

php后端面试题实战整合(最全附答案)

mysql索引优化三范式存储引擎myisam和innodb锁事务explain查询优化主从复制读写分离 linux命令高并发权限管理RBAC redis和memecache超卖微信支付第三方登录MVC get和post php魔术方法常量 apache和ngiux 错误码 安全验证错误等级错误日志数组递归冒泡排序快速排序composer框架区别安全攻击设计模式tcp/udpsession面向对象多继承 正则swoole设计模式AJAX大流量单点登陆SSO正反向代理负载均衡seo优化加密方式 php8新特性

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 8194

字符集合:输入一个字符串,求出该字符串包含的字符集合,并按顺序排序(英文)

目录 字符集合:输入一个字符串,求出该字符串包含的字符集合,并按顺序排序(英文) function set ($str) { $arr = str_split($str); $arr = array_unique($arr); sort($arr); return implode('', $arr); } echo set("aawewewqqsdferftwed...

苦修 2832

这200个精选PHP面试题,让你轻松答出高分 - 导读

尊敬的读者欢迎阅读本专栏导读文章,本专栏为将您准备了200道+关于PHP的面试题(目前已经有80篇+)。PHP是一种广泛应用于Web开发领域的脚本语言,具有简单易学、灵活高效的特点,因此在就业市场上备受青睐。每次需要面试的都是都整个百度和Google找题,太头疼了,从今天开始,就不用这么麻烦了,只看我这个专栏就够了。PHP面试题是评估面试者对于该语言的掌握程度和技能水平的重要参考工具。无论您是准备面试,还是希望提升自己的PHP知识,本文都将为您提供全面而详尽的内容。

黑夜开发者的博客 2189

编程题【字符集合】

题目描述: 时间限制:1秒空间限制:32768K 链接:https://www.nowcoder.com/questionTerminal/784efd40ed8e465a84821c8f3970b7b5 来源:牛客网 输入描述: 每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。 输出描述: 每组数据一行,按字符串原有的字符

HappinessSourceL的博客 830

【面试系列】PHP 高频面试题

作为PHP开发者,在面试中需掌握的知识点包括基础语法和概念,如变量、数据类型、操作符、控制结构和函数。面向对象编程(OOP)部分,需要理解类和对象、继承、接口和抽象类、命名空间和Trait的使用。高级特性如闭包、生成器、反射、依赖注入和设计模式也是重点。数据库操作方面,应熟悉通过 mysqli 或 PDO 连接数据库,执行SQL查询,防止SQL注入,并了解ORM框架。

在路上的专栏 1359

SECS/GEM协议学习教程

摘要:SECS/GEM是半导体制造设备通信的国际标准,定义了主机系统与设备间的通信规范,包括设备控制、状态监控、数据采集等功能。协议采用分层架构(应用层、消息层、传输层、物理层),支持关键消息类型如S1F13(建立通信)、S2F13(数据采集)等。通信流程涵盖建立连接、数据交换和终止会话,并通过状态变量(SVID)、事件(CEID)等实现实时交互。典型应用包括设备初始化、报警处理及配方管理,需处理数据类型(如U2、A、L)和通信调试问题。

GitHub个人仓库地址:https://github.com/feiyuluoye ; 个人塔罗牌占卜平台:http://118.126.82.12:8080/ ; 欢迎广大Coding友共同交流讨论。 2055

【每日一题】Day5 字符集合

Day5 字符集合

恒等于C的博客欢迎您 1032

图自编码器(GAE)与变分图自编码器(VGAE)

在学习图自编码器之前先了解一下自编码器与变分自编码器。

小鱼的小窝 1万+

字符集合排序

字符集合:输入一个字符串,求出该字符串包含的字符集合,并按顺序排序(英文)

u010683991的博客 756

csp-j/s

CSP-J/S 是中国计算机学会(CCF)主办的 ‌‌(Certified Software Professional Junior/Senior),是信息学奥赛(NOI)体系的入门级选拔考试,也是国内最具权威性的青少年编程能力认证之一。

gxyxxrYYDS的博客 2025

VSCode上搭建C/C++开发环境(vscode配置c/c++环境)Windows系统---保姆级教程

关于VSCode上搭建C/C++开发环境的内容,到这里就结束了,这里博主感叹一下,VSCode真的挺强大的,作为一个编辑器,可以通过和编译器链接成为开发环境,将环境配置好的话,在这上面写代码似乎也是个不错的选择。大家有任何疑问,欢迎在评论区中提出,本篇博客有任何问题和错误也欢迎来和博主讨论,真心希望能和大家一起进步。最后,如果本篇博客对你有帮助的话,能不能给博主一个三连啊!

2303_79329831的博客 8万+

输入一个字符串,求出该字符串包含的字符集合。

题目 输入一个字符串,求出该字符串包含的字符集合。 输入描述 每组数据输入一个字符串,字符串最大长度为100,且只包含字符,不能为空串,区分大小写。 输出描述 每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。 示例 输入 abcqwerabc 输出 abcqwer 代码 import java.util.Scanner; class So...

qq_44837912的博客 2412

在 SAP GUI 里开发与调用 Adobe PDF 表单:SFP 建模 + Driver Program 调用的全流程实战

本文介绍了在SAP系统中使用Adobe PDF表单的完整流程。重点阐述了SAP Interactive Forms相比传统表单工具的优势,特别是在处理复杂排版、条码和交互式字段时的适用性。文章详细说明了开发流程:从安装设计工具Adobe LiveCycle Designer开始,到在SFP事务码中创建Interface和Form的数据模型,再到编写驱动程序的ABAP代码实现PDF输出。特别强调了Interface作为数据契约的重要性,以及如何通过分层设计实现前后端分离开发。最后提供了标准调用链的示例代码,展

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 273

PHP - 经典面试题大全,看这一篇就够了

php面试题大全、PHP - 经典面试题大全,看这一篇就够了

Chon.Wang 2万+

基于ADPSS的直驱风电单机模型建模指南:跟网型与构网型

本文介绍了基于ADPSS平台的直驱风电单机建模方法,包含跟网型和构网型两种控制策略。模型采用模块化设计,共享风力机与桨距角控制部分,通过FORTRAN语言实现自定义建模。跟网型采用锁相环同步和矢量控制,构网型则采用虚拟同步机技术模拟同步发电机特性。详细阐述了风力机气动模型、桨距角控制算法及代码实现,为新能源并网仿真提供了实用参考。全文约150字,涵盖模型架构、数学方程和ADPSS实现要点。

huanghm88的专栏 168

微信小程序 - 解决微信支付报错 requestPayment:fail no permission 原因分析及排查处理(支付失败出错,无法唤起支付弹框面板,微信支付API报错请求付款:失败无权限)

微信小程序,微信支付,支付报错,errMsg: "requestPayment:fail no permission",支付失败,支付权限没问题,微信小程序支付报错,检查了appid正确依旧不行,微信小程序支付异常,苹果ios手机,安卓手机,开发者工具模拟器,最新解决教程,小程序wx.requestPayment报错/无响应,小程序支付 requestPaym,微信小程序认证,真机运行,小程序微信支付提示错误,微信小程序里使用微信支付错误提示,微信小程序支付异常,微信支付弹框拉不起来,小程序支付api,都检

🏆 前端领域优质创作者 1万+

2021年3月phper必看的PHP面试题(附答案)

金三银四已经开始了,所以花时间搜集整理出来了这套面试题大全,希望对你有用~ 另外还将大量面试题整理成了一个PHP面试手册,是PDF版的。 关注微信公众号:PHP大神,然后回复“面试手册”即可获取~ 1. 什么是面向对象?主要特征是什么? 面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。2. SESSION 与 COOKIE的区别是什么,请从协议,产生的原因与作用说明? 1)、http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不

weixin_55305220的博客 7760

从扩散到流匹配:具身智能中的生成模型原理与实现细节(具身智能/VLA/机器人面试常考)

本文探讨了生成模型在具身智能中的应用,重点对比了扩散模型和流匹配(Flow Matching)两种方法。扩散模型通过逐步加噪和去噪过程学习数据分布,建模能力强但采样速度慢;而Flow Matching直接学习连续向量场,更适合实时轨迹规划等需要快速连续生成的任务。文章还分析了自注意力机制的优势、ROS1/ROS2通信架构差异,并提供了Flow Matching的PyTorch实现代码。这些生成模型使机器人系统能够处理不确定性、多模态信息和连续控制问题,从传统的确定解转向更灵活的分布建模范式。

m0_51738372的博客 235

php面试题之算法篇

这是真实的IT公司招聘php程序员的php面试题,考的都是算法的知识,说实话,这些都是简单的基本算法! 下面的php面试题均附答案,请自行斟酌! (1) 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组 //对数组冒泡排序 function bubble_sort($array){ $count = count($array); if ($coun...

chenzhao635的专栏 115

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【php-面试】PHP详细面试题分享及归档

发现之前自己对于很多基础的面试理解和学习不够深刻,为了鼓励自己持续前进所以最近开始在论坛和搜索引擎上开始学习和总结相关知识,其中有一些题目时论坛里面一些前辈分享过的题目或者答案,还有一部分时自己最近面试遇到的问题,基于自己的理解和前辈们的分享归档了一部分,所以分享出来,希望对其他的小伙伴们也有帮助,同时也希望能收到大佬们对于理解有误的地方的指导。

snakelis的博客 2945

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【PHP+前端面试题大合集】

MySQL在执行SQL语句时会临时创建一些存储中间结果集的表,这种表被称为临时表。临时表只对当前连接可见,在连接关闭后,临时表会被删除并释放空间。下面几种情况会使用到临时表:form中的子查询。distinct查询并加上orderby。orderby和groupby的子句不一样时。使用union查询时。

qq_45652915的博客 2574

PHP 算法面试题

1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组 2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组 3. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数 【附答案】(以下答案不一定是最好的,只是一个简单的参考) 一、基础题 1. 相等 相等 不相等 2. true true true

2134

PHP常见中高面试题汇总

那么可以视为垃圾,清楚。2、延迟时间后进行选举(延迟的时间算法为:延迟时间+随机数+rank*1000,从节点数据越多,rank越小,因为主从数据复制是异步进行的,所以  所有的从节点的数据可能会不同),延迟的原因是等待主节点fail广播到所有存活的主节点,否则主节点会拒绝参加选举;选举流程:1、先发现主节点fail的哨兵,将成为哨兵中的leader,之后的主节点选举将通过这个leader进行故障转移操作,从存活的slave中选举新的master,新的master选举同集群的master节点选举类似;

xhbphp的博客 5917

php逻辑算法面试题,php算法面试题及答案【相关词_ php算法面试题】

PHP面试题网2018最新PHP程序员面试题及答案大全,php程序员面试自我介绍,PHP工程师面试题,php经典面试题及答案宝典,PHP面试宝典及程序员面试算法题大全!PHP算法面试题及答案800x567 - 41KB - JPEGPHP面试题:写一个二维数组排序算法函数,可以724x470 - 44KB - PNG算法面试题_算法面试题及答案_钟爱阁 -404x220 - 12KB - JPEG...

weixin_33352628的博客 292

php 算法笔试题,PHP算法面试题及答案

PHP算法面试题及答案php面试的.时候有些面试官会考一些算法知识,下面小编整理了PHP算法面试题及答案,希望对大家有帮助!1.使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组//冒泡排序(数组排序)function bubble_sort($array){$count = count($array);if ($count <= 0) return false;for($i=0; $...

weixin_34450092的博客 685

PHP算法面试题

冒泡排序算法 基本思想: 对需要排序的数组从后往前(逆序)进行多遍的扫描,当发现相邻的两个数值的次序与排序要求的规则不一致时,就将这两个数值进行交换。这样比较小(大)的数值就将逐渐从后面向前面移动。 <?php function mysort($arr) { for($i = 0; $i < count($arr); $i++) { ...

程序猿的世界 1万+
上一篇: PHP常用算法和数据结构示例(必看篇)
下一篇: 2019PHP面试题大全(基础知识一)
chenrui310
博客等级 码龄15年 165粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值