个人和企业

Introduction

Introduce yourself briefly.

  1. Name, hometown.
  2. Educational background, from undergraduate to postgraduate.
  3. Intership experience. When, where, do what, briefly in just one sentence.
  4. Project experience. One best project in university.
  5. Skills and advantage.

What do you know about Morgan Stanley?

Morgan Stanley is a highly respected global financial services firm with a long history of success. And it has also been in China for many years.

Morgan Stanley has 5 core company values:

  • Do the Right Thing. We should do things we are supposed to do first.
  • Put Clients First. Serving clients is our mission.
  • Lead with Exceptional Ideas. We discover and follow the unique and fantastic ideas.
  • Commit to Diversity & Inclusion. Morgan Stanley is open for people all over the world, from all different culture. Every ideas is welcome here.
  • Give Back. We grows from the society and eventually are supposed to give back to society.

I really like Morgan Stanley’s company culture, especially diversity. That’s why I really want to get an oppotunity to work as an intern in Morgan Stanley.

about morgan stanley technology department

Morgan stanley technology department is responsible for developing and mananing the technology systems used by the company.

To be honest, I heard about morgan stanley technology department for the first time, until I attended a presentation which introduce about morgan stanley and the job at technology department last year. After that I knew technology department is doing 3 primary work.

  1. develop and manage the platform, like trading platform. Optimizing tools for our clients to use.
  2. do some big data analysis, to deliver unique market insights to our client
  3. ensure the safety of our system, protect the platform against cyber attacks

And as I know, our technology department are using many new technologies to build a modern system with high efficiency, which is opposite to my original impression of financial firms. That is because Morgan Stanley cares about technology innovation, that’s one of the reasons I want to join Morgan Stanley.

Why do you choose Morgan

When I choose the company which I’d like to work in, I really care about the company’s values. I very like Morgan Stanley’s 5 core company values, especially diversity.

Diversity means Morgan Stanley is open for people all over the world, from all different culture. And Morgan Stanley is respectful to any different ideas and opinions from anyone.

As for me, it’s very cool for me to listen to lots of different voices and opinions on the team. I think that individual thinking is always limited, and I prefer working and thinking with people who have many different opinions, so that we can come up with more fantastic ideas.

formulated any plan for your career?

Yes, I have made a plan for my career. And it consists of three goals.

My short-term goal is to find an internship which suits me, and to complete the course of my master-program at university. To achieve this goal, I have to work hard at university and attend more events to improve myself.

My medium-term goal is to find a job with work-life balance. I hope I can find a field I am good at and interested in and become a senior software engineer in that field. To achieve this goal, I have to keep learning and communicating with my colleagues and my future leader.

And my long-term goal is to become a manager of a technology team. Because I am interested in software management, I would like to challenge myself and try to lead a team to achieve more. To achieve this goal, I need to read much more books about management, and learn the experience from my future leader. I also need a wide network of people, so I will be happy to talk with more people, from different cultures and different places.

handle a different opinion with your teammates

Firstly, I’d like to highlight the fact that different opinion with teammates is not always an awful thing. I think that everyone could have his own unique understanding of anything.

So, if one of my teammates hold a different opinion with me, I will be very happy to know how he understands the problem, and what his solution is. And I will also tell him my opinion, so that we can discuss on the problem maybe we can come up with a better solution together. Maybe he notices some details that I didn’t notice, so his opinion may be better than mine, or at least have some better points.

I think my individual power is limited, so I will be very happy if others tell me that they have a different opinion. I believe that discussing makes the final solution better and better.

技术

sorting algorithms

I know many commonly used sorting algorithms.

  1. Bubble Sort: It’s a simple algorithm that repeatedly steps through the list, compares adjacent elements, and swaps them if they are in the wrong order. The pass through the list is repeated until the list is sorted.
  2. Selection Sort: It sorts an array by repeatedly finding the minimum element from unsorted part and putting it at the beginning.
  3. Insertion Sort: It’s a simple sorting algorithm that builds the final sorted array one item at a time. It is much less efficient on large lists than more advanced algorithms such as quicksort, heapsort, or merge sort.
  4. Merge Sort: It is a divide-and-conquer algorithm. Firstly we divide the input array into two halves, call merge sort itself for the two halves, we will get two sorted subarrays after that. Finally we merge the two sorted halves.
  5. Quick Sort: It’s also a divide-and-conquer algorithm. Firstly we select a pivot element and partition the other elements into two sub-arrays, according to whether they are less than or greater than the pivot. Then sub-arrays are sorted recursively.
  6. Heap Sort: another commonly used sorting algorithm. it use a data structure called binary heap. Firstly we build a max heap, which means the root of the heap is always the maximum num in the array. Then we repeatedly swap the root of the heap with the last element of the heap, reduce the heap size and heapify the root of the new heap.

Time Complexity: For example, merge sort has a time complexity of Onlogn in all 3 cases, which are the best case, the worst case and the average case).

hashmap and prevent collision

A HashMap is a data structure that allows us to store and retrieve values using a key-value mapping. It is implemented using an array and a hash function, which maps each key to an index in the array.

In a HashMap, collisions occur when two or more keys map to the same index in the array. To prevent collisions, there are two common techniques:

  1. Open Addressing: In open addressing, when a collision occurs, the algorithm looks for the next available slot in the array and places the key-value pair there. We continue to look for the next one until we find an available slot.
  2. Separate Chaining: In separate chaining, when a collision occurs, instead of storing the key-value pair in the array slot, we create a linked list at that slot and append the new key-value pair to the end of the list.

TCP 3way handshake and 4-way handwave, why need 4-way

The three-way handshake and four-way handwave are used in TCP (Transmission Control Protocol) protocol to establish and terminate a connection between two network devices.

The three-way handshake is used to establish a connection, and it involves the following steps:

  1. The client sends a SYN (Synchronize) packet to the server, which indicate that it desire to establish a connection.
  2. The server responds with a SYN-ACK (Synchronize-Acknowledge) packet, indicating that it has received the client’s request and is willing to establish a connection.
  3. The client sends an ACK (Acknowledge) packet, confirming that it has received the server’s response and is ready to communicate.

Once the connection has been established, data can be transmitted between the two devices.

On the other hand, the four-way handwave is used to terminate a connection, and it involves 4 primary steps:

  1. The client sends a FIN (Finish) packet to the server, which indicate that it has no more data to send.
  2. The server responds with an ACK packet, confirming that it has received the FIN packet.
  3. The server sends a FIN packet to the client, indicating that it has no more data to send.
  4. The client responds with an ACK packet, confirming that it has received the server’s FIN packet.

When we want to close the connection, we need to use 4-way handwave, the reason is that both the client and server need to confirm that they have no more data to send before closing the connection. The first two steps of the four-way handshake ensure that the server has received all of the client’s data, and the last two steps ensure that the client has received all of the server’s data. Once both devices have confirmed that there is no more data to send, the connection can be closed safely.

tcp and udp

TCP (Transmission Control Protocol) and UDP (User Datagram Protocol) are two different transport layer protocols used in computer networks.

TCP is a connection-oriented protocol that provides reliable, ordered, and error-checked delivery of data. Before transmitting data It establishes a connection between two devices. And it ensures that all packets are received in the correct order and without errors. TCP is commonly used for applications that require reliable and ordered delivery of data, such as web browsing, email, file transfer, and so on.

On the other hand, UDP is a connectionless protocol. It provides unreliable and unordered delivery of data. It does not establish a connection before transmitting data and does not provide any guarantees that packets will be received in order or without errors. UDP is commonly used for applications that require low-latency and applications which don’t really care about the correctness of data, such as online gaming, video streaming, and so on.

pre-order and post-order traversal

Pre-order traversal and post-order traversal are two ways to traverse a binary tree, which means visiting every node in the tree exactly once.

In pre-order traversal, we firstly visit the root node, then recursively visit the left subtree, and finally recursively visit the right subtree. The order of visiting nodes in pre-order traversal is: root, left subtree, right subtree.

On the other hand, In post-order traversal, we first recursively visit the left subtree, then recursively visit the right subtree, and finally visit the root node. The order of visiting nodes in post-order traversal is: left subtree, right subtree, root.

Both pre-order and post-order traversal are depth-first traversal techniques. They are commonly used in tree-based algorithms such as binary tree operations.

Garbage Collection

Java is a programming language that uses automatic memory management, which means programmers don’t have to allocate and deallocate memory space for our objects manually. Instead, JVM automatically identifies and remove objects which are no longer needed by our application. And this process is called garbage collection.

The algorithms used to identify garbage are reference counting and tracing. In reference counting, it keeps a counter of references to an object, when the counter reaches 0, it is marked as garbage and will be collected by garbage collector soon. In tracing algorithm, it traces all objects among reference chain from a set of root objects, any objects that are not traced are considered garbage and will be collected.

After the garbage is marked, garbage collector need to remove them and free up memory space for other object. There are 3 algorithm to do this. The first one is copying algorithm. It divide the memory into 2 halves, when one half is almost full, it will copy the alive objects to another half. The second is mark and sweep algorithm. In mark and sweep, it directly sweep the memory space used by the objects that are not marked as alive. The third is mark and compact algorithm. In compact phase, it will move the object which is maked as alive to one end of the whole memory. Therefore, no memory gaps(clips) generate during the garbage collection process.

And there are some commonly used garbage collector, such as Serial, Serial Old, Parallel Scavenge and Parallel Old, CMS and G1. The first severial collectors use generational gc algorithm, which means the memory will be divided by young generation and old generation. On the other hand, G1 and collectors after G1 use regional gc algorithm which means they firstly divid the whole memory into many regions, some are young generation region and the others are old generation regions. The regions of the same generetion don’t need to be continuous.

As for me, I will choose collector according to concrete situation, but I perfer G1 collector because it is easy to config and justify, and it often has a low latency and high efficience.

stack overflow error

A statck overflow error in Java occurs when we call methods for too many times.

As we know, when we call a method, it will create a stack frame in java virtual machine stack, which stores the local variables, parameters and return values of the method.

If we call too many methods or create too many local variables, the call stack will exceeds its maximum size. This can happen when we call a method recursively, if the recursive calling is too deep, stack will be filled up and it will cause this error.

OOM error

OOM error refer to out of memory error. It can occur because of severial reasons.

  1. The first possible reason is that there’s no memory space to allocate for new object, or there is no space in old generation to place the objects prompted from young generation, even after full gc process.
  2. The second possible reason is that metaspace or permanent genaration, which is used to store loaded classes, run out of its free spaces because we have loaded too many classes.
  3. The third reason is that maybe we have created too many threads. As we know, when we create a thread in java, jvm will ask operating system to create a new native thread, corresponding to our jvm thread. If there is no space for operating system to create native thread, jvm will also throws an oom error.

Polymorphism

Polymorphism is a key concept in object-oriented programming, and it is supported in Java. In Java, polymorphism is achieved though two machanisms: method overloading and method overriding.

In method overloading, we can create multiple methods with the same name in the same class, but with different parameter lists. When we call that method, the actual implementation of the method is determined at compile-time, according to the parameters we provide. Some programming language don’t support method overloading such as C, Python and so on.

Overriding allows objects of different classes to be treated in the same way, if they have the same superclass or interface. When we call one of the object’s methods, the actual implementation of the method is determined at runtime, according to the actual type of the object.

DDoS

DDoS means Distributed Denial of Service, which is a type of cyber attack. In DDoS, lots of computers or devices are used to send a lot of traffic to a website of server, which makes it unavailable to normal users.

To protect our system against DDoS, we have many useful methods. For example, we can use CDN network to distribute traffic across multiple servers in mutiple places, which makes it much harder for attackers to overwhelm a single server. We can also increase our bindwidth, or we can ask some professional network service provider such as Cloudflare to protect our domain name and server behind it.

Singleton

The singleton pattern is a design pattern in object-oriented programming. It is used to make sure that only one instance of a class is created in a program.

If we want to apply singleton pattern to a class, first we need a private constructor of that class. This ensures that other classes can never create their own instance of this class. Then we need a private static instance of class and a public staic method to access the instance, for example we call it getInstance method. If the instance has not been created yet, getInstance method will create it actually once, and then return the existing instance after creating.

Singleton pattern is used very widely. For example, in Spring framework, every Bean is created and used as singleton by default.

How many addresses can be accessed in 5-bit?

fifth power of 2 addresses

OOD

OOD stands for Object-Oriented Design. It is the process of designing a program using object-oriented principles, such as encapsulation, inheritance, and polymorphism

KDD

KDD stands for Knowledge Discovery in Databases. It is the process of discovering meaningful information and patterns from large datatsets using data mining techniques, such as clustering, classification, association rule mining, characterization and so on.

For example, if we want to predict a new data’s type based on the existing datasets, we can use classfication method, such as decision tree or Beyesian classfication method. If we don’t actually know the category of data, but we want to know a new data is most similar to which cluster of data, we can use clustering method, such as k-means or density-based clustering.

in density-based clustering, we define the density core nodes and density reachable nodes. We also define Eps and Minpts, which means if a node has at least minpts neighbour in the range of Eps, it is a density core. If nodes can be reached by density core nodes, we can merge them into one cluster. Finally we get serveral cluster according to the density core nodes.

stack & heap

stack stores temporary data when we call methods, such as local variables, method arguments(实参) , and return addresses. This kind of data and stack memory allocation is already determined at compile-time. But for heap, heap is a region of memory that is used to store data which is dynamically allocated during runtime.

In addition, stack is managed automatically by the compiler and virtual machine, while heap is managed manually by the programmer. We can allocate and release the heap memory as we want. For example, We can use new keyword to ask JVM create and place our object on the heap.

Finally, because stack is a last in first out data structure, accessing data from the stack is fast, while accessing from the heap is slow.

index

Index is a data structure which can make database queries much faster. There are clustered index and non clustered index in database. cluster index determines the physical order of the data based on primary key, while secondary indexes are separate from the tables’ raw.

In secondary index, for each raw of the table, It stores values of some columns and the corresponding primary key. When executing queries with a where condition, the database can use the index to quickly locate the rows in the table which match the condition.

Some commonly used underline data structure is hashmap, B+ tree and so on. Mysql database’s InnoDB engine use B+ tree index, it doesn’t need too much space to store and has a high performance while accessing the data.

process & thread

Firstly, process is the unit that operating system allocate its resources, such as memory resource, file resource, network resource and so on. while thread is the unit that cpu allocate its execution time clip. It means that each process has its own memory space and system resources while multiple threads of the same process shares the memory space and system resources with the process.

Secondly, a process can consist of multiple threads, while a thread must belong to actual one process.

Finally, if a thread want to communicate with another thread of the same process, they can simply use the shared memory. while if a process want to communicate with another process, it must call some operating system’s api, such as message queue, socket and so on.

Interface & abstarct method

a Interface has a collection of abstact method. Classes which implement it must provide its own implementation of each abstact method.

abstact method is a method declared in an abstract class or an interface, without an implementation. If a class doesn’t implement all abstract method it has to implement, it can only be an abstact class, and can never have an instance.

SQL join

  • Inner join: An inner join means only the rows from both tables that match on the specified join condition, can be connected. Only the rows in left table and right table both match the condition, can they be connected and generate a result raw.
  • Left join: A left join means that all the rows from the left table and the rows from the right table which match the join condition can be connected and generate a result raw. For one left table raw, if there is no matching right table raw, the result’s column which is from the right table will be null.
  • Right join is the opposite of the left join, A right join means all the rows from the right table and the matching rows from the left table based on the join condition, can be connected and generate a result raw. For right table raws which have no matching left table raw, the result raw’s column which is from the left table will be null.
  • Full join: A full join means all the rows from both tables can be connected. If there’s no matching raw, the result raw will have null values.

static method

a static method is a method that can be called on a class, doesn’t need a instance of a class.

Java sleep & wait

while a thread sleep, it pause its execution for a while and doesn’t release its lock.

when a thread call wait, it pause its execution, release its lock and wait for others to notify it. Therefore, a thread must acquire the lock before it calls wait method.

Exception & Error

Errors usually cannot be recovered from and should cause jvm to exit. For example, OutOfMemoryError occurs when their no space for jvm to place new objects.

Exceptions are usually be recoverable. when an exception occurs it means maybe some operation failed, but program can continue to execute. For example, FileNotFoundException occurs when operating system cannot find the file we are asking for, we can catch this exception, and do some work to recover our program from it.

Java vs C++

I want to talk about this question in 4 points.

  1. Java is platform independent, java code is compiled into bytecode that can be interpreted and run with a jvm on any platform. while c++ code needs to be compile for each specific platform. This makes cpp takes more time compiling the code but more efficient while running.
  2. In terms of memory management, Java heap memory is automatically managed by jvm through garbage collection. while in cpp, we must manually allocate and release the memory of the object which won’t be used any more.
  3. In java, we can never use pointer to directly access the memory addresses, while in c++, we can use point to access memory content with addresses. Although pointer make c++ more efficient, we must be very carefully while using pointers.
  4. In terms of Object-Oriented Programming, Java classes can only inherit from one super class, while cpp classes can inherit from multiple super classes.

when to use private constructer

If a class only have one private constructer, that means it can not be instantiated outside the class. There are 3 situations when we are supposed to use private constructer:

  1. the class is static factory method, with no need to be instantiated from outside.
  2. the class use singleton design pattern, which means it can have actual one instance throughout the program running process.
  3. the class is a utility class, with no need for others to have its instances.

pointer and reference

Because there is no concept of pointer in Java, so I will talk about this question with the background of Cpp.

In Cpp, a pointer is a variable that stores the memory address of another variable. We can use it to directly access the specific memory address to perform operations on it. And in Cpp, as programmers, we can change the value of a pointer as we like.

On the other hand, a reference is actually an alias for another variable. In Cpp, when we declare a reference, we must use another variable to initialize it. After initialization, we can’t change the object it points to in Cpp. So this means we can’t freely perform operations on memory using reference, it’s just a nickname of another variable. But it is quite useful when passing variables to functions. which can save memory and improve performance.

SQL injection

SQL injection is a kind of cyber attacks, whose target is the database of a web application. It occurs when a web application doesn’t validate the data from user input, and directly combine user input with SQL template. So if user input contains malicious code, it will also be executed by database, which may allow the hackers to access, change and delete data unexpectedly.

To protect our web application against SQL injection, we need to use some secure techniques such as parameterized queries. and we are supposed to validate the user input before querying the database.

commonly-used design patterns

  1. Factory Pattern. Factory Pattern is used to create objects for client, and the client doesn’t need to know how these objects will be created. To implement this pattern, first we need a factory interface. Then we create a class to implement this factory interface and override its method. The subclass decides how to create an object and return the object to the client. So factory pattern makes it easier to manage object creating process.
  2. Singleton Pattern Singleton
  3. Observer Pattern. Observer Pattern is used when we want a object to observe and react to change of another object. It is a very commonly used design pattern, because in event-driven system such as gui, observer pattern is almost everywhere. In this pattern, first we need to create a subject object, also known as Topic, which will be observed and will notify other objects when it has new changes. And we have Observer Object, which is watching the subject, and once the subject notify that it has changed, the observer object will try to get the latest state of the subject.

Besides these 3 design patterns I just mentioned, there are many other commonly used design patterns, such as command pattern, state pattern, decorator pattern ans so on. I think design patterns are just like our tool kit when we are working on designing the system.

deadlock

deadlock is a situation that can occur in a multi-thread scenario. it means two or more threads or processes are waiting each other to release the resources in need. because each threads are holding resources which the others need at the same time, they will stick on waiting for each other forever.

There are 4 conditions for deadlock to occur:

  1. Mutual Exclusion: it means at least one resource must be held in an exclusive mode. only one thread can access the resouce at the same time.
  2. Hold and wait, it means when a thread is waiting for other resources, it just hold the recources it have got and will never release them.
  3. No preemption: resources which are held by one thread, can never be taken away by another thread.
  4. Circular Wait: means there is a dependence chain that at least two threads are waiting for others to release their resources.

if all these four conditions are met, a deadlock can occur. Even if only one of these conditions is not met, a deadlock can never occur. Therefore, we can use some algorithms to break at least one of these 4 conditions to avoid deadlock. such as bankers’ algorithm.

linked list and array

Array uses contiguous memory space to store the elements of specific type one by one. We can access the element in the array in constant time by index, which is called random access.

On the other hand, linked list doesn’t support random access. In linked list, every element is stored in a node. Besides the element stored in it, a node usually have a pointer, which points to the next linked list node. So every time we want to insert an element, we just need to create a new node and link it to the linked list, If we want to delete a element, change the next pointer of the previous node. These two operations can be completed in constant time. But if we want to access a specific element, we have to traverse the linked list, which takes much more time than array.

Pass by reference and pass by value

pass by reference and pass by value are two ways to pass arguments to a function.

In pass by value, a copy of the arguments is passed to the function. If we change the value inside the function, it won’t influce the value outside. However, in passed by reference, only the reference of the argument is copied and passed to the function. In this way, if we changed the value behind the reference, the outside can also see the changes, which is called the side effect of an function.

Memory leakage

Memory leakage means that a program fails to release memory that is no longer needed, and it cause the system run out of memory eventually.

In Cpp, When we dynamically allocated memory or create new object, but forget to release it when it is no longer needed, the memory becomes unused memory and can no longer be accessed.

In Java, although jvm automatically collect unused object and release the memory space for us, it is also possible for memory leakage to occur. For example, when we use ThreadLocal in Java, we must remember to remove the value in it, otherwise it can lead to memory leakage.

priority queue vs heap

In my opinion, priority queue is just like a interface. It defines at least two method, the first one is push method, which allows us insert new element into the queue. and the second method is pop method, which will always pop and return the maximum or minimum element in the queue.

On the other hand, queue is a concrete implementation of priority queue, which can push and pop with high performance. It usually use array as underline data structure, and it’s able to keep the first element maximum or minimum. However, priority queue don’t must be implemented by heap, it has many other implementations, such as sorted arrays, balanced trees and so on.

binary search tree

a binary search tree is a special binary tree. In a binary tree, each node has at most 2 child nodes. and in binary search tree, each node must be greater than all nodes in its left subtree, and must be less than all nodes in its right subtree.

Using binary search tree, we can search for and access a node very efficiently, with a time complexity of O(log n) on average. the complexity to insert and delete a element is also O(log n)

cluster indexes and non cluster indexes

clustered indexes, as known as primary key indexes, determines the physical order of the data in a database table, based on the primary key of the table. Each table has actual one clustered index. Clustered index stores all information of each row.

On the other hand, non clustered index, as known as secondary index, only stores values of specific index columns for each row, and the corresponding primary key. while using non clustered index, firstly we find the primary key of the target raw, then we use clustered index to retrieve all data of the target raw.

deep copy and shallow copy

Deep copy and shallow copy are two ways to get a copy of an object in Object-Oriented programming.

Shallow copy creates a new object, but for its member variables, it only copies the object’s reference. That means if we perform operations to the member variables of that new object, the changes will also affect the original object.

On the other hand, deep copy creates a copy of an object and copy all of the objects’ member variables recursively. so the new object is totally independent to the original object, which means that any changes on the new object will never affect the original object.

In summary, shallow copy only copy the references for member variables, while deep copy actually copy the member variables.

primary key and foreign key

Primary key and foreign key are concepts in relational databases. a primary key is a unique identifier for a raw, and is used in clutered index to determine the phisical order of the data.

On the other hand, a foreign key is a column in a tabe that refers to another talbe’s primary key. It is used to establish a link between two tables, it is just a constraint. Any value of a foreign key must match to a unique value of a primary key in another table.

synchronous vs asynchronous

synchronous and asynchronous are two ways to call functions or communicate with other components of a system.

Synchronous means that the sender or function caller will wait for the receiver until the receiver complete its operations and return the result.

Asynchronous means that the sender won’t wait for the receiver, it just call the functions and then go ahead to do other things. In Aysnchronous functions or aysnchronous communication, the sender usually pass a call-back functions to the receiver, which will be called when the receiver complete its operations, and notify the sender that the result is ready.

transaction ACID

ACID stands for Ato’micity, Consistency, Isolation and Durability.

  1. Atomicity means that a transaction is treated as a single unit of work, either success entirely or fail entirely. In other words, if any operation of the transaction fails, the entire transaction will be rolled back.
  2. Consistency means that the database should remains in a consistent state before a transaction and after a transaction. This property is guaranteed by the other 3 properties.
  3. Isolation means that when multiple transactions are executed at the same time, they don’t affect each other. Each transaction is executed just like it is the only transaction running on the database.
  4. Durability means that once a transaction has benn committed, the changes it made will be permanently saved to the database and can never be lost.

In summary, these 4 properties provide a strong guarantee of reliability for database transactions.

authorization vs authentication

Authorization and authentication are two different concepts in the field of security.

Authentication is the process of verifying the identity of a user or system. It involves confirming that the user or system is who they claim to be. This is typically done by requiring the user to provide some credentials, such as a username and password, or through the use of biometrics such as fingerprints or facial recognition.

Authorization, on the other hand, is the process of granting or denying access to a resource or system based on the authenticated user’s privileges or permissions. Authorization is typically done by enforcing rules or policies that dictate what actions a user is allowed to take or what information they are allowed to access.

In summary, authentication verifies who you are, while authorization determines what you are allowed to do or access.

其他

不懂的回答

没听懂:Excuse me, may you repeat the question again? I didn’t hear it clearly.

不会,给提示:Sorry, I’m not sure about the xxx answer. Could you gave some hint?

不会:Sorry, I don’t know the answer of this question, but I will try my best to look into it further after this interview.

懂的回答

Okay, I will answer this question in 3 points.

chatgpt prompt

I will participate in a IT technology interview soon, please help me answer the following questions below, briefly and easy to speak(my spoken English is poor)