首页 » SEO优化 » php的段子技巧_10年经验的PHP轨范员不会写轮回是段子可能80的PHPer都不会

php的段子技巧_10年经验的PHP轨范员不会写轮回是段子可能80的PHPer都不会

访客 2024-11-02 0

扫一扫用手机浏览

文章目录 [+]

实在,我在四五年前就听到很多次类似的感叹了。
在我看来,这是再正常不过的了,笔者乃至说过,80%的PHP程序员不会写循环。
可能有人要惊呼了,你这是哗众取宠吧。
至于是不是,你自己来看下这三个题目,看完你还言之凿凿说你或者你身边的web程序员会写循环吗?

1.二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1

php的段子技巧_10年经验的PHP轨范员不会写轮回是段子可能80的PHPer都不会

这个算是入门题目了吧,仔细思考下,彷佛很随意马虎想通,有点基本功的该当还是能写出源码的。

php的段子技巧_10年经验的PHP轨范员不会写轮回是段子可能80的PHPer都不会
(图片来自网络侵删)

代码如下

public static int commonBinarySearch(int[] arr,int key){int low = 0;int high = arr.length - 1;int middle = 0;//定义middleif(key < arr[low] || key > arr[high] || low > high){return -1;}while(low <= high){middle = (low + high) / 2;if(arr[middle] > key){//比关键字大则关键字在左区域high = middle - 1;}else if(arr[middle] < key){//比关键字小则关键字在右区域low = middle + 1;}else{return middle;}}return -1;//末了仍旧没有找到,则返回-1}

这是不是循环,而且只是单层循环。
这个会了,那再来一个题

2.调度数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调度该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并担保奇数和奇数,偶数和偶数之间的相对位置不变。
期间,不得借助其他存储空间。

这个题目看起来也不难,但代码要写起来就要思考几分钟了。
写别看代码,建议自己先在纸上试一试。

void FunSeperate(int a,int len){//奇数odd前半部,偶数even后半部 int temp,i,j;i=0;j=len-1;for(i=0;i<=j;){if(a[i]%2==0) //偶数{if(a[j]%2==1){temp=a[i];a[i]=a[j];a[j]=temp; i++;}j--;}elsei++;}}

这个题目也是循环吧,而且也只有单层

3.BFS算法

广度优先遍历BFS(Breadth First Search),其紧张思想是从起始点开始,将其临近的所有顶点都加到一个行列步队(FIFO)中去,然后标记下这些顶点离起始顶点的间隔为1.末了将起始顶点标记为已访问,今后就不会再访问。
然后再从行列步队中取出最前辈队的顶点A,也取出其周边临近节点,加入行列步队末端,将这些顶点的间隔相对A再加1,末了离开这个顶点A。
依次下去,直到行列步队为空为止。

public class Graph { private int V; private LinkedList<Integer> adj[]; // Create a graph Graph(int v) { V = v; adj = new LinkedList[v]; for (int i = 0; i < v; ++i) adj[i] = new LinkedList(); } // Add edges to the graph void addEdge(int v, int w) { adj[v].add(w); } // BFS algorithm void BFS(int s) { boolean visited[] = new boolean[V]; LinkedList<Integer> queue = new LinkedList(); visited[s] = true; queue.add(s); while (queue.size() != 0) { s = queue.poll(); System.out.print(s + " "); Iterator<Integer> i = adj[s].listIterator(); while (i.hasNext()) { int n = i.next(); if (!visited[n]) { visited[n] = true; queue.add(n); } } } }}

这个题也不难吧,也才2层循环。

这三个算法是不是都是基本的for循环呢,最难的不过是嵌套的2层循环,现在你还敢说自己会写循环吗?你以为80%的比例算不算夸年夜呢。

为什么?你还以为是段子吗?

事实上,我身边很多技能卖力人在口试的时候都会稽核上面几个大略题目,足以刷掉很大一部分口试者了。

以是,80%的PHP程序员不会写循环,并不是随口胡诌的一句话,这也是笔者把这三个题目多次发群里后的调查结果。
你以为10年履历不会写循环很奇怪,然而呢?大部分做纯web开拓的程序员实在根本没有算法和逻辑的观点,大多数逻辑都是靠去世记硬背和套框架来的,并不是写个分页或者输出个商品列表就算用循环了。
不少程序员,只要你轻微换个形式,比如把循环的步长设置为可变,或者利用两个及以上的变量掌握循环,他们就懵了,就开始不理解循环了。

你不能说上面三个最大略的算法题不是循环吧。
咱不能光把输出1到10这种循环给算进来吧。

很多大公司在口试的时候,重学历重算法,轻从业履历,便是由于行业履历很随意马虎得到,而且很随意马虎过期,而硬功夫才是终生必备。

写10年CURD又奈何,和写了3年的比,上风在哪?如果换个全新行业,再打几折?

虽然PHP是重灾区(虽然很多人不愿意承认,但PHP的定位就注定是逻辑和算法的重灾区了),但是你以为仅仅是PHP程序员是这样的吗?

标签:

相关文章