【转】php 软件工程师
【转】php 程序员
http://www.blags.org/php-programmer/
?
?
?
最近去了tencent,xunlei等互联网名企面试,总结一下:
?
如果想进入这类企业进行底层开发的话必须对互联网各方面的技术原理了解的很清楚,例如apache实现原理。语言方面既然是php开发自然对c/c++要求比较高。往往需要自己写php扩展。使用mysql自然想很多常见的,性能瓶颈要能有很好的解决方案。mysql 插件编写,apache模块编写。联系起来结合点还是要会c。
倘若是做中间层和前端工作则要求对css,javascript要求比较高。当然对web的一系列实现原理也是要非常熟悉的。
对新技术要比较敏感,才能证明你有很好的学习能力和使用能力。
努力提高自己的英文口语,和阅读能力。往往很多新技术都是老外想出来的。等有了中文版也许这个技术已经不是那么新了。
相信我们很多人都只是了解到中间的皮毛而已,对于技术原理。这类型的东西了解甚少。值得注意的一点,正则这个东西在他们严重也是很重要的。
?
想成为一位合格的php程序员(高级),必须符合如下条件。
?
◆ 文件目录处理函数包80%以上的函数的功能的灵活运用。
◆ 日期时间函数中的80%以上的函数的功能的灵活运用
◆ 数学函数库中的100%的内容。
◆ 网络库中的60%以上的内容,对各个函数的功能比较熟悉。
◆ 字符串处理函数下的60%以上的内容,特别是各种处理函数。
◆ 正则表达式函数下的90%以上的内容,特别是各种正则处理
◆ 一些安全库下的40%以上的内容,如果对于安全没有接触的话根本就不可能掌握PHP
◆ XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。
◆ 图形图像函数库下的80%以上的内容,特别是一些图像生成和处理
◆ MySQL 数据库函数下的90%以上的内容,特别是处理各种数据的函数
◆ 数组处理函数下的90%以上的内容,特别是各种操作处理函数
◆ 其它PEAR,PECL,和一些扩展类库中的80%以上的内容,特别是一些常用的类的处理
◆ 针对不同的需求,查找不同的函数库。
◆ 测试:必须熟悉使用phpunit编写测试用例完成代码的自动测试。
◆ 管理:必须熟悉使用xinc, phing等完成工程管理的常用任务,例如工程编译、生成phpdoc、生成、版本控制、自动测试。
◆ 排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。
◆ 思想:必须掌握OOP的主要要求,这样使用PHP开发的系统才能是真正的PHP系统。
◆ 规范:编写的代码必须符合流行的编码规范,这样程序的可读性才比较好。
◆ 博学:掌握OOA、OOD、YiiFramework 、Zendframework、cakephp、symfony、模板技术等流行技术,掌握软件架构设计思想、搜索引擎优化、缓存系统设计、网站负载均衡、系统性能调优等实用技术。
?
◆ 多去看别人写的代码,php优秀的框架很多,很多人在认知上就有一个错误。认为自己能用一个框架开发一个系统了就认为自己已经熟悉这个框架了,其实会使用他并没有什么一个框架基本都有用户手册,一看基本都会使用了,要想自己技术上面提升,建议多看看这些框架的实现原理(设计模式)。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

MySQLの起動が失敗する理由はたくさんあり、エラーログをチェックすることで診断できます。一般的な原因には、ポートの競合(ポート占有率をチェックして構成の変更)、許可の問題(ユーザー許可を実行するサービスを確認)、構成ファイルエラー(パラメーター設定のチェック)、データディレクトリの破損(テーブルスペースの復元)、INNODBテーブルスペースの問題(IBDATA1ファイルのチェック)、プラグインロード障害(エラーログのチェック)が含まれます。問題を解決するときは、エラーログに基づいてそれらを分析し、問題の根本原因を見つけ、問題を防ぐために定期的にデータをバックアップする習慣を開発する必要があります。

MySQLは、基本的なデータストレージと管理のためにネットワーク接続なしで実行できます。ただし、他のシステムとのやり取り、リモートアクセス、または複製やクラスタリングなどの高度な機能を使用するには、ネットワーク接続が必要です。さらに、セキュリティ対策(ファイアウォールなど)、パフォーマンスの最適化(適切なネットワーク接続を選択)、およびデータバックアップは、インターネットに接続するために重要です。

MySQLは、共有ロックと排他的ロックを使用して並行性を管理し、テーブルロック、ロウロック、ページロックの3つのロックタイプを提供します。 Row Locksは並行性を向上させ、for Updateステートメントを使用して排他的なロックを行に追加します。悲観的なロックは競合を想定し、楽観的なロックはバージョン番号を介してデータを判断します。一般的なロックテーブルの問題は、スロークエリとしてマニフェストします。ShowProcessListコマンドを使用して、ロックが保持しているクエリを表示します。最適化測定には、適切なインデックスの選択、トランザクションスコープの削減、バッチ操作、およびSQLステートメントの最適化が含まれます。

MySQLデータベース操作では、文字列処理は避けられないリンクです。 Substring_index関数はこれのために設計されており、セパレータに基づいてサブストリングを効率的に抽出できます。 substring_index関数アプリケーションの例次の例は、substring_index関数の柔軟性と実用性を示しています。たとえば、URLから特定の部分を抽出します。たとえば、ドメイン名を抽出します:selectsubstring_index( 'www.mysql.com'、 '。'、 '、2);ファイル拡張子を簡単に取得するには、ファイル拡張子を簡単に取得します:SelectSubstring_index( 'file.pdf'、 '。'、 - 1);処理は存在しません

MySQLプライマリキーは、データベース内の各行を一意に識別するキー属性であるため、空にすることはできません。主キーが空になる可能性がある場合、レコードを一意に識別することはできません。これにより、データの混乱が発生します。一次キーとして自己挿入整数列またはUUIDを使用する場合、効率やスペース占有などの要因を考慮し、適切なソリューションを選択する必要があります。

MySQLはJSONデータを返すことができます。 json_extract関数はフィールド値を抽出します。複雑なクエリについては、Where句を使用してJSONデータをフィルタリングすることを検討できますが、そのパフォーマンスへの影響に注意してください。 JSONに対するMySQLのサポートは絶えず増加しており、最新バージョンと機能に注意を払うことをお勧めします。

生産環境の場合、パフォーマンス、信頼性、セキュリティ、スケーラビリティなどの理由により、通常、MySQLを実行するためにサーバーが必要です。サーバーには通常、より強力なハードウェア、冗長構成、より厳しいセキュリティ対策があります。小規模で低負荷のアプリケーションの場合、MySQLはローカルマシンで実行できますが、リソースの消費、セキュリティリスク、メンテナンスコストを慎重に考慮する必要があります。信頼性とセキュリティを高めるには、MySQLをクラウドまたは他のサーバーに展開する必要があります。適切なサーバー構成を選択するには、アプリケーションの負荷とデータボリュームに基づいて評価が必要です。

MySQLとMariaDBは共存できますが、注意して構成する必要があります。重要なのは、さまざまなポート番号とデータディレクトリを各データベースに割り当て、メモリ割り当てやキャッシュサイズなどのパラメーターを調整することです。接続プーリング、アプリケーションの構成、およびバージョンの違いも考慮する必要があり、落とし穴を避けるために慎重にテストして計画する必要があります。 2つのデータベースを同時に実行すると、リソースが制限されている状況でパフォーマンスの問題を引き起こす可能性があります。
