If the liquid is static, it’s quite easy to do but not so easy to explain.
Because the liquid contacts the glass inside surface, it’s just a matter of duplicating the inside part of the glass which gives us the liquid outside surface. Just have to fill the top.
making a loop cut (ctrl+r) where the liquid surface should be.
selecting an edge loop on top of that newly created loop cut and hiding it (H, alt+H to unhide). You can select an edge loop with alt(+shift)+RMB
now it’s easy to select the inside part (hover mouse cursor over and press L), duplicate it (shift+D), and
separate it as its own object with P -> separate selection. Switching to that new object, the top part has to be filled and easiest way of doing that is to select the edge loop that is the top edge, F to fill it with an ngon face, I to inset it.
Because your glass is tilted, it’s not over just yet.
The liquid outside surface has to follow the glass inside surface no matter what. There’s a modifier for that but not all vertices need to do that. To get the selection of vertices for it, a vertex group is needed
Doing the selection first: selecting everything at first (A), deselecting the edge loops inside (alt+shift+rmb) and deselecting with circle select (C, mmb)
Then in the object data properties (panel on the right) there’s a vertex group section. Add a new group and press ‘assign’ button