大公司更偏向算法和基础知识掌握,比如刷题更针对大公司。 算法和数据结构。 bar:focus 在解题能力,没有system-design要求对刚毕业的人。45分钟解答出一到两道1-2难度的题、有可能有hard。
大公司即便对计算机没有极大的要求也可以通过面试进去。
小公司要求项目能力,额外学一些java在工业界,安卓等上面的应用。
Sublime text, VS code build java。IDE有联想功能可能更方便
- Java 面对对象的编程语言,类似python
分为:object, method, class
import java.utils.*;
import java.io.*;
pubilc class Helloworld {
public main( String[] args ) {
System.out.print.....
}
}
- object
String s; s=new String(); 合并成一:String s=new String("Hello")
例子: String s2=s 指向同一个object
s2=new String(s); 这两个不一样的object,东西一样。
s2=s.toUppercase(); String s3= s2.concat("!!"); ===s3=s2+"!!" s3和s2不一样的object。s2创造了新的指针,没有改变原来的string。 但这个只是对string成立的,即要想改变string object,只需要create 一个新的 string就行,
- Class
class human{
pubilc int age;
pubilc void introduce() { print} 这是method
oublic void copy( Human ori){
age=orig.age}
}
Human amada= new Human();创造一个object
amanda.age=6; 赋值
amade.introduce() ;call method
Human mike= new Human() ; 新的object
mike.copy(amand); 这里mike的变量和amaenda一样
- constructors
可以自己定义,也有默认,因为上面就是没有外部赋值给一个内部元素,防止崩溃:
public human(int x, string name){
age=x; y=name }
但是注意:Human amada= new Human();这样会报错,和定义的constructor不一样
- this, 充当的指针
class human{
pubilc int age;
pubilc human(int givenage){ this.age=givenage, this.name='skkkk'} this是optional
pubilc void chaneg(int age,){
this.age=age}这里this不能省略因为要不然没用age=age
}
- static
可以在不同的objects里面share同样的值
eg. class human{
pubilc static num;
public human(){
num++}这样可以用的统计object数量,因为每个object都有同样的值
pubilc static void printhume(){
num} static method不能pass object,因为这可能导致不同的object的static变量然后出错
}
- variable的lifetime
local: method里面就是method运行完就消失。
instance :非静态:就是只要amanda这个object还在,他就在
static:只要program在运行就一直在,所以不同的object可以share
- primitive type variable
不是reference to object,例如 int, long, float, 怎么创建: “6”,“3.4”, “true”
object create: new
object define: class definition
initialize: constructor
use: method
例如 string 是一个object,可以 String name="hello"; name ="world"指向了另一个object。
这是java 内置的, 一般string不用写 String name= new String{"hellp"}
- java library
Math class.
Integer class.//convert a string to an integer. 注意 Integer.conv("3.14")会报错
- boolean
&&, ! , 等等操作
x= 3==5 可以直接判断赋值
boolean pass =score <60
if (pass){} else{}
也可以if (score >=60){}更简洁
简介的表达形式:a= x>y ? max(x,z) : max(y,z)
- Switch-case
switch (month){
case 2:
a=2; break;
case 4:
case 6:
default: days=2; break;
}
- do loop
do {} while()起码会run一次,while有可能一次不run
- for
for (initialize; condition; next) {},next 可以省略
- array
fixed number , z在create的时候就确定了
char[] c; // reference to an array
c=new char[4]; //construct and array
c[1]='b';//赋值
小窍门: 判断n的平方根和d比较: d*d <=n因为开平方比较耗资源
- multi-dimensional array
two dimensional array is an array of references to arrays. 第一层里面存的是内部array的指针
int[][] pt= new [n][] 这样的话内部矩阵可以不同长度 例如帕斯卡三角, 当然内部长度也可以直接定义
for (int i=0; i<n; i++){
pt[i]=new int[i+1] // 内部
}
更多array declarations:
human[] b={a, mike, new human("me")}
int[][] c= {{7,4,3},{3,3,x},{x+y}}
d= new int[] {3,7}
下面这些都是declaration:没有construct
int[] a,c,b ;/// a,b,c all reference array,不是object
int a[], b,c[][] /// a is 1D,b is not a reference/array
int[] a,b[]/// a is a reference to a 1 D array, b reference a 2D array 很逆天