tell me one of your favorite project-练习英语
原则:引导面试官,不要提很多自己不清楚的东西
【DFS模板】
【BFS】
q.offer(root)在最上端,q创建后紧随其后
扩展时用的是q.poll()中的head
【segment tree】
【lambda】
Lambda 表达式可以使代码变的更加简洁紧凑。
语法
lambda 表达式的语法格式如下:
(parameters) -> expression
或
(parameters) ->{ statements; }
Arrays.sort(players, (String s1, String s2) -> (s1.compareTo(s2)));
【设计模式】
Factory
singleton
【recursive bs】
// Java implementation of recursive Binary Search
class BinarySearch
{
// Returns index of x if it is present in arr[l..
// r], else return -1
int binarySearch(int arr[], int l, int r, int x)
{
if (r>=l)
{
int mid = l + (r - l)/2;
// If the element is present at the
// middle itself
if (arr[mid] == x)
return mid;
// If element is smaller than mid, then
// it can only be present in left subarray
if (arr[mid] > x)
return binarySearch(arr, l, mid-1, x);
// Else the element can only be present
// in right subarray
return binarySearch(arr, mid+1, r, x);
}
// We reach here when element is not present
// in array
return -1;
}
【index用于加速查询】
CREATE INDEX index_name
on table_name (column1, column2);
【inheritance继承 就是extens子类】
// derived class
class MountainBike extends Bicycle
{
// the MountainBike subclass adds one more field
public int seatHeight;
// the MountainBike subclass has one constructor
public MountainBike(int gear,int speed,
int startHeight)
{
// invoking base-class(Bicycle) constructor
super(gear, speed);
seatHeight = startHeight;
}
// the MountainBike subclass adds one more method
public void setHeight(int newValue)
{
seatHeight = newValue;
}
// overriding toString() method
// of Bicycle to print more info
@Override
public String toString()
{
return (super.toString()+
"\nseat height is "+seatHeight);
}
}
【封装的好处】
使用封装有三大好处:隐藏控制修改的影响。
1、良好的封装能够减少耦合、影响。
2、类内部的结构可以自由修改。
3、可以对成员进行更精确的控制。
4、隐藏信息,实现细节。
public class Husband {
/*
* 对属性的封装
* 一个人的姓名、性别、年龄、妻子都是这个人的私有属性
*/
private String name ;
private String sex ;
private int age ;
private Wife wife;
/*
* setter()、getter()是该对象对外开发的接口
*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void setWife(Wife wife) {
this.wife = wife;
}
}
【Java关键字 - 类与类之间使用】
【public】不管在哪个包,随意调用
【private】仅仅在本类下面调用,就算该类被别的类继承extends了,也无法使用private权限的变量和函数
【protected】主要跟继承有关系。
【java和c的区别,string和stringbuilder的区别,java和python的区别】
过程&对象,是否跨平台
String 字符串常量
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)
Dynamic vs Static Typing 动态类型 vs. 静态类型. not as strong virtual machine.
【angularjs的dependency】
pass dependency to an object when it is called
avoid【ajax】
asynchronous Web applications.
avoid【 jQuery】
JS famework
【MySQL vs mongodb】
dynamic/ data type/ programming动态编程的数据类型
【OOP】
对象的“抽象”、“封装”、“继承”、“多态”
【多线程,死锁,memory】
【什么时候用interface,abstract class,polymorphism,encapsulation(data-hiding)】
interface: use implement, has abstact method, can be many
abstract class:general variables , has abstact method,have construcror, only one
【按照他给的要求,设计一个employee的class。封装一些信息什么的】
要有返回对象的constructor
public
class
Employee
{
// create data fields
private
String firstName;
private
String lastName;
private
String phoneNumber;
private
String address;
private
int
id;
private
String title;
private
double
Salary;
// Construct a default Employee object
public
Employee()
{
}
// Construct a second constructor
public
Employee (String newFirstName, String newLastName)
{
firstName = newFirstName;
lastName = newLastName;
}
//This method returns a String with the contents of
//the variable firstName to whatever object calls it
public
String getFirstName()
{
return
firstName;
}
//This method allows the contents of firstName
//to be changed to store a different String value, should that be required
public
void
setFirstName (String newFirstName)
{
firstName = newFirstName;
}
}
【project里怎么用到JUnit的】
【web实现问了http怎么通信】
capacity:Short polling>long polling>long connection SSE>WebSocket;
perf: opposite
【full-stack的project问web相关的问题,request, response包含什么,Restful API是啥等等】
URL定位资源,用HTTP动词(GET,POST,PUT,DELETE)描述操作。
GET:http://www.xxx.com/source/id 获取指定ID的某一类资源。例如GET:http://www.xxx.com/friends/123表示获取ID为123的会员的好友列表。如果不加id就表示获取所有会员的好友列表。
POST:http://www.xxx.com/friends/123表示为指定ID为123的会员新增好友。其他的操作类似就不举例了。
---------------------
作者:hjc1984117
来源:CSDN
原文:https://blog.csdn.net/hjc1984117/article/details/77334616
版权声明:本文为博主原创文章,转载请附上博文链接!
【sql 的安全相关的东西】
SQL注入可以分为平台层注入和代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。
【设计数据库:想要在你的系统里查询自己股票情况】
UX - LOGIN- ACCOUNT& TRANSACTION INTERFACE
DB:
ACCOUNT: ID OWNER HISTORY INFO要有一个存历史信息的账户
ADMIN: NAME/EMAIL/PHONE/PASSWORD...
USER: NAME/EMAIL/PHONE/PASSWORD...
TRANSACTION: BUY/SELL/CANCELL 要写交易哦
核心功能:注册登陆,
QPS:
⚓️困难:
⚓️用了什么:
⚓️效果:
⚓️收获什么:
📟 📟
⚓️是什么:
核心功能:
TEMPLATE:
1. Clarify the problem: constraint, scale, use cases (corner cases) => number of users, frequency of user actions: userbase, QPS, read/write ratio, how large the size of data is, etc.
2. Extract use cases: a. input something to process b. provide certain services
3. Abstract design:
- Diagram of components of your designed system and its connections
- Justify your design with use cases, constraints and corner cases
- A typical component design
Web gateway (load balancer)
Application service layer
Data cache (reddis, memcached: cache_key, LRU, etc)
Data storage (DB: single DB, master-slave, sharding)
Message Queue + notification center
Logs + storage + analytics
Search
4. Evaluation: performance, reliability(robustness), scalability
- Bottlenecks -> database: cache + master-slave + sharding
- monolithic => modular => multiple process + RPC => service oriented
- Perf tuning: cache, async process (message queue)
- etc
5. Trade offs: able to talk about these trade-offs, and to measure their impact on the system given the constraints and use cases defined.
-----------------------------------------------
📟RESTFUL api📟
⚓️是什么:应用程序之间传递信息的api
微博的:登录、收藏等
理念:用URL定位资源,用HTTP描述操作。和网络请求有关
python的简单flask框架:做网页 发请求的
📟redux📟
⚓️是什么:前端数据交换
核心功能:注册登陆
📟redis📟
⚓️是什么:能缓存的数据库
核心功能:读写快、数据类型多、原子性(是否执行很分明)可用于缓存,消息,按key设置过期时间,过期后将会自动删除
📟Ruby on Rails📟
⚓️是什么 :使用Ruby 语言编写的Web 应用开发框架
📟Spring boot📟
⚓️是什么 :后端框架
ioc依赖反转:应用程序等待容器的注入
📟Spring 📟
⚓️是什么 :后端框架
mvc:是种理念。重要的东西放在模型里
Spring从两个角度来实现自动化装配:
- 组件扫描:Spring会自动发现应用上下文中所创建的bean。(组合对象)
- 自动装配:Spring自动满足bean之间的依赖。
依赖注入:依赖Spring来控制一切,用bean实现自动装配Spring框架,使得mvc不用配置xml或者Java了:http://irmlab.ruc.edu.cn/2016/12/07/spring-java-config.html
📟Spring shiro📟
⚓️是什么 :权限管理专用框架
功能:认证、授权、加密、会话、缓存等。
📟消息中间件 📟
⚓️是什么 :备胎数据库消息
使用场景(日志处理,异步 ,系统解耦:分布式,流量削锋:秒杀 抢红包)
📟mybatis 📟
⚓️是什么 :把数据转成对象的框架
使用场景:mapper对应,多对多查询
- 用Java 编写了一个权限管理系统,用rabbit mq 做消息中间件实现并行的注册功能,mysql作为数据库。build A rights management system was written in Java. The message m middleware was used to implement the parallel registration function. mysql was used as a database.
- 根据用户行为建立模型,基于RBAC模型(用角色来进行权限管理)模型创建了:部门、用户、角色、权限的表格。redesign According to the user behavior model, based on the RBAC model (permission to use the role to manage) model created: department, user, role, permission forms.
- 搭建apache shiro、spring security管理权限框架来进行加密 认证 权限 会话管理 Build apache shiro, spring security management authority framework for encryption authentication permissions session management
- spring boot 搭建mybatis,省略了jdbc代码,实现用户、角色、权限之间多对多的查询Spring boot builds mybatis, omits the jdbc code, and implements many-to-many queries between users, roles, and permissions
- 利用redis来缓存用户和角色的权限,实现数据持久化,避免重复查询Use redis to cache user and role permissions, to achieve data persistence and avoid duplicate queries
----------------------------------------------
📟NodeJS📟
⚓️是什么:后台框架
核心功能:事件驱动,调度为主。没有web容器的概念:没有根目录。
📟RESTful API IN NODEjs📟
⚓️是什么:NodeJS中,自己按照REST原则写的API。先定位(URL)再操作(HTTP)
核心功能:
如添加用户、删除用户、显示用户详情
基于nodejs开发restful api,实现了如添加用户、删除用户、显示用户详情。
📟express框架📟
⚓️是什么:NodeJS的框架
核心功能:
定义了路由表用于执行不同的 HTTP 请求动作,包括get(接收注册信息) post请求(展示聊天信息)。
通过向模板传递参数来动态渲染 HTML 页面。
在express框架中定义了路由表用于全面直接地执行不同的 HTTP 请求动作,减少了70%的代码量。路由代码清晰,不用很多正则表达式。包括get(接收注册信息) post请求(展示聊天信息)。不用再写if语句。可以集中精力写业务。
📟dao📟
⚓️是什么:
所有对象的数据操作都放在一起了,增删改查都用一个dao来做。
核心功能:
班级说说
用mongoose数据库存储每个用户的基本信息,随即地实现数据持久化。在留言板功能中,通过DAO减少了数据增删改查时对数据库的直接访问。
📟mongoose📟
⚓️是什么:
新建对象的同时在数据库里新建,实现持久化。
核心功能:
用户信息 班级姓名年龄那些,每个用户有一个表。
📟websocket📟
⚓️是什么:
服务器推送消息。
核心功能:
调用Socket.IO库,(用bash脚本读取客户端输入),通过websocket协议发送对话信息。避免长连接、长轮询请求造成的性能浪费。
[nodejs开发的班级说说系统]
- 基于nodejs开发restful api,实现了如添加用户、删除用户、显示用户详情等功能。
- 在express框架中定义了路由表用于全面直接地执行不同的 HTTP 请求动作,减少了70%的代码量。
- 用mongoose数据库存储每个用户的基本信息,随即地实现数据持久化。在留言板功能中,通过DAO减少了数据增删改查时对数据库的直接访问。
- 调用Socket.IO库,(用bash脚本读取客户端输入),通过websocket协议发送对话信息,提高了通讯的性能和效率。
[Campus Message Board System]
Designed RESTful API based on Node.js, which lanches functions such as adding users, deleting users, and displaying user details.
Defined routing table in the Express framework for the full and direct execution of different HTTP request actions, decreasing the amount of code by 70%.
Stored basic information of each user into the Mongoose database for data persistence. Divised DAO to lessen direct access to the database in the leaving message function.
Utilized the Socket.IO to send the dialog information, boosting the performance and efficiency of the communication.
-----------------------------------------------
📟 flask扩展📟
⚓️是什么:连接新的库
核心功能:开发新的功能
📟微内核 📟
⚓️是什么:核心操作系统,是一种原理
核心功能:flask是基于微内核的框架
📟orm 📟
⚓️是什么:把对象映射到数据库中 mapping关系
核心功能:
📟blueprint蓝图 📟
⚓️是什么:管理面板
核心功能:
📟vue前端+flask后端的好处 📟
⚓️是什么:
核心功能:前端更新后不用手工复制。每次前端修改了html/js,一般先要用webpack编译,再手工复制编译后文件到Flask的工作目录,后端框架才能使用更新后html/js。
📟 soa📟
⚓️是什么:面向服务的架构,将功能单元通过服务连接起来。如采蘑菇系统、订单系统都和soa中心连接。
核心功能:
📟 rpc📟
⚓️是什么:
远程调用通信协议,一台计算机调用另一台。
核心功能:
📟nginx📟
⚓️是什么:服务器
核心功能:作反向代理,负载平衡器 和 HTTP缓存。
反向代理:不是客户-服务器-internet。而是internet-服务器-客户。通过调参数来限制客户访问。
开放式身份验证:没有身份验证
[Membership-based movie broadcast website]
- Integrated new features into the Microkernel-based flask framework, such as ORM, file uploading, and open authentication.
- Planned the project's structure with Blueprints. Defined the database model related to the business requirements via sqlalchemy, and generated data table by MySQL database.
- Built front-end pages for registration, login, and search with Vue.js. Saving development time via real-time synchronization of the shared code between the front and back end.
- Organized website's back end structure according to SOA architecture. The backend aligns WTforms validation, customized application context, custom permission decorator to achieve role-based access control for the system.
- Introduced Nginx environment on CentOS. Developed reverse proxy to deploy website in multiple ports and processes, hence limiting download rate to video streaming and the number of play connections that can be initiated by a single IP.
-----------------------------------------------
📟 Reactive programming响应式编程📟
⚓️是什么:面向数据流编程、动态编程
核心功能:
📟Retrofit 📟
⚓️是什么:安卓的网络请求库
核心功能:
📟RXJava📟
⚓️是什么:异步操作库
核心功能:
📟viewcontroller 📟
⚓️是什么: 借鉴ios,自己写的组件化、模块化的开发工具
核心功能:是一种界面开发组件化实现方式,利用它可以将一些复杂的 UI 界面开发组件化
📟webview 📟
⚓️是什么: 在安卓里显示内置网页
核心功能:setting类做配置、client类通知
📟 代码集成📟
⚓️是什么:把代码交上去
核心功能:
[Android online store]
The Android campus store app makes it easy for shop assistants to deliver goods. At present, the DAU is more than 1,000.
Integrated of the Retrofit library with the RxJava library to do responsive programming for network requests.
The self-designed ViewController is used for modular development, which is responsible for the optimization of the homepage's layout architecture and the improvement of the homepage's style.
Created a hybrid App framework based on WebView, processing native requests and cookies from browsers.
Configuring Jenknis for continuous code integration, automatic packaging and quality inspection.
Languages: Java, Java Script, C, Python, R, Go, Shell Script, Ruby, PHP.
Front-end: Angular.js, React, jQuery, Bootstrap, Socket io,AJAX, Webpack, XML.
Back-end; NodeJS, Express.js, Spring Boot, Spring MVC, Maven, Tomcat, REST, gRPC, Django, Nginx, RPC.
Database: MySQL, MongoDB, Cassandra, Redis, Oracle, Memcached, Sqlite, HBase, SQLite, Hive.
Tools: JUnit, Git, Docker, Linux/Unix, Mac, SVN, IntelliJ IDEA, Jenkins, Emacs, xcode, Android Studio.
BQ
完不成工作了:让您的主管尽快知道。准备告诉他或她你需要多长时间才能完成它。完成后,确定无法完成的原因并采取措施解决问题。