search
HomeBackend DevelopmentPHP TutorialAnalysis of some answers to '2019 Xiaomi Spring Shanghai PHP Intern Recruitment Interview Questions'

Related recommendations: "2019 PHP interview questions summary (collection)"

1 丶How to achieve load balancing in Nginx

This is relatively simple

1. Polling

This is the default strategy, which allocates each request to a different server one by one in order. , if the server hangs up, it can be automatically eliminated.

upstream  fengzp.com {   
    server   192.168.99.100:42000; 
    server   192.168.99.100:42001;  
}

2. Minimum connections

Assign requests to the server with the fewest connections

upstream  fengzp.com {   
    least_conn;
    server   192.168.99.100:42000; 
    server   192.168.99.100:42001;  
}

3. Weight

Use weight to specify the server access ratio. The default weight is 1. The following configuration will cause the access ratio of server2 to be twice that of server1.

upstream  fengzp.com {   
    server   192.168.99.100:42000 weight=1; 
    server   192.168.99.100:42001 weight=2;  
}

4.ip_hash

Each request will be allocated according to the hash value of the access ip, so that consecutive web requests from the same client will be distributed to the same server for processing , which can solve the session problem. If the server hangs up, it can be automatically eliminated.

upstream  fengzp.com {   
    ip_hash;
    server   192.168.99.100:42000; 
    server   192.168.99.100:42001;  
}

ip_hash can be used in combination with weight.

2 丶Commonly used commands in Linux

Reference article:https://www.php.cn/linux-415502.html

3 丶Commonly used components in WeChat mini programs

view 丶text 丶button 丶navigator 丶scroll-view...etc.

4丶How to configure virtual host with Nginx

Reference article:https://www.php.cn/php-weizijiaocheng-387454.html

5 Differences between TP5 and Laravel framework

Reference article:https://www.php.cn/phpkj/thinkphp/422769.html

6丶Data migration in TP5 and Laravel framework

Reference article:

https://www.php.cn/js-tutorial-386843 .html

https://www.php.cn/phpkj/laravel/414216.html

7 丶Explanation of RBAC model

What is RBAC

RBAC (role-based access control): English name Rose base Access Controller. This blog introduces the permission system design of this model. The direct association between users and permissions has been cancelled, and user permissions have been granted indirectly through user-associated roles and role-associated permissions. This achieves decoupling. RBAC is divided into the following versions during its development process. RBAC0, RBAC1, RBAC2, RBAC3.

8 丶Process of order module

9 丶Operations after successful order payment

10 丶Settings Email activation connection expiration time

When writing the activation code into the database, write the timestamp expiration time

11 丶The difference between Redis and Mongodb

1. Performance

is relatively high, and performance should not be a bottleneck for us.

Generally speaking, redis and memcache are similar in terms of TPS.

2. Convenience of operation

redis added its own VM features after version 2.0, breaking through the limitations of physical memory; you can set the expiration time for the key value ( Similar to memcache).

mongoDB is suitable for the storage of large amounts of data. It relies on the operating system VM for memory management and consumes a lot of memory. The service should not be combined with other services.

4. Availability (single point problem)

For single point problem:

redis relies on the client to implement distributed reading and writing; main When replicating from a slave, each time the slave node reconnects to the master node, it must rely on the entire snapshot. There is no incremental replication. Due to performance and efficiency issues, the single-point problem is more complicated; automatic sharding is not supported, and a consistent hash mechanism needs to be set by the program.

An alternative is to use redis's own replication mechanism and use active replication (multiple storage), or change to incremental replication (which needs to be implemented by yourself). Consistency issues and performance issues trade off.

mongoDB supports master-slave, replicaset (using paxos election algorithm internally, automatic failure recovery), auto sharding mechanism, and shields the failover and sharding mechanism from the client.

5. Reliability (persistence)

For data persistence and data recovery, redis supports (snapshot, AOF): relies on snapshots for persistence, aof enhancement While improving reliability, it also has an impact on performance. MongoDB has adopted the binlog method since version 1.8 to support persistence reliability.

6. Data consistency (transaction support)

redis transaction support is relatively weak and can only ensure that each operation in the transaction is executed continuously. MongoDB does not support transactions.

7. Application scenarios

redis: more performance operations and calculations with smaller amounts of data

MongoDB: Mainly solves the problem of access efficiency of massive data

12 丶The difference between redis and memcached

Reference article:https://www. php.cn/mysql-tutorials-410551.html

13 丶Queue in redis

There are two ways to implement the redis queue :

1. Producer-consumer model.

Normal version:

For example, in a queue, producer A pushes a data into it, and consumer B pops the data, but the queue is still empty. So it's one to one.

As for first-in-first-out or first-in-last-out, etc., you can follow the function lpush (push one data from the left side of the queue, that is, the head of the queue) rpush (push one data from the right side of the queue, that is, the tail of the queue) lpop (same as management) rpop etc. to control.

Blocking version:

But the above command returns immediately, regardless of whether there is data or not. There is an enhanced version of lpop for fetching data, blpop (block left pop) blocking version,

Usage: blpop key1 key2 ... keyn 10

Pre-obtain the values ​​of multiple keys at the same time, and set the timeout to 10s. If all keys or some keys have values, they will be returned immediately. If If all keys have no value, block for 10 seconds and return

2. Publisher-subscriber mode.

Concept:

Three users A, B, and C subscribe to a channel named msg at the same time, and then the publisher publishes a data to the channel of msg, then A ,Three users B and C will receive the data.

Note:

Obviously, three users ABC need to be blocked. How to receive subscribed data must rely on the callback function registered in redis.

The published data will not be reproduced in redis, which means that after it is published, A, B, and C did not receive it due to various reasons.

14 丶Data types in redis

Redis supports five data types: string (string), hash (hash), list (list), set (set) and zset (sorted set: ordered set).

15 丶Events in the TP framework

16 丶The dependency injection of the TP framework

is no different from Laravel

17 丶MySQL read-write separation operation

Reference article:https://www.php.cn/mysql-tutorials-360278.html

18 丶The difference between database varchar and char

varchar will reclaim unused space

19 丶The difference between MyIsam and InnoDB

1. MyISAM: The default table type, which is based on the traditional ISAM type. ISAM is the abbreviation of Indexed Sequential Access Method (indexed sequential access method). It is a standard method for storing records and files. . It is not transaction safe and does not support foreign keys. If you execute a large number of selects, insert MyISAM is more suitable.

2. InnoDB: an engine that supports transaction security. Supporting foreign keys, row locks, and transactions is its biggest feature. If there are a large number of updates and inserts, it is recommended to use InnoDB, especially for multiple concurrency and high QPS situations.

1. Table lock differences

MyISAM:

myisam only supports table-level locks. When users operate myisam tables , select, update, delete, and insert statements will automatically lock the table. If the locked table meets insert concurrency, new data can be inserted at the end of the table. You can also lock the table through the lock table command. This operation can mainly simulate transactions, but it is very expensive and is generally only used in experimental demonstrations.

InnoDB:

Innodb supports transactions and row-level locks, which is the biggest feature of innodb.

ACID properties of transactions: atomicity, consistent, isolation, durable.

Several problems caused by concurrent transactions: lost updates, dirty reads, non-repeatable reads, and phantom reads.

2. Database file differences

MyISAM:

myisam belongs to the heap table

myisam is on the disk There are three files on the storage, each file name starts with the table name and the extension indicates the file type.

.frm is used to store table definitions

.MYD is used to store data

.MYI is used to store table indexes

myisam tables also support three Different storage formats:

Static table (default, but please note that there must be no spaces at the end of the data, it will be removed), dynamic table, and compressed table.

InnoDB:

innodb is an index-organized table

innodb has two storage methods, shared table space storage and multi-table space storage

The table structure of the two storage methods is the same as myisam, starting with the table name and the extension is .frm.

If you use a shared table space, then the data files and index files of all tables are stored in one table space. One table space can have multiple files. Set the location and location of the shared table space through the innodb_data_file_path and innodb_data_home_dir parameters. Name, generally the name of the shared table space is ibdata1-n.

If multiple table spaces are used, then each table has a table space file to store the data and indexes of each table. The file name starts with the table name and has an extension of .ibd.

3. Index differences

1. About automatic growth

The automatic growth column of myisam engine must be an index. If It is a combined index. The automatic growth does not need to be the first column. It can be sorted and then incremented based on the previous columns.

The automatic growth of the innodb engine must be an index. If it is a composite index, it must also be the first column of the composite index.

2. About primary keys

myisam allows tables without any indexes and primary keys to exist.

Myisam’s indexes are all addresses where rows are saved.

If the innodb engine does not set a primary key or a non-empty unique index, it will automatically generate a 6-byte primary key (invisible to the user)

The innodb data is part of the primary index, appended The index holds the value of the main index.

3. About the count () function

myisam saves the total number of rows in the table. If count(*) from table; is selected, the value will be taken out directly

innodb does not save the total number of rows in the table. If you use select count(*) from table; it will traverse the entire table, which consumes a lot of money. However, after adding the where condition, myisam and innodb handle it in the same way.

4. Full-text index

myisam supports full-text index of FULLTEXT type

innodb does not support full-text index of FULLTEXT type (has been supported since 5.6) , but innodb can use the sphinx plug-in to support full-text indexing, and the effect is better. (sphinx is an open source software that provides API interfaces in multiple languages ​​and can optimize various mysql queries).

5.delete from table

When using this command, innodb will not re-create the table, but delete the data one by one. If you want to clear it on innodb It is best not to use this command when saving tables with large amounts of data. (It is recommended to use truncate table, but the user needs to have the permission to drop this table).

6. Index saving location

The indexes of myisam are saved in .MYI files with table names.

Innodb indexes and data are stored together in the table space.

20 丶There are several indexes in MySQL

1. Ordinary index

The most basic index is just to speed up improve query speed.

2. Unique index

is similar to an ordinary index, except that the column value of the index must be unique, but null values ​​are allowed, that is, null. If Combination index, the combination of column values ​​must be unique.

3. Primary key index

is our commonly used primary key id. It is a special unique index that does not allow null values. It is usually created at the same time when creating a table. Create primary key index.

Features:

1) A table has only one primary key index

2) The primary key requires auto-increment

4. Combined index

That is, an index established by multiple fields

5. Full-text index

fulltext

myisam engine support

6. Foreign keys

Things to note when establishing foreign keys:

1) The table engines must be the same

2) The field types must be the same

3) The length must be the same

4) The storage range must be the same

5) The constraint field must appear in the referenced field

The above is the detailed content of Analysis of some answers to '2019 Xiaomi Spring Shanghai PHP Intern Recruitment Interview Questions'. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:learnku. If there is any infringement, please contact admin@php.cn delete
PHP's Purpose: Building Dynamic WebsitesPHP's Purpose: Building Dynamic WebsitesApr 15, 2025 am 12:18 AM

PHP is used to build dynamic websites, and its core functions include: 1. Generate dynamic content and generate web pages in real time by connecting with the database; 2. Process user interaction and form submissions, verify inputs and respond to operations; 3. Manage sessions and user authentication to provide a personalized experience; 4. Optimize performance and follow best practices to improve website efficiency and security.

PHP: Handling Databases and Server-Side LogicPHP: Handling Databases and Server-Side LogicApr 15, 2025 am 12:15 AM

PHP uses MySQLi and PDO extensions to interact in database operations and server-side logic processing, and processes server-side logic through functions such as session management. 1) Use MySQLi or PDO to connect to the database and execute SQL queries. 2) Handle HTTP requests and user status through session management and other functions. 3) Use transactions to ensure the atomicity of database operations. 4) Prevent SQL injection, use exception handling and closing connections for debugging. 5) Optimize performance through indexing and cache, write highly readable code and perform error handling.

How do you prevent SQL Injection in PHP? (Prepared statements, PDO)How do you prevent SQL Injection in PHP? (Prepared statements, PDO)Apr 15, 2025 am 12:15 AM

Using preprocessing statements and PDO in PHP can effectively prevent SQL injection attacks. 1) Use PDO to connect to the database and set the error mode. 2) Create preprocessing statements through the prepare method and pass data using placeholders and execute methods. 3) Process query results and ensure the security and performance of the code.

PHP and Python: Code Examples and ComparisonPHP and Python: Code Examples and ComparisonApr 15, 2025 am 12:07 AM

PHP and Python have their own advantages and disadvantages, and the choice depends on project needs and personal preferences. 1.PHP is suitable for rapid development and maintenance of large-scale web applications. 2. Python dominates the field of data science and machine learning.

PHP in Action: Real-World Examples and ApplicationsPHP in Action: Real-World Examples and ApplicationsApr 14, 2025 am 12:19 AM

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP: Creating Interactive Web Content with EasePHP: Creating Interactive Web Content with EaseApr 14, 2025 am 12:15 AM

PHP makes it easy to create interactive web content. 1) Dynamically generate content by embedding HTML and display it in real time based on user input or database data. 2) Process form submission and generate dynamic output to ensure that htmlspecialchars is used to prevent XSS. 3) Use MySQL to create a user registration system, and use password_hash and preprocessing statements to enhance security. Mastering these techniques will improve the efficiency of web development.

PHP and Python: Comparing Two Popular Programming LanguagesPHP and Python: Comparing Two Popular Programming LanguagesApr 14, 2025 am 12:13 AM

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

The Enduring Relevance of PHP: Is It Still Alive?The Enduring Relevance of PHP: Is It Still Alive?Apr 14, 2025 am 12:12 AM

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor