ホームページ >バックエンド開発 >PHPチュートリアル >2016 年の 360 Company PHP サーバー開発の筆記試験と面接からの洞察

2016 年の 360 Company PHP サーバー開発の筆記試験と面接からの洞察

WBOY
WBOYオリジナル
2016-06-23 13:24:351613ブラウズ

これは、360 Company での筆記試験と面接に参加するプロセスを説明する記事です。もしかしたら、あなたが面接を受けているポジションはあなたの勉強の方向性ではないかもしれませんが、そこから何かを学ぶことができれば、または私のレッスンから学ぶことができれば幸いです。そうすれば、著者は非常に満足するでしょう。 「他の人が失敗した方法を学び、生き残った人だけが成功できる」という目標に沿って、第 1 部: 企業の筆記試験 360 問
第 2 部: 面接プロセス
第 3 部: 注意すべき点と の 3 つの側面から説明します。私の経験です
同時に、私がとても憧れていた360カンパニーに心から感謝します。インタビューしてくださったお兄さんにも本当に感謝しています、本当に勉強になりました。すべての質問の著作権は360にあります。不適切な内容があれば、削除または修正するようお知らせください。要するに、私は次のように考えています。常に他の人の成功例を見るよりも、他の人の失敗例を理解する方が役立つ場合があります。以下の私の学部プロジェクトを読めば、なぜ私がこの会社をそれほど賞賛しているのかがわかるでしょう。

ダウンロードアドレス: http://download.csdn.net/detail/eastmount/8591789


1. 筆記試験の問題

面接時間: 9月16日2015
面接ポジション: PHP サーバー開発エンジニア
求人要件: PHP/Python 言語構文に精通し、MySQL をマスターし、Redis や MongoDB などのさまざまな DB の基本を理解し、HTML/CSS をマスターするなど。
。 PS: 質問は当時のトピックをやりながら原稿用紙に写したものなので、抜けているところがあるかも知れませんが、ハイハン〜 (1) 四肢選択問題:
1.MYSQL ストレージプロシージャの利点:

あるあるあるある ある Option は複数回呼び出して変更することができ、ネットワーク負荷が軽減されます

2. /etc/my.conf ファイルがどのパッケージに属しているかを確認し、次を実行します:
A.rpm -qf /etc/ my.conf B.rpm -q /etc/my.conf
C.rpm -q | grep /etc/my.conf D.rpm -requires etc/my.conf
解決策: この質問は Linux を調べます。答えはAです。その中には -f クエリ パッケージ所有ファイル、競馬ネットワーク:
-ivh: インストールの進行状況を表示します--install--verbose--hash
-Uvh: ソフトウェア パッケージをアップグレードします--更新
-qpl: RPM を一覧表示します。ソフトウェア パッケージ ファイル情報 [パッケージ リストのクエリ]; -qpi: RPM パッケージの説明情報を一覧表示します [パッケージのインストール パッケージのクエリ] -qf: 指定されたファイルがどの RPM パッケージに属しているかを検索します [ファイルのクエリ];
-Va : すべての RPM パッケージを確認し、失われたファイルを検索します。 $ が定義されていません myvar
C.2 C.2 D. エラー、a::$myvar が定義されていません

<?php	class a{		function a($x=1) {			$this->myvar=$x;		}	}	class b{		var $myvar;		function b($x=2) {			$this->myvar=$x;			parent::a();			}	}	$obj=new b;	echo $obj->myvar;?>
解決策: 回答 A. 参考

4. 次のコードは画像を正しく表示できます:
追記: コードが 4 つあるため、参考のために回答 B のみを手動でコピーしました
<?php	header("content-type:image/jpeg");	$img=imagecreatefromjpeg("images/scce.jpg").imagejpeg($img);	imagedestroy($img);?>

5. 次のスクリプトの出力値は何ですか? A.5 B.2 C.10 b = $a の代入は、代入後の $b への変更のみが $a に影響します。

6. Person クラスはオブジェクト $p をインスタンス化 (新規) し、オブジェクト $p を使用して Person クラスの getInfo メソッドを呼び出します: A.$p->getInfo() B.this-> ; getInfo()


7. ファクトリ メソッド ファクトリに関する次のステートメントはどれが正しいですか:


8. R=(A,B,C) は SQL ステートメント select unique A from R where B=17 と同等です。関係代数式へ: A. πA(σB=17(R)) B.σB=17(πA(R))
C.σB=17(πA,C(R)) D.πA, C( σB=17(R) )
解解)))) Select 文は σb = 17 (R) に相当し、Select Distinct A は重複を排除することです。 答えは A です。 射影演算 π は関係演算です。属性には同じ値があります。たとえば、Baidu Encyclopediaを参照してください。使用を使用して、 's - - ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ − - 17.を使用します。同一の行を削除する必要があります (SQL ステートメントはデフォルトでは重複を削除しません)。最終結果は次のようになります。 17 を使用して

9. コンピューターキャッシュ、1 つのメインメモリレベルは連想マッピングを使用し、ブロックサイズは 128 ワードセクションです、キャッシュ容量は 4 つのブロックにグループ化された 64 ブロック、メイン メモリの容量は 4096 ブロック、メイン メモリのアドレスは合計 ______ ビットを必要とします。 解決策:
メインメモリの容量は 4096 ブロック、各ブロックは 128 ワードであるため、メインメモリの総容量は 512K ワードとなるため、メインメモリのアドレスは 19 ビットでなければなりません。メインメモリのアドレスは、エリア番号、グループ番号、グループ内のブロック番号、ブロック内のアドレス番号に分けられます。 128 ワードを表すには、ブロック内のアドレス番号は 7 ビットでなければならないことがわかります。 1グループは4ブロックで、グループ内のブロック番号は2桁で表されます。キャッシュ容量は64ブロックを16グループに分けているため、グループ番号は4ビットのアドレスで表現する必要があります。残りはエリアコードであり、メインメモリのエリアコードは 6 桁でなければなりません。 |

10. 次のコードの結果は次のとおりです。
var a = new Array(2,3,4,5,6);
var sum=0; . length;i++)
sum+=a[i]; document.write(sum)

解決策:
3+4+5+6=18 を計算します


11。       A.form      B.link       C.三项都是      D.anchor
答案:C

12.mysql数据库还原命令是:
题解:
恢复、备份数据库备份数据库shell > mysqldump -h host -u root -p

13.求下列代码的时间复杂度,more than one answer is correct, choose the smallest one (     ).
        for(i=0; i for(j=1; j<=m; j*=2)
for(z=j/2; z其中某项答案:O(n*log(m)*m)

14.HTML5库抛弃了:
A.form B.applet C.frame D.center
题解:html5不再使用fram,答案C。不再用frame、noframes和frameset,这些标签对可用性产生负面影响。HTML5中不支持frame框架,只支持iframe框架,或者用服务器方创建的由多个页面组成的符合页面的形式,删除以上这三个标签。


15.HTML5中,input元素type属性默认值为:
A.search B.hidden C.text D.form
题解:默认应该是text

16.下列代码的输出结果是:
A.24 B.17 C.72 D.36

d=lambda p:p*2t=lambda p:p*3x=2x=d(x)x=t(x)x=d(x)print x
题解:感觉lambda表达式替换 2*2=4 4*3=12 12*2=24,应该输出A。Right?

17.不是动态规划算法基本要素的是:
A.马尔可夫性 B.建表填 C.运用子项叠代 D.最优子结构
答案:A

18.不要求最优子结构的是:
A.分治法 B.贪心 C.动态规划 D.回溯
答案:D

19.下列叙述正确的是:
PS:太长记不下来了

20.
设有N堆沙子排成一排,其编号为1,2,3,…,N(N<=100)。每堆沙子有一定的数量。现要将N堆沙子并成为一堆。归并的过程只能每次将相邻的两堆沙子堆成一堆,这样经过N-1次归并后成为一堆。找出一种合理的归并方法,使总的代价最小:
PS:答案没记录下来,但是这是典型的动态规划问题。
参考:

21.下列不是分治法所能解决的问题特征是:
A.子问题的解无后效性
题解:只能怀疑答案是A,因为其它选项忘了,请见谅!分治法通常分为"分解-解决-合并"三个步骤,其中若干小规模的问题是可以解决的子问题,即具有最优子结构性质;最后将各个子问题的解合并为原问题的解。

22.
360 A.A: Link {color: red}



: この質問では、ハイパーリンクの色の CSS 定義など、Web ページの基本的な知識を調べます。答え A は間違いなく正しいので、実際のアプリケーションを比較検討してみましょう。

23. 以下は構造疑似クラスではありません:
A.E: ルート B.E: 有効 C.E: 最初の子 D.E: 空

24.TCP 接続、ソケットは recv 関数を呼び出し、戻り値は 0 です。意味は次のとおりです。 。プロトコルによるデータ受信の待機中にネットワークが中断された場合、recv 関数は 0 を返します。デフォルトのソケットはブロックされています。ブロッキングと非ブロッキングの RECV 戻り値に違いはなく、すべて
。 . 5
25. ファイルにランダムにアクセスする必要があるのは、どのファイルの物理構造が上記のアプリケーション シナリオに適していませんか?連鎖記憶構造の記憶アドレスは必ずしも連続しているわけではなく、アドレスを計算してランダムアクセスすることはできず、シーケンシャルにアクセスするしかない。ランダムアクセスが必要な場合は、順番に検索することしかできず、非効率的です。
26. int *const ptr に関する正しい記述は次のとおりです:

A.ptr は変更できません、*ptr は変更できます
B.ptr は変更できます、*ptr は変更できます C.ptr は変更できます、 *ptr は変更できません D.ptr は変更できません、*ptr は変更できません

解決策: 回答 A. Niuke.comを参照してください。 const の機能は、その背後にあるものをブロックすることです。つまり、その背後にあるものは変更できません。 const キーワードのない int *const ptr の場合、それは int* ptr であり、ptr は int へのポインターです。 const を追加すると、const は ptr を変更してブロックします。つまり、ptr のポイントは変更できません。
int const* ptr (const int *ptr と等しい) についても同様です。 const 変更 * 逆参照、つまり、ポインタが指す内容は変更できません。
27. 次の間違った使用法は次のとおりです:

PS: 答えの 1 つは D.typedef void (*FUN)()


28 次のコード fun(21) の出力値は何ですか。 int fun( int a) { a^=(1<<5)-1;
a; の 5 乗、つまり 100000=32 を返します。
次に XOR 演算:
21=010101 ^ 31=011111 =》 001010=10、結果は 10 になります。
29. ソートのテンプレートを記述する正しい方法は次のとおりです:

A.void sort(class A first, class A last, class B pred)
B.void template(class A, class B)sort(A first, A last, B pred) C.template void sort(A first, A last, B pred) C.template void sort(A first, A は最後、B は前)

解決策:
Niuke.com を参照し、D と答えてください。 声 関数テンプレートの宣言
テンプレート関数の形式は、使用する前にテンプレートの型を宣言することです。 関数テンプレートを使用すると、さまざまな仮パラメータをサポートし、オーバーロードされた関数の関数本体設計の重複を避けるための一般的な関数を作成できます。最大の特徴は、関数で使用するデータ型をパラメータとして取ることです。 culy使用を使用します。関数本体
30.16 ビット マシンを使用すると、どのくらいのスペースが無駄になりますか?

struct {
char a; int b; C.6 解決策:
答えD. 16 ビット マシンでは、char 型は 1 バイトを占め、int 型は 2 バイトを占めます。データは自動的に整列され、実際の構造は 1 (char) + 1 (補数) + 2 (int) + 1 (char) + 1 (補数) = 6 バイトとなり、2 バイトのスペースが無駄になります。 : ブログ参照: 【C/C++基礎知識】再度インタビュー 構造体と共用体のサイズ問題について語る

31. ,696 など


32. C/C++ マクロ定義エラーの説明は次のとおりです:
A. マクロ定義はパラメーターの正確性をチェックしないため、セキュリティ リスクが発生します B. マクロ定義の定数は、マクロ定義の方が理解しやすいです。定義済みの定数は使用できますが、const 定数の使用は避けてください
C. マクロ定義が多すぎると、プログラムの可読性に影響し、間違いを犯しやすくなります
D. 関数呼び出しと比較して、マクロ定義は関数の実行効率を向上させることができますプログラム
問題の解決策: Niuke.com を参照、答えは B.参照: http://bbs.csdn.net/topics/340089467
値を変更できないことを示すテーブル定数領域。次の値: 1^2^....^100
解決策:
答えは 100 です。Python コードは次のとおりです:



34。継承に関する次のエラーは次のとおりです。 ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ _ 基本クラス
D. があります。ポリモーフィズムを構成できる基本クラス内の少なくとも 1 つの仮想関数
35。次のコードの出力値は何ですか:

int main(int argc, char **argv)
int a[4 ] = {1 , 2, 3, 4};
int *ptr = (int *)(&a + 1) B .1 C.2 D.4
解決策:
答え D. Horse Racing Network を参照してください:
配列とポインターについての理解を調べてください。ポインターが 1 ずつ増加するかどうかは、その型によって決まります。 int*ptr=(int*)(&a+1); &a と a は両方とも、配列の最初の要素のアドレスを参照します。違いは、a は a+0、*(a+0) は a[0]、&a+1 は a[] 配列型のポインタに 1 を加算するのと同等であり、ポインタは末尾に追加されることです。配列の。 ptr が受け付けられた後は、Ptr の型が int* であるため、ptr-1 は 4 バイトロールバックされます。つまり、最後の要素を指します。


36.下列可作为对象继承之间的转换的是:
A.static_cast
B.dynamic_cast
C.const_cast
D.reinterpret_cast
题解:答案B。
dynamic_cast:在基类和派生类之间的转换,继承体系安全向下转型或跨系转型,找出某对象占用内存的起始点。static_cast:同旧式C转型,如int 到double。const_cast:常用于去除某个对象的常量性。reinterpret_cast
不具备移植性,常见用途是转化函数指针类型。

37.下列是获得实例化对象所属类名字的函数是:
A.get_class_methods()
B.get_class()
C.get_classname()
D.get_object_vars()
题解:答案B。PHP中没有get_classname()函数,其他如下:
get_class ? Returns the name of the class of an object
get_object_vars ? Gets the properties of the given object
get_class_methods ? Gets the class methods' names


(二) 编程题:

1.计算器的新功能
可视化程序设计一个新功能的计算器,输入一个数时,能将这个数分解为一个或多个素因子乘积的形式,并按素因子的大小排列显示出来,0-9这十个数字表示如下:每个数字占5*3大小的字符区域。

输入:多组测试数n(n<=1,000,000)
输出:每个数分成若干个素数乘积形式,从小到大输出。素因子之间用"*"形式连接。
例:
输入:
10
2
输出:

 -     -       |   |       -  *  -     |       |     -     -         -       |     -     |       -  
首先需要计算素数组成,然后难点是怎样将数字一次性从上往下显示出来。
参考:


2.研究生考试
政治100分,英语100分,数学150分,专业课150分。政治、英语要求单科不低于60分,数学、专业课要求单科不低于90分,总分不低于310分。总分350以上(含350)为公费,310-349分为自费。
请编程判断考生情况。

输入:正整数N,表示N组测试数据。每组4个正整数分:政治、英语、数学、专业
输出:Fail/Zifei/Gongfei
例:
3
61 62 100 120
80 80 120 100
55 90 130 130
输出:
Zifei
Gongfei
Fail

PS:该题目比较简单,基本为送分题。同时希望该部分题目对你有所帮助!再次声明,此部分为我一边做题一边抄在纸上,所以有些遗漏的地方,请原谅~


二. 面试过程

面试时间:2015年10月9日
面试部门:服务器端开发
面试地点:360大厦
面试时长:100多分钟
PS:过程中可能存在一些遗漏的地方,但是还是非常感谢那个面试的哥哥,今天都还觉得给人很舒服的感觉。同时因为间隔时间太长,最近也太忙,不准备采用对话方式进行,而是分几个步骤进行简单叙述。

第一部分 自我介绍
1.首先简单问候面试官并递上自己的简历,然后做个自我介绍;

2.面试官通过我的简历,让我介绍自己最拿得出手的项目,我介绍的是知识图谱相关的项目,包括:传统搜索引擎的工作原理、知识图谱概念(举例姚明身高、梁启超关系查询)、实体消歧与实体对齐、采用的VSM向量模型及聚类算法;

3.面试官问我该阶段主要熟悉什么语言?我说现在做得最多的是Python,以前是C/C++,当然Java、C#、PHP都做过,毕竟语言都有通性,但是想精通还是难。

4. 彼は、PHP は基盤となるサーバーの分野にあると言い、主に Unix 関連の知識について尋ねました。PHP はいくつかのオープンソース フレームワークを通じて実装できるため、私もこの意見に同意します。 WAMP ウェブサイトで作成したいくつかの質問について質問しました。 1. 面接官は最初に、私が UNIX 関連のことをしたことがあるかどうかを尋ねました。 Linux 上で Python クローラーとスクリプトを実行しただけだと言いました。

2. 次に、Unix でのネットワーク プログラミングを知っているかどうか尋ねました。 PythonのネットワークプログラミングTCPUDPのプロセスを簡単に紹介しましたが、主なプロセスは次のとおりです。同時に、他のSocket言語のプロセスも基本的に同様です。

サーバー: SS = SOCKET ()# サーバーソケットを作成します

ss.bind ()# ソケットにアドレスバインドします
SS.Listen ()#







= ss.accept( )#クライアント接続ブロッキングタイプ:プログラムは、
のsのsを接続する前に停止状態にあります。 's を使用するには、's' を使用してサーバーに接続してみます
use with through using ''s ' through 's ' through ‐ ‐ ‐‐ ‐‐‐‐ #クライアントソケットを閉じる # クライアントソケットを閉じます # クライアントソケットを閉じる 例外が発生します。サーバーはこの例外をどのようにキャッチしますか。そこで私は、クライアントから一定時間メッセージが届かない場合、切断や異常エラーとなる時点(ハートビート)をサーバー側で設定できるようにすることを提案しました。彼は私に、このrecv()関数を書いてもいいかと尋ねました。私はそうではないと言いました。
P.S.しかし、私が Unix でのネットワーク プログラミングを知らないのは事実です。

4. インタビュアーは Unix におけるフォーク関連の知識についてさらに質問しましたが、私はその知識に触れたことはないと答えました。私の英語が下手すぎて、何なのかわからない英語もあります〜

:​ ​​​​​​​​​​​ ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​”””””” 「――はい、でもかなり忘れてしまいました。」 確かに基礎的な知識をたくさん忘れていて、答えられるか心配です。

2.面试官给我一张纸,有两段很长的代码(C语言),让我寻找两代码的区别。
这两段代码的主要区别就是参数一个是int,一个是double,当然前面还定义了些结构,代码里面的内容基本类似,相当于一个int型排序,一个double型排序。
他问我平时肯定会遇到这种情况,写两个函数代码过于冗余,怎样提炼成实现两种不同的类型排序,而且类型可以是float、结构体等等。
我说这有点类似于C++的模板啊!如果是C++就简单了,但是C语言主要是怎样判断这个类型呢?
PS:后来回来想了想,感觉类似于qsort快速排序的那种写法,通过const void *a实现,不知道是不是。但有同学怀疑是不是考察##的连接用法。
int型快排
int cmp1(const void *a, const void *b)
{
return *(int*)a - *(int*)b;
}
qsort(num, len, sizeof(int), cmp1);
double型快排
int cmp(const void *a, const void *b)
{
return *(double*)a > *(double*)b ? 1 : -1;  
        }  
        qsort(num, sum, sizeof(double), cmp); 
        char型快排
        int cmp(const void *a, const void *b)  
        {  
             return *(char*)a - *(char*)b;  
        }   
        qsort(str, sum, sizeof(char)*10, cmp);

        3.上面代码没有写出来,那么你就做个最简单的吧!二叉树中序遍历非递归实现。
        他又问我以前是怎么做的?我说通常都是三句话递归,这个题主要是考察通过栈模拟二叉树遍历递归的过程,然后写代码中。我失误了,栈写成队列了,然后队列是先进先出,又通过两个队列(一个输入队列、一个输出队列)模拟了一个栈实现了非递归遍历。
        中序遍历:左孩子-根节点-右孩子,总体代码如下。参考
        递归代码

void inOrder1(BinTree *root)      //递归中序遍历{    if(root!=NULL)    {        inOrder1(root->lchild);        cout<<root->data<<" ";        inOrder1(root->rchild);    }} 

        非递归遍历
        根据中序遍历的顺序,对于任一结点,优先访问其左孩子,而左孩子结点又可以看做一根结点,然后继续访问其左孩子结点,直到遇到左孩子结点为空的结点才进行访问,然后按相同的规则访问其右子树。因此其处理过程如下:
        对于任一结点P,
        1)若其左孩子不为空,则将P入栈并将P的左孩子置为当前的P,然后对当前结点P再进行相同的处理;
        2)若其左孩子为空,则取栈顶元素并进行出栈操作,访问该栈顶结点,然后将当前的P置为栈顶结点的右孩子;
        3)直到P为NULL并且栈为空则遍历结束

void inOrder2(BinTree *root)      //非递归中序遍历{    stack<BinTree*> s;    BinTree *p=root;    while(p!=NULL||!s.empty())    {        while(p!=NULL)        {            s.push(p);            p=p->lchild;        }        if(!s.empty())        {            p=s.top();            cout<<p->data<<" ";            s.pop();            p=p->rchild;        }    }    } 
        如下图所示:


        第四部分 结束面试
        1.面试官问我最近在看什么书?我说《Python核心编程》和《Web数据挖掘》,然后问我有没有看过Unix的书籍,我说看过《Unix编程艺术》前两章。他就给我推荐了三本书,希望我回去看这三本,其他可以放一边了,那些都是小儿科了。
       《Unix高级环境编程》《TCP\IP协议》《Unix网络编程》
        PS:这三本数都是Unxi传奇W.Richard Stevens的作品,当时以为推荐书,有面试了100分钟以为有戏。可惜了,哈哈~

        2.然后又问我有什么问题,我说想自己实现个小的搜索引擎系统;他给我分析了硬件设备、分词、索引、倒排序、Rank、推荐系统等等知识。

3. 結局、外に出て15分ほど待ってもらいました 結局、その日は忙しかったらしく、方向性が合わず断られました。しかし、私は彼から多くのことを学べたことにすでに満足していますが、その一方で、私は無作為に PHP の方向に応募し、面接を受けることができなかった自分自身の欠点にも深く気づきました。私がこの方向に応募したことを知っています。

3。学校に戻る前に、798アートファクトリーのすぐ隣に360カンパニーがあるので、3時間以上行ってきました。次のような内容を書いてください:
「今朝、面接のために 360 に来ました。おそらくひざまずいていましたが、それでも価値のある旅でした。プログラミングの仕方を知っているかどうかはわかりませんが、次に 798 に行きました。

何も考えず、何もせず、隅っこでただ静かに座って、人々が絶え間なく流れていくのを眺めているこの感覚がとても気に入っています。お気楽〜

私は旅行が好きではないので、外に出て世界を見なければなりません。でも、少なくとも私は井の中の蛙であることに問題はないと思うことがあります。毎日、月に向かって。頻繁に調査される問題は次のとおりです。


1. ソケット通信、TCPUDP、同期および非同期ソリューション。
2. バイナリ ツリー トラバーサル (非再帰を含む) を含む、基本的なアルゴリズムとデータ構造の質問、クイックソート(手書きコード)、リンクリストフリップなど
3. プロセスとスレッドの違い、スレッドについて記述したかどうか、同期、相互排除、その他の問題を解決する方法
4. プロキシなどのデザインパターン。モード (画像閲覧サムネイル)、ファクトリー モード、オブザーバー モデルなど

5. Cookie とセッション、キャッシュされたコンテンツなどの違い、Android とフロントエンド開発に関するよくある質問

6. バックエンド開発でよくある質問UnixLinux + C 言語 + ネットワーク通信の知識について質問します

7. Python は、クローラー、正規表現、オープンソース フレームワーク Spider、Docker、スレッド通信などについても質問します
8. 自然言語処理、分類されたクラスター、検索についても質問されます。エンジン、推薦システムなど; あらゆる種類のポジションに応募するのではなく、よく知っているものでなければなりません。
2. 履歴書に記載されているプロジェクトに精通しており、その内容を説明できる必要があります。プロジェクト; 3. 仕事を見つけるには早すぎる場合は、Linux および Unix でのプログラミングを学ぶことをお勧めします 4. ネットワーク通信についてよく質問されます。簡単なものは、TCP、DPSocket プログラミング、3 ウェイ ハンドシェイクです。など。さらに詳しく説明すると、Unix 関連の知識が必要になります。 5. アルゴリズムは非常に重要です。時間があれば必ず実行してください。
LeetCode
の質問は、実際に多くの企業の筆記試験の面接の質問から出てくるものです。リンク リストの反転、文字列の類似性の判断、バイナリ ツリーの非再帰など
6. 可能であれば、いくつかの詳細なプロジェクトに取り組み、それらを履歴書に含めるようにしてください。 「または MySQL データベース」は、「Linux でのネットワーク プログラミングに精通しており、Spider または XX フレームワークを通じて分散クローリングを実行したことがある」ほど優れていないことは明らかです。履歴書をより専門的でハイレベルなものにするようにしてください。
7. オープンソース プロジェクトが存在するか、ソース コードとドライバーを研究したことがあればベストですが、明らかにそれを行っている人はほとんどいません。 对章 最後に、この記事があなたのお役に立てれば幸いです。足りないところや間違っているところがあれば、ぜひハイハンも誘ってください~皆さんもお気に入りの作品を見つけてください。
最近、この記事を書くのは簡単ではありません。明日は筆記試験と面接がいくつかありますが、まだ戻って教えたいと思っています。私の生涯の夢がどこにあるのかはわかりませんが、どこにいても、何をしていても、学び続け、正常な心と健康な体で生きなければなりません。はは、さあ〜
(投稿者:Eastmount 2015-10-17 2:30 深夜)








著作権声明: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。